2017-02-19 180 views
11

我已经完全搞乱了我分支的git repo的主分支。如何将git master分支重置为分支存储库中的上游分支?

我想彻底重置推到我的叉与上游主回购的内容的主分支。我对保留任何主分支变更或历史没有兴趣。

最简单的方法应该是从上游项目中删除我的分叉回购和refork。但是,我在其他推送的分支中工作,我不想丢失。

因此如何使用上游主机重置我推入的主分支?


git clone https://myrepo.git 
cd myrepo 
git remote add upstream https://upstream.git 
git fetch upstream 

我在哪里从这里去与上游主复位我的本地和远程主分支?

回答

17

您可以将本地主分支重置为上游版本并将其推送到您的存储库。

假设“上游”是原来的存储库和“原产地”是你的叉:

git checkout master 
# this will delete all your local changes to master 
git reset --hard upstream/master 
# take care, this will delete all your changes on your forked master 
git push origin master --force 

(你可以用git remote add upstream /url/to/original/repo定义原始回购“上游”。)

+1

它应该可能是'git reset --hard upstream/master'来重置工作目录。但是,你的答案是正确的。 – j6t

+0

是的,我用git reset --hard upstream/master – MagGGG

+0

不用“--hard”也可以在保留本地修改的情况下工作。我会在拼写步骤中进行硬重设,以检查差异。 –

1

这将重置你的主分支和上游主分支,如果你的分支已经更新了,它也会引用这些更改。

git checkout master 
git reset upstream/master 
git pull --rebase upstream master 
git push origin master --force 

PS:假设上游是原始回购,而原产地是您的副本。