记录一次 git 解决冲突的过程。
情况是前一段时间我基于本地的 master 分支上新建了一个分支比如叫做 weight_linear:
git checkout -b weight_linear
然后我已经在这个分支上进行了修改并上传到 github 上了,比如:
git add .
git commit -m "upload"
git push origin weight_linear:weight_linear
当然,这个 PR 现在还没有合并。然后今天我在这个 PR 的基础上提交新的 commit 的时候,github 提示有冲突:
于是就需要我们手动解决了。
解决方法
首先,确保你已经切换回 master
分支,然后执行 git pull origin master
命令拉取远程 master
分支上的最新代码。
git checkout master
git pull origin master
这里感觉可以把 git pull 换成 git pull --rebase
接下来,切换回 weight_linear
分支,然后执行 git rebase master
命令,这将将 weight_linear
分支的修改在 master
分支的最新提交之前重新应用一遍。
在执行 git rebase
命令时,如果出现冲突,Git 会将冲突标记在相应的文件中。你需要手动解决这些冲突。打开有冲突的文件,你会看到冲突标记,如 <<<<<<<
, =======
, >>>>>>>
。在文件中手动解决冲突,保留需要的更改,删除不需要的更改和冲突标记。这个步骤就自己在 IDE 里手动修改冲突的文件就好了。
解决完冲突后,执行 git add
命令将修改的文件标记为已解决冲突。然后,通过 git rebase --continue
命令继续重新应用提交,直到没有冲突为止。
git add <resolved-file>
git rebase --continue
最后修改完解决完冲突之后,再次 git commit,然后 git push -f origin weight_linear,因为我们 rebase 过,所以这里需要加上 -f 强制推送一下。