12

场景如下:我从 Github 分叉了某人的存储库并将其克隆到本地目录。我进行更改,提交并将其推送到我的分叉存储库。然后我向原始存储库发送拉取请求,但无论出于何种原因它都被拒绝了。然后原始存储库会从其他人那里获得一些提交,从而使我的分叉版本过时。现在,我如何获得原始 repo 的最新版本(在我的分叉 repo 和本地)?还有,我如何从 Github 上删除我被拒绝的提交的提交历史?

4

2 回答 2

8

永远不要在主分支中进行自己的更改,您应该创建一个新分支进行更改并推送它。无论如何,如果你想让你的分支等于远程分支:

假设你有上游作为远程git fetch upstream git checkout -f -B master upstream/master

上面的 checkout 命令将是如果分支 master 在那里继续并用上游/master 覆盖它,如果它不存在则从上游/master 创建它。

如果您没有将上游添加为远程使用git remote add upstream repositoryurl

编辑:应该是-B

编辑:git reset --hard upstream/master实际上更合适

于 2012-04-25T10:04:38.437 回答
4

使您在 GitHub 上的分叉存储库保持同步是一个两步过程。

  1. 使您的本地存储库与以下内容保持同步:

    git 获取上游;git 合并上游/主

  2. 让你在 GitHub 上的 fork 与你的本地 repo 保持同步

    git push 起源大师

有关一些解释,请参阅GitHub Fork A Repo。您需要将“上游”设置为您从中分叉的存储库的远程。

对于您的“被拒绝的提交”,如果您在本地分支上进行,那么您可以删除该分支。如果它不在本地分支上,那么您需要将分支的 HEAD 重置回您选择的提交。像:

# Assume you are on master and need to go back to commit BeadBabe
git checkout -b temp
git branch -f master BeadBabe
git checkout master
git branch -d temp

走了。

于 2012-04-25T02:33:22.110 回答