见笔者另外一篇文章详细介绍:juejin.im/post/5c6b72…css
需求: 将dev分支的部分文件合并(merge)到master分支并推到远程java
原理: 先把master分支代码拷贝一份,成为一个新的临时分支master-temp,而后把dev分支上须要合并过来的那部分文件或文件夹替换到临时分支master-temp上,而后把临时分支master-temp合并到master分支,这时dev分支上要合并的部分文件或文件夹已经成功的合并到master分支上了,最后再删掉这个临时分支master-temp,就OK了。git
操做:bash
切换到master分支,并保持master分支最新ide
git checkout master
git pull
复制代码
基于master分支建立一个临时分支master-temp,并切换到该分支上post
git checkout -b master-temp
复制代码
用dev分支指定文件或文件夹替换master-temp分支上相应的文件学习
语法:
git checkout dev [目标文件夹或目标文件]
举例:
git checkout dev src/test/controller/
说明:执行完此命令,dev分支下的src/test/controller/文件夹就会替换master-temp分支下相应的文件夹
复制代码
将本次checkout内容提交到master-temp分支上fetch
git commit -m "提交信息到临时分支master-temp上"
复制代码
切换到master分支网站
git checkout master
复制代码
比较临时的master-temp分支与master分支的差别,是否就是想要合并的差别ui
git diff master-temp master
复制代码
合并master-temp分支到master分支
git merge master-temp
复制代码
将本地master分支推到远程master分支,并删除临时master-temp分支(本地的)
git push origin master
## 查看全部分支
git branch -a
## 删除本地临时分支master-temp
git branch -d master-temp
复制代码
说明:既支持对整个区域差别比较,也支持针对单个文件夹或文件的差别比较。
## 比较工做区和暂存区的差别
git diff
## 针对某个文件夹或文件,比较工做区和暂存区的差别
git diff [文件夹或文件]
例如:git diff controller/
## 比较工做区和当前分支最新commit之间的差别
git diff HEAD
## 针对某个文件夹或文件,比较工做区和当前分支最新commit之间的差别
git diff HEAD [文件夹或文件]
例如:
git diff HEAD controller/ControllerTest.java
## 比较暂存区和上一个commit之间的差别
git diff --cached
## 针对某个文件夹或文件,比较暂存区和上一个commit之间的差别
git diff --cached [文件夹或文件]
## 比较各个分支之间的差别
git diff [first-branch] [second-branch]...[last-branch]
## 针对某个文件夹或文件,比较各个分支之间的差别
git diff [first-branch] [second-branch]...[last-branch] [文件夹或文件]
复制代码
<1> 普通的删除本地和远端仓库文件或文件夹
<2> 删除远端仓库的文件或文件夹,同时保留本地工做区对应的文件或文件夹
删除命令为:
## 删除本地仓库的文件或文件夹
git rm test.txt(test.txt为删除的文件)
git rm -r test(test为删除的文件夹)
## 提交
git commit -m "remove test files"
## 推送到远端仓库
git push original master
说明:
git rm -r命令中-r表示递归全部子目录
复制代码
先来看一张git仓库结构图:
操做解释:中断Workspace(本地工做区)
与Stage或Index(暂存区)
的关联,即本地工做区中止追踪指定文件,该文件会保留在本地工做区,而后删除暂存区、本地仓库、远端仓库中对应的指定文件。
删除命令为:
## 本地工做区中止追踪指定文件或文件夹,即本地工做区的文件或文件夹会保留下来
git rm --cached test.txt(test.txt为删除的文件)
git rm --cached -r test(test为删除的文件夹)
## 提交
git commit -m "remove file from remote repository"
## 推送到远端仓库
git push original master
复制代码
## 删除本地分支
git branch -D [branch-name]
举例:
git branch -D dev-test-v190218-rangdandanfei
## 删除远程分支
<1> git push origin --delete [branch-name]
举例:
git push origin --delete dev-test-v190218-rangdandanfei
<2> git branch -dr [remote/branch]
举例:
git branch -dr origin/dev-git-use-v190219-rangdandanfei
(使用git branch -a命令看一下有没有删除掉)
复制代码
删除远程分支后,在本地使用 git branch -a
命令查看本地和远程全部分支时,远程仓库删除的分支依然能看到,以下图示:
有两种方法能够解决:
<1> 使用 git fetch -p
命令删除远程仓库不存在的分支
<2> 使用 git remote show origin
命令查看本地分支和远程分支对应关系,使用 git remote prune origin
命令删除远程仓库不存在的分支
廖雪峰Git教程:www.liaoxuefeng.com/wiki/001373…
git - 简易指南:www.bootcss.com/p/git-guide…