我在重新定位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将被删除。我怎么处理这个?
由于
答案 0 :(得分:1)
正如How can I rebase a commit made by another author without adding myself as the committer?中所述,您可以尝试更改GIT_COMMITTER_NAME
/ EMAIL
个变量,但这适用于所有提交重新定位。
另一种方法是执行您的rebase,然后使用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