如何将“主”重置为“原点/主”?


Answers:


310

正如KindDragon答案所提到的,您可以使用以下命令master直接重新创建origin/master

git checkout -B master origin/master

git checkout手册页 提到:

如果-B给定,<new_branch>则创建它(如果不存在);否则,将其重置。这是交易的等价物

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

最初建议:

就像是:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

步骤2是可选的。


1
您只需一行即可完成。
罗伯特·西默

93

Git支持以下命令:

git checkout -B master origin/master

检出origin/master分支,然后master在此处重置分支。


4
唯一的真实答案。
罗伯特·西默

3
保存四次击键-您不需要引号。只是:git checkout -B master origin / master
zumalifeguard

假设我做了两件事,第一件事是与分支合并,第二件事是常规的。如果我回到原点/原件,合并会发生什么?
utdev '16

1
您不是必须git fetch origin master先确保origin/master已更新吗?
pedrozath

是的,当然,您应该git fetch首先使用所有解决方案
KindDragon

29

我认为与该选项相比,VonC的答案也很复杂:

git update-ref refs/heads/master origin/master
git reset --hard master

git自动记录引用的每个值(通过引用日志)。因此,在您运行该命令之后,然后master@{1}引用master的先前值。

VonC的答案是正确的,但是浪费了将master的旧值检出到文件系统中的时间。

如果您关心存储库中的孤立对象,则可以运行 git gc


1
听起来很有趣。+1
VonC

我仍然得到Already on 'master'
yourfriendzak

@yourfriendzak,我忘记考虑到在更新母版之前您可能已经将母版签出。我已经将答案更新为即使在这种情况下也应该起作用的答案。
亚历山大·伯德

即使您不在母版上(例如实际上指向小费来源/母版的HEAD分离状态),此方法也有效。然后,您可以签出master,而不必通过回购来翻转旧文件。大!
Andrew Mao

20

如果您已经在使用master,则可以执行以下操作:

git reset --hard origin/master

它将本地master分支指向远程,origin/master并丢弃工作目录中的任何修改。


并会删除文件!如果您已经创建/编辑了文件,并且对它们运行了“ git add”,则此命令将删除它们。被警告。
Cheeso 2015年

这种方法比更好git checkout -B master origin/master吗?
Jim Aho
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.