我如何将一个分支的内容复制到一个新的本地分支?
我曾在一家本地分公司工作,并将这些变化推到了遥远的地步。 我想要恢复那个分支上的变化,并做一些其他的事情,但是我不想完全放弃这个工作。 我正在考虑像在本地创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
主题提交到列表之后work
到work-2
,同时保留跟随分支的所有跟踪信息和其他configuration,而不像保持移动另一个已经提交的分支,以供参考。
注意:复制分支时,您仍然保留在当前分支上。
Junio C Hamano解释说:
当通过复制正好是当前分支的分支
A
来创build新的分支B
时,它也将HEAD
更新为指向新的分支。
这可能是因为“git branch -c AB
”搭载在“git branch -m AB
”上的实现,这不符合通常的期望。
如果我坐在一把蓝色的椅子上,有人来把它重新涂成红色,我会接受坐在现在是红色的椅子上(我也可以站立,而不再是我最喜欢的蓝色椅子)。但是如果有人创造出一把新的红色椅子,在我坐着的蓝色椅子后面build模,我不希望从蓝色椅子上掉下来,最后坐在新的红色椅子上。