git rebase问题重新排序

时间:2017-03-14 05:05:44

标签: git github git-rebase

我在重新定位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将被删除。我怎么处理这个?

由于

1 个答案:

答案 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完成该更改,仅更改ACD

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