Git - 在保留旧工作的同时重新开始

时间:2013-06-10 04:23:22

标签: git

我道歉,如果这是微不足道的,但我已经花了很多时间寻找解决方案而且我有点卡住了。我一直在使用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

谢谢!

2 个答案:

答案 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您的更改重新集成到主人中...希望这有帮助!