git提交冲突问题


git提交冲突问题

远程仓库和本地仓库同时有修改时,此时git push会产生冲突。例如下图

执行git push origin master后显示冲突。这个错误是因为远程仓库包含了本地仓库没有的提交,通常是由于其他人在同一个分支上推送了代码导致的。

此时执行

git pull origin master --rebase

git pull origin master --rebase 的作用是将远程主分支 master 上的提交拉取到本地,并且使用 rebase 的方式将本地分支的提交和远程分支的提交合并成一条线性提交。具体来说,它的执行过程包括:

  1. 从远程仓库 origin 中拉取 master 分支的最新代码(也就是 git fetch origin master);
  2. 将本地分支 master 的提交基点移动到远程 master 分支的最新提交(也就是 git rebase origin/master);
  3. 将本地未推送的提交应用于移动后的基点上,合并成一条线性提交(也就是 git cherry-pick 或者 git rebase --continue);
  4. 最后将本地分支 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 前的状态。

此时再提交没有报错。


Author: Paranoid
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Paranoid !
评论
  TOC