如何更改/刪除提交歷史記錄?更改git提交歷史記錄,但保留更改
我一直在從我的家用電腦上開發一個項目,其中git config user.name與辦公室中的不同。 我不想讓刻痕混在一起。 我已經將代碼推送到官方存儲庫。
在提交歷史,截至目前,我有記錄爲: 由「my_home_nick」
承諾,但我希望所有的提交信息的顯示爲: 由「my_office_nick」
承諾有沒有做這件事?
總之說,有日誌: 通過X
致力於我想,要改變以 致力於爲y
如何更改/刪除提交歷史記錄?更改git提交歷史記錄,但保留更改
我一直在從我的家用電腦上開發一個項目,其中git config user.name與辦公室中的不同。 我不想讓刻痕混在一起。 我已經將代碼推送到官方存儲庫。
在提交歷史,截至目前,我有記錄爲: 由「my_home_nick」
承諾,但我希望所有的提交信息的顯示爲: 由「my_office_nick」
承諾有沒有做這件事?
總之說,有日誌: 通過X
致力於我想,要改變以 致力於爲y
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "your_home_nick" ];
then
GIT_COMMITTER_NAME="your_office_nick";
GIT_AUTHOR_NAME="Office Name";
GIT_COMMITTER_EMAIL="[email protected]";
GIT_AUTHOR_EMAIL="[email protected]";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD
是的,看看git filter-branch
命令。它會根據需要重寫歷史記錄。
請記住,它會創建一個新的歷史記錄。創建新的歷史記錄並將分支指向它在git中稱爲「倒回」,並且如果使用更常見的命令(如git rebase
),也會發生這種情況。只要沒有人把他們的工作放在舊的歷史上,沒關係,但如果他們這樣做了,就會引起很大的混亂。現有的歷史由它的SHA1哈希標識,是不可變的。
您可以使用下列選項
您可以南瓜/大整編的commit命令使用Git的變基的一個或多個--interactive
如果你還沒有使用my_home_nick推變化官方倉庫,你可以創建另一個克隆,並用正確的用戶名進行合併/更改
你可以使用git filter-branch來修復提交者名稱
Here是與許多答案相同的問題。
你說你推到了「官方倉庫」,但是如果你不是這個倉庫的唯一提交者,並且有人已經提交了不正確的提交,或者更糟糕的是,在提交之上進行了一些更改,留下不正確的提交者名稱將會因爲git確實不允許更改提交,所以它只允許創建替代歷史來代替不正確,正如Jan Hudec所寫的那樣。
我是唯一的提交者。 – user993563
你應該考慮改寫你的問題的標題......我認爲通過「刪除提交歷史記錄」你真的意思是「改變提交歷史」。他們是非常不同的東西。 – meagar