我可以用更简单的方式执行以下操作吗?

git checkout origin/master
git branch -D master
git branch master
git checkout master


评论

有时,无需触摸工作树即可完成此操作:stackoverflow.com/a/12343727/586086

请更新您接受的答案:@KindDragon的答案更正确,更短。

#1 楼

Git支持以下命令:

git checkout -B master origin/master


检出origin/master分支,然后在那里重置master分支。

评论


唯一的真实答案。

– Robert Siemer
16年1月8日在12:14

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

– zumalifeguard
16-3-24的2:29

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

–utdev
16/12/22在15:05

您不是必须先git fetch origin master才能确保Origin / master更新了吗?

– pedrozath
17 Mar 29 '17在16:22

是的,当然,对于所有解决方案,您都应该先进行git fetch

– KinDragon
17年3月29日在17:03

#2 楼

如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 2.23+(2019年8月),由于git checkout太混乱了,所以新的(仍处于试验阶段)命令是git switch

git switch -C master origin/master


即:


-C <new-branch>
--force-create <new-branch>


--create相似,除了<new-branch>
这是一个方便的快捷方式,用于:

$ git branch -f <new-branch>
$ git switch <new-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是可选的。

评论


您只需一行即可完成。

– Robert Siemer
16年1月8日在12:17

谢谢VonC,我已更新为接受亲爱的@KindDragon的回答。该技术一直在进步。已经十年了!爱你们!! ^ _ ^

–谢耶利
20 Jul 22'12:17



@XièJìléi没问题,不错的选择。我的为KindDragon提供了更多细节。

–VonC
20年7月22日在12:33

#3 楼

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

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


master@{1}引用了master的先前值。

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

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

评论


听起来很有趣。 +1

–VonC
13年3月19日在12:37

我仍然已经掌握了“大师”

–yourfriendzak
13年8月21日在22:56

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

–亚历山大·伯德(Alexander Bird)
13年8月22日在19:02

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

–毛泽东
2014年7月25日在19:26

#4 楼

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

git reset --hard origin/master

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

评论


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

– Cheeso
2015年11月11日15:30

这种方法是否比git checkout -B master origin / master更好?

– Jim Aho
19年6月2日在18:02