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

Git,编辑所有分支的根提交,git,Git,我必须重写存储库的历史记录,因为它包含一些凭据。由于我必须修改根提交,因此我遵循以下指示: git-rebase-i允许您方便地编辑任何以前的提交,根提交除外。以下命令显示了如何手动执行此操作 #标记旧根目录 git标记根`git版本列表头|尾-1` git签出-b新根 #编辑。。。 修改最后一次提交 #查看上一个分支 git签出@{1} #将旧根目录替换为修订版本 git rebase--在新根上 #清理 git分支-d新根 git标记-d根 我的问题是,我的存储库中已经有两个分支和几个标记

我必须重写存储库的历史记录,因为它包含一些凭据。由于我必须修改根提交,因此我遵循以下指示:

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

#标记旧根目录
git标记根`git版本列表头|尾-1`
git签出-b新根
#编辑。。。
修改最后一次提交
#查看上一个分支
git签出@{1}
#将旧根目录替换为修订版本
git rebase--在新根上
#清理
git分支-d新根
git标记-d根
我的问题是,我的存储库中已经有两个分支和几个标记,我希望我的历史重写也适用于这些分支和标记。回购协议尚未公开,因此这不会是一个问题。我以前问过一个问题,但是在这种情况下没有使用
git-rebase
命令。以下是我的回购协议的基本图表:

+  master branch
|
|   + topic branch
|   |
|   |
+---+
|
|
|
+  TAG
|
+  Initial commit, the commit I'd like to amend for all branches
甚至可能吗?

使用代替git rebase


如果您真的觉得rebase会更好,那么使用现代git,您可以使用
--root
选项来实现git的rebase。或者cherry pick root commit,然后在其上重新设置基址,如果您有更老的git没有此选项。

谢谢Jakub。但是我不确定
过滤器分支
会对我有什么帮助。我必须编辑将近10个文件中的代码,这样我就可以假装第一次提交时没有凭证。我不知道这怎么可能,因为这些文件没有标准格式。这只是代码。我认为可以使用
--tree filter
,但解析代码似乎很复杂。如果是这种情况,最简单的解决方案是创建新的空分支(
git symbolic ref HEAD refs/heads/new&&rm-f.git/index
),要么选择根提交到该分支上,并使用
git commit--amend
编辑它,然后重新设置rest的基础,要么使用
git-rebase--interactive--root--to new master
。谢谢,我两个都试试,尽管第二个选择似乎更简单。非常感谢。可能相关:。