Git 变基保留提交者
Git rebase preserve committer
显然,当发生变基时,提交者信息可能会发生变化。在 rebase 上保留提交者信息(user.name、user.email)的最佳方法是什么?
我已经尝试使用 git log -1 --format="%cn
和 git log -1 --format=%ce
获取提交者信息,然后将其设置为我的用户。name/user.email 和 rebase。这应该足够好了,还是我遗漏了什么?
你到底想完成什么?我假设您这样做是为了使一个分支或一组提交看起来与另一个分支或一组提交相同。变基不会创建全新的提交,因为它们是在不同的时间由不同的提交者完成的。除非您使所有内容(包括元数据)与原始提交相同,否则 SHA-1 哈希将不相同 - 如果您想这样做,那么您最好使用原始提交而不是重新提交的提交。所以我认为变基不会让你得到你需要的东西。经过简短的 google 搜索,您尝试做的事情似乎并不容易完成,而且可能有充分的理由。这就是我的答案 - 不要做你想做的事,我不知道这样做会有什么好处。
如果您仍想调查,我会查看 Environment Variables,您可以在其中设置 GIT_COMMITTER_NAME
和 GIT_COMMITTER_EMAIL
,但我不确定您是否可以轻松设置这些在变基期间 commit-by-commit 基础上。
我也有类似的问题。我们的核心代码存储库已经变得太大,所以我使用 git filter-branch 来分解它,但这会在较小的存储库中创建大量空的合并提交。在尝试删除它们时,我发现 git rebase 弄乱了 COMMITTER_DATE 和 COMMITTER_NAME/EMAIL 这意味着我 rebase 的任何分支,不再 link 回到它们来自的提交,即使什么都没有改变,这意味着我可以获得很多分支,相同的提交不再相同。
情况似乎是意外或设计,如果您想在提交中保留所有三个 GIT_COMMITTER
环境变量,则 git rebase
不是答案,请使用 git filter-branch
相反(这似乎基本上允许您完全重写提交,只更改提交中提到的 1 件事)。遗憾的是不像 git rebase -i
那么容易
就我而言,我正在尝试从分支的历史记录中删除特定提交,或重新排序提交。
显然,当发生变基时,提交者信息可能会发生变化。在 rebase 上保留提交者信息(user.name、user.email)的最佳方法是什么?
我已经尝试使用 git log -1 --format="%cn
和 git log -1 --format=%ce
获取提交者信息,然后将其设置为我的用户。name/user.email 和 rebase。这应该足够好了,还是我遗漏了什么?
你到底想完成什么?我假设您这样做是为了使一个分支或一组提交看起来与另一个分支或一组提交相同。变基不会创建全新的提交,因为它们是在不同的时间由不同的提交者完成的。除非您使所有内容(包括元数据)与原始提交相同,否则 SHA-1 哈希将不相同 - 如果您想这样做,那么您最好使用原始提交而不是重新提交的提交。所以我认为变基不会让你得到你需要的东西。经过简短的 google 搜索,您尝试做的事情似乎并不容易完成,而且可能有充分的理由。这就是我的答案 - 不要做你想做的事,我不知道这样做会有什么好处。
如果您仍想调查,我会查看 Environment Variables,您可以在其中设置 GIT_COMMITTER_NAME
和 GIT_COMMITTER_EMAIL
,但我不确定您是否可以轻松设置这些在变基期间 commit-by-commit 基础上。
我也有类似的问题。我们的核心代码存储库已经变得太大,所以我使用 git filter-branch 来分解它,但这会在较小的存储库中创建大量空的合并提交。在尝试删除它们时,我发现 git rebase 弄乱了 COMMITTER_DATE 和 COMMITTER_NAME/EMAIL 这意味着我 rebase 的任何分支,不再 link 回到它们来自的提交,即使什么都没有改变,这意味着我可以获得很多分支,相同的提交不再相同。
情况似乎是意外或设计,如果您想在提交中保留所有三个 GIT_COMMITTER
环境变量,则 git rebase
不是答案,请使用 git filter-branch
相反(这似乎基本上允许您完全重写提交,只更改提交中提到的 1 件事)。遗憾的是不像 git rebase -i
就我而言,我正在尝试从分支的历史记录中删除特定提交,或重新排序提交。