我在github.com上开始了一些项目。我正在研究两台机器。我做了这样的事情:
第二天,我在使用Machine2。我有不同的配置,所以我做了提交“--author = something”param。完成工作后,我将更改推送到Machine1。
我将我的更改从Machine1推送到github。我可以看到在Machine1上完成的提交已经在历史记录中提交了作者,这是正确的,还提交了来自Machine1的Committer。而且我不想公开提交这个提交者。我该如何删除它?
暂时我在Machine1上做了:
git reset --hard <commit before changes on Machine1>
git push -f github master
但看起来仍然可以获得提交者信息。如何永久删除它。
致以最诚挚的问候,
亚当
答案 0 :(得分:4)
如果您只想更改提交者信息,可以使用git rebase
进行提交并在另一次提交之前重放它们。 --no-ff
选项在这里很重要,因为它确保将重新创建每个提交。否则,当rebase是无操作时,git会快进。
GIT_COMMITTER_NAME=Adam;
GIT_COMMITTER_EMAIL=adam@example.com;
export GIT_COMMITTER_NAME;
export GIT_COMMITTER_EMAIL;
git rebase --no-ff <commit before changes on Machine1>
当您的历史记录稍微复杂(合并)时,这将很快变得棘手,在这种情况下,使用filter-branch可能会更好。
如果您还想更改作者信息,请使用git filter-branch
并使用--env-filter
重写所有提交。一定要备份,以防我的命令有缺陷;) - 虽然我不希望如此
git filter-branch --env-filter '
GIT_AUTHOR_NAME=Adam;
GIT_AUTHOR_EMAIL=adam@example.com;
export GIT_AUTHOR_NAME;
export GIT_AUTHOR_EMAIL;
git commit-tree "$@";
' <commit before changes on Machine1>..HEAD
您也可以使用--all
代替refspec来重写存储库中的所有提交
nb:如果你已经共享了你的存储库,这是一件坏事,你必须在你想要使用它的每台机器上重新克隆它。