Git log合并中央回购的分支'主'

时间:2017-10-14 19:57:06

标签: git merge version-control

我使用此脚本更改特定提交的作者:

#!/bin/sh

git filter-branch --env-filter '
NEW_NAME="MyName"
NEW_EMAIL="my-name@my-domain.com"
if [ "$GIT_COMMIT" = "afdkjh1231jkh123hk1j23" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

来自Change commit author at one specific commit

在主repo上运行之后,所有提交都被重复使用不同的哈希并且提交哈希'afdkjh1231jkh123hk1j23'与另一个具有指定名称和电子邮件的哈希重复。我可以返回原始日志吗?

问题是:现在,在每次提交之后生成一个新的提交,并与之前的提交合并。

例如:

最后一次提交是601dd3a ...

运行脚本后

最后提交:

commit 1550a7c596...
Merge: 601dd3a 4c882eb
Author: MyName <my-name@my-domain.com>
Date:   Sat Oct 14 17:59:09 2017 +0000
    Merge branch 'master' of 14.235.21.116:/app

commit 4c882eb.. (this is copy of 601dd3a)
........

commit 601dd3a...
......

在生成新的pull之后,这个合并提交。它可以在将来被淘汰(用于新的提交)吗?

1 个答案:

答案 0 :(得分:0)

  

每次上拉后,生成合并提交。

这是预期的,因为远程分支具有与您自己的本地宿主不同的历史(不同的SHA1)(由filter-branch重写)

如果您更改提交(或提交作者姓名/电子邮件等元数据),则表示您应该push --force并用您自己的替换远程历史记录。
如果你是唯一正在努力(推送)远程回购的人,这很容易做到 当你有多个协作者时,这并不容易,因为这意味着他们拉(他们会获得与你拥有的相同类型的合并提交),但重置他们自己的本地repo到远程repo分支(因为该分支具有修订的历史记录)。