簡體   English   中英

Git 刪除提交者信息

[英]Git removing commiter information

我在 github.com 上開始了一些項目。 我正在兩台機器上工作。 我做了這樣的事情:

  1. 在 github 上創建項目,
  2. 在 Machine1 上克隆項目形式 github,
  3. 在 Machine1 上做了一些提交,
  4. 在 Machine2 上創建存儲庫,
  5. 將更改從 Machine1 推送到 Machine2 和 github。

第二天我在 Machine2 上工作。 我在那里有不同的配置,所以我使用“--author=something”參數進行提交。 完成工作后,我將更改推送到 Machine1。

我將更改從 Machine1 推送到 github。 而且我可以看到在 Machine1 上完成的提交在歷史記錄中提交了正確的 Author 以及來自 Machine1 的提交者提交。 而且我不想公開這個提交者提交的文件。 我怎樣才能刪除它?

我暫時在 Machine1 上做了:

git reset --hard <commit before changes on Machine1>
git push -f github master

但看起來仍然可以獲取提交者信息。 如何永久刪除它。

此致,

亞當

如果您只想更改提交者信息,您可以使用git rebase來獲取您的提交並在另一個提交之上重放它們。 --no-ff選項在這里很重要,因為它確保每次提交都會被重新創建。 否則 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 來重寫存儲庫中的所有提交

注意:如果您已經共享了您的存儲庫,那么您將不得不在您想要使用它的每台機器上重新克隆它,這是一件壞事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM