Git 如何从远程存储库获取分支的新副本?
我朋友的本地Git 如何从远程存储库获取分支的新副本?,git,Git,我朋友的本地master分支显然是一场灾难(我猜是由于意外的merges和commits)。然而,他的开发分支很好,但包含他还没有准备好推送到远程的更改 用远程master分支覆盖其本地master分支并获取新副本(而不覆盖其其他分支)的最佳方法是什么 git checkout master git reset --hard origin/master 执行正确的操作:将主控形状设置为其原始状态。(如果您已经在主分支上,您可以省略第一个命令。)它还保持分支的reflog不变 老掉牙的回答:
master
分支显然是一场灾难(我猜是由于意外的merge
s和commit
s)。然而,他的开发分支很好,但包含他还没有准备好推送到远程的更改
用远程master
分支覆盖其本地master
分支并获取新副本(而不覆盖其其他分支)的最佳方法是什么
git checkout master
git reset --hard origin/master
执行正确的操作:将主控形状设置为其原始状态。(如果您已经在主分支上,您可以省略第一个命令。)它还保持分支的reflog不变
老掉牙的回答:
这将切换到另一个分支(在本例中为“dev”-选择您可能拥有的任何其他分支),删除本地主分支
,然后从远程/origin/master
重新创建它(这可能不起作用,取决于您的设置和Git版本)。最后一个命令通常相当于
git checkout -b master remotes/origin/master
与上面的新答案相比,这有一个缺点,即reflog被销毁并重新创建(即,如果需要,您不能很容易地撤消它),并且这里发生的情况不太清楚。此外,您还需要有另一个分支,您可以在删除和重新创建期间切换到该分支(但原始问题就是这样)。帕罗·埃伯曼的回答是正确的:
git checkout master
git reset --hard origin/master
如果您还希望删除未跟踪的文件和忽略的文件,请添加:
进一步详细信息的来源:为什么不干脆git重置--硬源代码/master
?也。。。最后一步有用吗?对我来说似乎不太合适。(git checkout-b master origin/master
会的。)@Jefromi:你说得对,我没有看到明显的解决方案。最后一个似乎对我有用(如果分支不存在,则签出有一些默认值,但有一个远程分支存在)。不过,这可能取决于版本。我尝试了第一种解决方案,但没有成功。将其编辑掉会很好。@lulalala和“第一个”解决方案您是指提到的“旧”解决方案吗?当然,为了让它工作,你需要有一个名为“dev”的本地分支。是的,checkout dev
one
git checkout master
git reset --hard origin/master
git clean -xfn # dry run with -n