在使用git给别的分支提merge时,有可能会发生冲突。这时候怎么做?
第一种方法: git pull
比如我们想提merge给master分支。
在本地打开git bash ,使用命令git pull origin master,
此时pull命令会失败,会提示某些文件有冲突,当前git的状态也会显示成MERGING。
然后我们执行git status的命令,查看新合的master分支有哪些改动,已经你的分支与其冲突的地方。
修改冲突,
然后git add ,git commit , git push。就可以了。
第二种方法git rebase
第一种方法有一个不好的地方在于,git push后,使用
git log --graph --pretty=oneline --abbrev-commit
查看会发现你的git commit 历史已经被打乱了。
如下:
$ git log --graph --pretty=oneline --abbrev-commit
* d1be385 (HEAD -> master, origin/master) init hello
* e5e69f1 Merge branch 'dev'
|\
| * 57c53ab (origin/dev, dev) fix env conflict
| |\
| | * 7a5e5dd add env
| * | 7bd91f1 add new env
| |/
* | 12a631b merged bug fix 101
|\ \
| * | 4c805e2 fix bug 101
|/ /
* | e1e9c68 merge with no-ff
|\ \
| |/
| * f52c633 add merge
|/
* cf810e4 conflict fixed
如何避免这种结果呢?
就是Git rebase .
方法:
假如需要解决当前分支与master分支的冲突。
1)git rebase master
2) 如果有冲突,rebase会中断,显示如图所示信息。
3、使用git status查看状态。显示为REBASE的状态。
4、解决冲突后执行:
git add filename
git rebase continue
5、如果还有冲突,需要继续解决冲突。
6、rebase结束后,执行git push。再合并就没有问题了。而且git log显示 commit没有打乱。