我如何将一个分支的内容复制到一个新的本地分支?

我曾在一家本地分公司工作,并将这些变化推到了遥远的地步。 我想要恢复那个分支上的变化,并做一些其他的事情,但是我不想完全放弃这个工作。 我正在考虑像在本地创build一个新的分支,并复制那里的旧分支,然后我可以恢复更改,并继续在旧的分支上工作。 也许有更好的方法吗? 或者我该怎么做?

 git checkout old_branch git branch new_branch 

这将给你一个新的分支“new_branch”与“old_branch”相同的状态。

这个命令可以结合到以下内容:

 git checkout -b new_branch old_branch 
 git branch copyOfMyBranch MyBranch 

这避免了检查分支的潜在的耗时和不必要的行为。 回想一下,结账修改了“工作树”,如果它很大或包含大文件(例如图像或video),则可能需要很长时间。

有了Git 2.15(2017年第4季度),“ git branch ”学习了“ -c/-C ”,通过复制现有分支来创build一个新的分支。

参见ÆvarArnfjörðBjarmason( avar )的 commit c8b2cec (2017年6月18日) 。
参见Sahil Dua( sahildua2305 )的 提交52d59cc , 提交5463caa (2017年6月18日) 。
(由Junio C gitster合并- gitster -在提交3b48045 ,2017年10月3日)

branch :添加一个--copy-c )选项去--move-m

添加 – --copy分支及其reflog和configuration的function,除了reflog和configuration被复制而不是被移动之外,它使用与--move-m )选项相同的底层机制。

这对于例如将主题分支复制到新版本是有用的,例如在将work主题提交到列表之后workwork-2 ,同时保留跟随分支的所有跟踪信息和其他configuration,而不像保持移动另一个已经提交的分支,以供参考。

注意:复制分支时,您仍然保留在当前分支上。
Junio C Hamano解释说:

当通过复制正好是当前分支的分支A来创build新的分支B时,它也将HEAD更新为指向新的分支。
这可能是因为“ git branch -c AB ”搭载在“ git branch -m AB ”上的实现,

这不符合通常的期望。
如果我坐在一把蓝色的椅子上,有人来把它重新涂成红色,我会接受坐在现在是红色的椅子上(我也可以站立,而不再是我最喜欢的蓝色椅子)。

但是如果有人创造出一把新的红色椅子,在我坐着的蓝色椅子后面build模,我不希望从蓝色椅子上掉下来,最后坐在新的红色椅子上。