如何获取上游回购并使其替换为master?我的仓库里只有一个分支,这是主人,我完全搞砸了,所以我基本上需要从上游开始。我认为init会做这个工作,但有更简单的方法吗?
答案 0 :(得分:189)
你可以在这里做(至少)两件事 - 你可以重新登记远程仓库,或者你可以reset --hard
到共同的祖先,然后做一个拉动,这将快进到最新的提交在远程主机上。
具体而言,这是Nevik Rehnel原始答案的简单扩展:
git reset --hard origin/master
git pull origin master
注意:使用git reset --hard
会丢弃所有未提交的更改,如果您是git的新用户,可能很容易将自己与此命令混淆,因此请确保您有意义在继续之前它将要做什么。
答案 1 :(得分:21)
在分支主机上:
git reset --hard origin/master
然后用git gc
做一些清理(在手册页中更多关于这一点)
更新:您可能还需要git fetch origin
(或git fetch origin master
,如果您仅想要该分支);如果在重置之前或之后执行此操作,则无关紧要。 (谢谢@ eric-walker)
答案 2 :(得分:13)
您可以在一个命令中执行此操作:
git fetch --all && git reset --hard origin/master
或者在一对命令中:
git fetch --all
git reset --hard origin/master
请注意,会丢失所有本地更改
答案 3 :(得分:4)
git reset <hash> # you need to know the last good hash, so you can remove all your local commits
git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f
瞧,现在你的叉子又回到了上游。
答案 4 :(得分:2)
我现在终于意识到,代替git fetch --all && git reset --hard origin/master
,应该改为git fetch --all && git reset --hard origin/<branch_name>
(如果一个人在另一个分支上工作)