git rebase 问题重新排序
git rebase issue reordering
我在变基 git 提交时遇到问题。问题是:
pick A
pick B <- mine
pick C
pick D
pick E <- mine
pick F <- mine
我想将所有提交压缩为一个。我打算做类似的事情:
pick A
pick C
pick D
pick B <- mine
squash E <- mine
squash F <- mine
但这没有用,因为如果我执行此 git rebase
,提交 A、C 和 D 也将是我的。如果我只是删除从 A 到 D 的行,只留下:
pick B <- mine
squash E <- mine
squash F <- mine
提交 A、C 和 D 将被删除。我该如何处理?
谢谢
如 How can I rebase a commit made by another author without adding myself as the committer? 中所述,您可以尝试更改 GIT_COMMITTER_NAME
/EMAIL
变量,但这将适用于 all 提交重新定位。
另一种方法是执行变基,然后使用 git filter-branch
完成它以仅更改 A
、C
和 D
。
git filter-branch --commit-filter \
'export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; \
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; \
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; \
git commit-tree "$@"' -- D..HEAD
我在变基 git 提交时遇到问题。问题是:
pick A
pick B <- mine
pick C
pick D
pick E <- mine
pick F <- mine
我想将所有提交压缩为一个。我打算做类似的事情:
pick A
pick C
pick D
pick B <- mine
squash E <- mine
squash F <- mine
但这没有用,因为如果我执行此 git rebase
,提交 A、C 和 D 也将是我的。如果我只是删除从 A 到 D 的行,只留下:
pick B <- mine
squash E <- mine
squash F <- mine
提交 A、C 和 D 将被删除。我该如何处理?
谢谢
如 How can I rebase a commit made by another author without adding myself as the committer? 中所述,您可以尝试更改 GIT_COMMITTER_NAME
/EMAIL
变量,但这将适用于 all 提交重新定位。
另一种方法是执行变基,然后使用 git filter-branch
完成它以仅更改 A
、C
和 D
。
git filter-branch --commit-filter \
'export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; \
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; \
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; \
git commit-tree "$@"' -- D..HEAD