我有一个在git中跟踪的项目,它有一个主分支,成为我的代码的发行版。我在该分支中有一些代码导致问题,因为它依赖的外部库目前已被破坏。但是,我希望外部库将在未来的某个时刻“修复”(几周,因此存储不是我想要的),并且我想要复活有问题的代码。
所以,问题是:
如何从分支机构保存代码以备将来使用?如果我只是创建一个名为saveme的分支,在主分支上进行更改,然后尝试将saveme合并回master,以获取“已保存”的代码,这似乎导致“已经是最新的”。
答案 0 :(得分:2)
创建saveme
分支时,您的历史记录如下所示:
A -- B -- C (saveme,master)
....然后当您在master
上工作更多时,为了应对破坏的图书馆,您的历史记录如下:
A -- B -- C (saveme) -- D -- E (master)
因此,如果您尝试将saveme
合并到master
,则会显示“已经是最新的”,因为saveme
的完整历史记录已包含在master
中}。听起来好像你想要的是然后创建一个与saveme
具有完全相同的树的提交,但它只是master
之上的另一个提交。您可以使用git revert
进行提交E
然后使用D
来执行此操作,但如果您想一次性执行此操作,则可以执行以下操作:
# Check that "git status" is clean:
git status
# Set the index (staging area) to be as it was at the tip of the branch saveme:
git read-tree saveme
# Create a commit based on that index:
git commit -m "Going back to the state of the branch 'saveme'"
# Your working tree will still be as it was when you started, so
# you'll want to reset that to the new commit:
git reset --hard
(这是我在this answer中建议的食谱的一个微不足道的变体。)然后你的历史将如下:
A -- B -- C (saveme) -- D -- E -- F (master)
...但提交F
树将与提交C
的树相同。