合并拉取请求后,仍然比上游版本领先X次提交

5
我在stackoverflow上查看了很多类似的问题答案,但似乎没有解决我的问题。我做了很多更改,并有一个庞大的提交历史记录,目前我还可以接受。一切都正常工作后,我发起了一个pull request,并将其合并到了我从中fork的仓库中。但是我的fork仍然比原始仓库多了X个提交,我无法重置这个提交计数器。我尝试过rebase、reset和其他所有我能找到的方法,但仍然看到这个:here。如何使一切恢复正常?到目前为止,我只在自己的项目中使用过git,git的某些设计让我感到困惑。

嗨,zigarn,我看了那个链接,我从没有为编辑创建一个与主分支不同的单独分支,我以为我可以从同一个分支发起pull请求。但是,pull请求成功了,我不明白为什么github没有更新我的fork状态使其与原来的存储库保持一致。当我运行git status时,似乎所有东西都很好,但是github认为不同。http://i.imgur.com/eOYxmJj.png - Brenton Poke
请提供 git fetch --allgit branch -vvgit log --graph --oneline --decorate master origin/master upstream/master 的结果。 - zigarn
这是结果。http://i.imgur.com/gea9U3B.png - Brenton Poke
这应该是哪个拉取请求?11、12还是13?从我所看到的情况来看,你的分支在上游/主分支中没有合并。 - zigarn
我猜是13。那个分支我不再进行更改,因为这被证明很复杂。我一直在从新的分支进行提交,并让主分支保持不变。我只想让主分支重新同步。 - Brenton Poke
3个回答

9
一种将本地分支master和远程分支upstream master同步的备选方案。
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 

1
这个解决方案相比其他方案更容易实现。 - Krishna Oza

2
PR AreaFiftyLAN/toornament-client#13已合并,但是采用了压缩合并而不是传统的合并方式,在提交0d1b439中进行了压缩合并,并且我没有在您的历史记录中看到这些提交。
通过使用压缩合并,从您的分支合并到上游分支的历史记录中不会留下任何痕迹。因此,您的分支无法快进到上游分支......
唯一的方法是在被认为已经合并后,摆脱您的分支。
要强制使您的分支master与上游的master处于相同的位置:
git fetch --all
git push --force upstream/master:master

一旦你这样做,它可能会抱怨你本地的主分支比上游的分支超前/落后。如果你执行git pull [--rebase],你只是将你的本地历史记录与上游的历史记录合并/变基,并且你仍然会保持领先。所以你可以将你的本地master分支移动到你的派生库的master分支:

git stash # in case of local modifications
git reset --hard origin/master
git stash pop

这样,您应该能够与上游和分叉存储库保持同步。


您还应考虑清理远程存储库,仅保留这两个(origin和upstream),因为我猜其他的只是它们的本地副本。
您可以使用git remote --verbose检查远程存储库的URL:只需为每个不同的URL保留一个。


-1

我也遇到了同样的问题。git 找不到上游...

% git fetch upstream 
fatal: 'upstream' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我删除了我的库,重新 Fork 了一次。


1
解决了问题吗?还是没有解决? - starball
这并没有真正回答问题。如果你有其他问题,可以点击提问来提出。如果你想在这个问题有新的回答时收到通知,你可以关注此问题。一旦你拥有足够的声望,你还可以添加悬赏以吸引更多关注。- 来自评论 - user12256545

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接