Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何从远程存储库获取分支的新副本?_Git - Fatal编程技术网

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