场景
远程有两个分支release和master,两个分支各有各的提交。直接merge,会有冲突。希望在本地处理冲突后,再merge。
本地有分支master。
解决
- git branch --track origin/release
- git checkout master
- git merge --no-ff release
然后就可以在本地解决冲突,提交了。
解释:
- git branch --track origin/release
在本地新建一个同名分支(release),自动跟踪远程的分支release - git merge --no-ff release
使用–no-ff参数后,会执行正常合并,在master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法
补充
查看本地分支和对应的远程分支?
git branch -vv
删除本地分支?
git branch -d release
同步本地分支和远程分支?
git pull 或 git fetch
git pull --all 或 git fetch --all // 同步所有分支
git pull 和 git fetch的区别?
git fetch 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。 而 git pull 则是将远程主机的最新内容拉下来后直接合并,即: git pull = git fetch + git merge ,这样可能会产生冲突,需要手动解决。
优雅的撤销某次提交【中间的某次也可以】
git revert