我必须重写我的存储库的历史记录,因为它包含一些凭据。因为我必须修改根提交,所以我遵循了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
甚至可能吗?
答案 0 :(得分:6)
使用“git filter-branch”代替git-rebase。
如果你真的,真的觉得rebase会更好,使用现代git你可以使用 --root
选项来git-rebase。或樱桃挑选根提交,然后在它上面进行rebase,如果你有没有这个选项的旧git。