我道歉,如果这是微不足道的,但我已经花了很多时间寻找解决方案而且我有点卡住了。我一直在使用Git进行项目的版本控制,我目前是唯一的开发人员,在花了大量时间处理一堆代码之后,我想从头开始在我的主分支中但是“归档”我以前在当前主分支中的所有工作以及我现有存储库中的其他工作。我目前在master分支中有一堆提交,然后是分支A中的第二系列提交;它看起来像这样:
A: C4-C5-C6
/
master: C0-C1-C2-C3
我想在项目前面添加一个空提交(我当前的初始提交不为空),将我当前的历史存储在一组保留层次结构的分支中,然后用新代码开始处理该空提交。这看起来像这样:
A: C4-C5-C6
/
oldcode: C0-C1-C2-C3
/
master: C0' (empty)-C7...
我希望这是有道理的,我觉得我需要一些改变,但我不确定这是如何工作的,我不想失去我已经有意外的东西。非常感谢任何帮助,谢谢!
编辑:我刚想到我可能只是克隆将当前主分支复制到新分支到旧分支,提交,然后擦除我的master分支中的工作目录并再次提交。这保留了实际的时间线和我的旧代码,可能更“合适”。那有意义吗?它看起来像是:
A: C4-C5-C6
/
master: C0-C1-C2-C3-C8(empty)-C9...
\
oldcode: C7
谢谢!
答案 0 :(得分:1)
从git 1.7.2开始,您可以使用git checkout --orphan <new_branch_name>
创建不与现有分支共享任何历史记录的分支。 This answer详细介绍了如何使用它。因此,只需使用git branch -m
重命名所有现有分支
使用git checkout --orphan
创建新的。
答案 1 :(得分:0)
可能有很多方法可以做到,但我会这样做(基于你的图表):
在您当前的master
分支上,执行git checkout -b oldcode
&lt; -this创建并根据您当前的主分支检出名为oldcode
的新分支。
(所以在此 创建oldcode
的那一刻,它和master
将是相同的。您可以通过运行git diff master oldcode
来确认这一点
接下来,只需执行master
,即可返回git checkout master
分支。
现在,您可以在master
分支上执行任何提交,使其与oldcode
分支发生分歧(不同)。
那很容易。
你真的不应该在你的主分支上编码或“工作”,这样你就不必这样做了。或者避免可能存在导致其进入生产环境/实时代码的错误。将主分支分支到您编写的“主题”分支,然后在完成后将/ git merge
您的更改重新集成到主人中...希望这有帮助!