当有冲突时,可以手动解决冲突,但如果直接使用某一方的改变替换,则当:
git merge 冲突:
resolve conflict use head: 用自己的替换掉远端
resolve conflict use merge_head: 用远端替换掉自己的
git rebase 冲突:
resolve conflict use head: 用远端的替换掉当前分支
resolve conflict use changes to be insteadgrated:用自己的替换掉远端
1. git rebase 和 git merge 的使用
git rebase建议用于分支合并主分支,而git merge不但可以用于前者还可用于主分支合并分支。
先说git rebase:
假如当前主分支是master,其它分支是dev。
git rebase时可能进行多次冲突的解决,这取决于当前分支有多少次commit,以及解决一次冲突后跟后面的commit是否会再次冲突,举例如下:
a. 在master分支和dev分支有文件test.txt,开始时txt文件的内容都是789
b. 在master分支将test.txt内容改为489然后commit并切换到dev分支,对dev分支的txt文件做两次修改并commit,两次修改的内容分别为289和389
E:\whb\study\gittest\test>git commit -am "master modify to 4"
[master 3370a66] master modify to 4
1 file changed, 1 insertion(+), 1 deletion(-)
E:\whb\study\gittest\test>git branch
dev
* master
E:\whb\study\gittest\test>git checkout dev
Switched to branch 'dev'
E:\whb\study\gittest\test>git commit -am "dev modify to 2"
[dev fc845c8] dev modify to 2
1 file changed, 1 insertion(+), 2 deletions(-)
E:\whb\study\gittest\test>git commit -am "dev modify to 3"
[dev 9fa548f] dev modify to 3
1 file changed, 1 insertion(+), 1 deletion(-)
c . 接着,我们开始rebase,命令如下
E:\whb\study\gittest\test>git rebase master
First, rewinding head to replay your work on top of it...
Applying: dev modify to 2
error: Failed to merge in the changes.
Using index info to reconstruct a base tree...
M test.tx