git提交冲突问题
远程仓库和本地仓库同时有修改时,此时git push
会产生冲突。例如下图
执行git push origin master
后显示冲突。这个错误是因为远程仓库包含了本地仓库没有的提交,通常是由于其他人在同一个分支上推送了代码导致的。
此时执行
git pull origin master --rebase
git pull origin master --rebase
的作用是将远程主分支
master
上的提交拉取到本地,并且使用 rebase
的方式将本地分支的提交和远程分支的提交合并成一条线性提交。具体来说,它的执行过程包括:
- 从远程仓库
origin
中拉取master
分支的最新代码(也就是git fetch origin master
); - 将本地分支
master
的提交基点移动到远程master
分支的最新提交(也就是git rebase origin/master
); - 将本地未推送的提交应用于移动后的基点上,合并成一条线性提交(也就是
git cherry-pick
或者git rebase --continue
); - 最后将本地分支
master
推送到远程仓库中。
使用 --rebase
参数的目的是为了避免在本地分支和远程分支合并时产生额外的合并提交,保持提交历史的整洁和简单。
接着会报错,但是给了提示显示test
发生冲突,解决的办法是手动解决冲突,并将其标记为已解决
具体来说
git add ./test
git rebase --continue
使用 git add
命令将已经解决冲突的文件标记为已解决,再执行
git rebase --continue
命令继续 rebase 过程,直到 rebase
完成。git rebase --skip
命令可以用于跳过发生冲突的
commit,git rebase --abort
命令可以用于终止 rebase
过程并回到 rebase 前的状态。
此时再提交没有报错。