我的意见是确保你已经在当前的 master 上提交了所有内容,然后从那里创建一个新的分支。之后将本地主机硬重置为远程主机。然后要么变基要么选择这些更改。类似于以下内容:
git branch tmp-master
git fetch origin
git reset --hard origin/master
现在您可以使用以下内容轻松可视化两个分支之间的差异:
git log --decorate=short --oneline --graph --all
挑选其他提交并随时修复冲突可能是最简单的,但您也可以尝试变基。如果您需要更具体的步骤,请告诉我,我会写下来。
更新:
既然你在这里,你可以尝试(从master
):
git merge tmp-master
但是为了更清晰的提交历史,您可能需要尝试以下操作:
git checkout tmp-master
git rebase master
git checkout master
git merge --ff tmp-master
git branch -d tmp-master
git push origin master
这将获取您的本地提交并在远程更改之上重新应用它们。由于您本质上是在做相同的工作,但是来自两台不同的机器,您可能不想要很多“好吧,再次切换机器”合并提交。
现在,可能存在一些可能的冲突。有几种方法可以解决这些问题。如果您有冲突并且知道您的本地更改优先,请执行以下操作(假设来自tmp-master
分支,并且在 rebase 中存在冲突):
git rebase --abort
git branch tmp-master-save
git rebase -X theirs master
然后检查一切是否正常,从上面的步骤继续git checkout master
。还记得删除另一个tmp-master-save
分支。创建它只是为了安全保存。当您对此不熟悉时,最好有一个安全机制。