如何在不删除和重新分叉的情况下重新获取分叉的Git仓库?

时间:2012-04-24 22:55:49

标签: git github

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

2 个答案:

答案 0 :(得分:8)

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

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

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

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

编辑:应该是-B

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

答案 1 :(得分:4)

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

  1. 让您的本地代表与以下内容保持同步:

    git fetch upstream;   git merge upstream / master

  2. 让您的GitHub与您的本地仓库保持同步

    git push origin master

  3. 有关解释,请参阅GitHub Fork A Repo。您需要将“upstream”设置为您分叉的存储库的远程。

    对于“被拒绝的提交”,如果您在本地分支上执行它们,则可以删除分支。如果它不在本地分支上,那么您需要将分支的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
    

    不见了。