这是一个场景:我从Github派出某个人的存储库并将其克隆到本地目录。我进行了更改,提交并将其推送到我的分叉存储库。然后我将拉取请求发送到原始存储库,但无论出于何种原因它都会被拒绝。原始存储库然后从其他人获得一些提交,使我的分叉版本过时。现在,我如何获得最新版本的原始仓库(到我的分叉仓库和本地)?而且,如何从Github中删除我的拒绝提交的提交历史记录?
答案 0 :(得分:8)
永远不要在master分支中进行自己的更改,你应该创建一个新分支进行更改并推送它。无论如何,如果你想让你的分支等于远程分支,你可以这样做:
假设你有一个上游作为远程git fetch upstream
git checkout -f -B master upstream/master
上面的checkout命令将是如果分支主机在那里继续并用上游/主机覆盖它,如果它不在那里从上游/主机创建它。
如果您没有将上游添加为远程用户git remote add upstream repositoryurl
编辑:git reset --hard upstream/master
实际上更合适
答案 1 :(得分:4)
保持GitHub上的分叉存储库同步是一个两步过程。
让您的本地代表与以下内容保持同步:
git fetch upstream; git merge upstream / master
让您的GitHub与您的本地仓库保持同步
git push origin master
有关解释,请参阅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
不见了。