Git,编辑所有分支的根提交

时间:2009-08-20 14:41:11

标签: git

我必须重写我的存储库的历史记录,因为它包含一些凭据。因为我必须修改根提交,所以我遵循了Git Faq

中的说明
  

git rebase -i允许您方便地编辑除根提交之外的任何先前提交。以下命令显示如何手动执行此操作。

     
# tag the old root
git tag root `git rev-list HEAD | tail -1`
git checkout -b new-root root
# edit...
git commit --amend

# check out the previous branch
git checkout @{-1}
# replace old root with amended version
git rebase --onto new-root root

# cleanup
git branch -d new-root
git tag -d root

我的问题是,我已经在存储库中有两个分支和几个标签,我希望我的历史记录重写也适用于那些。回购还没有公开,所以这不是问题。之前我曾问similar question,但在这种情况下,git rebase命令未被使用。这是我的回购的基本图表:

+  master branch
|
|   + topic branch
|   |
|   |
+---+
|
|
|
+  TAG
|
+  Initial commit, the commit I'd like to amend for all branches

甚至可能吗?

1 个答案:

答案 0 :(得分:6)

使用git filter-branch代替git-rebase。

如果你真的,真的觉得rebase会更好,使用现代git你可以使用 --root 选项来git-rebase。或樱桃挑选根提交,然后在它上面进行rebase,如果你有没有这个选项的旧git。