Git rebase保留了提交者

时间:2017-02-02 23:08:27

标签: git rebase

显然,当发生rebase时,提交者信息可能会发生变化。在rebase上保留提交者信息(user.name,user.email)的最佳方法是什么?

我尝试使用git log -1 --format="%cngit log -1 --format=%ce获取提交者信息,然后将其设置为我的user.name/user.email和rebasing。这应该是正确的还是我错过了什么?

2 个答案:

答案 0 :(得分:1)

你到底想要完成什么?我假设你这样做是为了使一个分支或一组提交看起来与另一个分支或一组提交相同。重新定位不会创建全新的提交,因为他们在不同的时间使用不同的提交者完成。 SHA-1哈希不会是相同的,除非你让所有东西(包括元数据)与原始提交相同 - 如果你想这样做,那么你也可以使用原始提交而不是重新设置的提交。因此,我不认为变形能够满足您的需求。经过简短的谷歌搜索,看起来你正在尝试做的事情并不容易做到,而且可能是有充分理由的。这将是我的答案 - 不要做你想做的事情,我不知道这会带来什么好处。

如果您仍想进行调查,我会调查Environment Variables您可以设置GIT_COMMITTER_NAMEGIT_COMMITTER_EMAIL的地方,但我不确定您是否可以在rebase期间,可以在commit-by-commit的基础上轻松设置它们。

答案 1 :(得分:0)

我有类似的问题。我们的核心代码存储库太大了,因此我使用git filter-branch对其进行了分解,但是这在较小的存储库中创建了许多空的合并提交。在尝试删除它们时,我发现git rebase弄乱了COMMITTER_DATE和COMMITTER_NAME / EMAIL,这意味着我重新建立了任何分支,不再链接回它们来自的提交,即使没有任何更改,这也意味着我可以获得很多分支,具有不再相同的相同提交。

似乎是这样的情况,如果您想在提交中保留所有三个git rebase环境变量,请偶然使用GIT_COMMITTER代替git filter-branch(这似乎实际上可以让您准确地重写提交,只更改提交中提到的1件事。遗憾的是,它不如git rebase -i

就我而言,我试图从分支的历史记录中删除特定的提交,或重新排序提交。