我在 stackoverflow 上查看了许多非常相似的问题的答案,但似乎没有什么可以解决问题。我做了很多更改并拥有大量的提交历史记录,目前我对此还算满意。一旦一切正常,我就发出了拉取请求,并且拉取请求已与我分叉的存储库合并。但我的分叉仍然比原始存储库提前了 X 次提交,而且我似乎无法重置此提交计数器。我尝试过变基、重置以及似乎我能找到的所有其他方法。但我仍然看到这个:
我怎样才能让一切恢复一致?到目前为止,我只在我自己的项目中使用过 git,而且 git 的一些设计让我感到困惑。
平衡分叉主控和上游主控的替代解决方案。
git checkout master // --> will move to origin master
git fetch upstream // --> pulls all branches from mainline/remote master
git reset --hard upstream/master // ==> reset your origin local code with latest remote master
git push --force // ==> update with remote with your local updates
Run Code Online (Sandbox Code Playgroud)
PR AreaFiftyLAN/toornament-client#13已合并,但不是经典合并,而是提交0d1b439中的压缩合并以及我在您的历史记录中没有看到的提交。
通过使用压缩合并,您的分叉分支的合并的上游历史记录中不会有任何记录。这样,您的分叉就无法快进到上游的分支...
唯一的方法是在您的分叉分支被认为合并后将其删除。
要强制您的分叉master分支位于上游分支的同一点master:
git fetch --all
git push --force upstream/master:master
Run Code Online (Sandbox Code Playgroud)
一旦你这样做了,它可能会抱怨你的本地主分支领先/落后。如果您执行了一项操作git pull [--rebase],您只需将本地历史记录与上游历史记录合并/重新建立基础,并且您仍然会保持领先。因此,您可以将本地master分支移动到分支的master分支:
git stash # in case of local modifications
git reset --hard origin/master
git stash pop
Run Code Online (Sandbox Code Playgroud)
这样您就应该与上游和分支存储库恢复同步。
您还应该考虑清理遥控器,只保留这两个(源和上游),因为我猜其他遥控器只是它们的本地副本。
您可以使用以下方法检查遥控器的 URL git remote --verbose:只需为每个不同的 URL 保留一个。
| 归档时间: |
|
| 查看次数: |
3037 次 |
| 最近记录: |