场景如下:我从 Github 分叉了某人的存储库并将其克隆到本地目录。我进行更改,提交并将其推送到我的分叉存储库。然后我向原始存储库发送拉取请求,但无论出于何种原因它都被拒绝了。然后原始存储库会从其他人那里获得一些提交,从而使我的分叉版本过时。现在,我如何获得原始 repo 的最新版本(在我的分叉 repo 和本地)?还有,我如何从 Github 上删除我被拒绝的提交的提交历史?
user1351868
问问题
1971 次
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 上的分叉存储库保持同步是一个两步过程。
使您的本地存储库与以下内容保持同步:
git 获取上游;git 合并上游/主
让你在 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 回答