我需要從裸倉庫中的git歷史記錄中連續清除20個提交。 我嘗試使用下面的命令,(請注意,我不想寫全長哈希值,並嘗試使用子字符串比較):如何使用--commit-filter在一個git filter-branch pass中排除20提交?
git filter-branch -d /dev/shm/scratch --commit-filter '
if [ ${GIT_COMMIT0:7} = e687d59 ] ||
[ ${GIT_COMMIT0:7} = 58daf29 ] ||
...
[ ${GIT_COMMIT0:7} = 682b2c2 ] ||
[ ${GIT_COMMIT0:7} = 947db9e ];
then
skip_commit "[email protected]";
else
git commit-tree "[email protected]";
fi' --tag-name-filter cat -- --all
但我立即得到消息,如:
重寫414840693169a74d052548c7a7a1bc5b06d3b79c(一萬零三百六十零分之一)(0秒 通過,剩餘的0預測的)git的承諾樹:49:的git 提交樹:壞取代寫不出重寫提交
無論是OR條件還是子串都存在錯誤,我無法弄清楚。
我也有另外一個問題:我怎樣才能登錄使用舊的映射文件的散列到一個新的時git filter-branch
完成它的工作?
只是使用'如果有其他分支分支出來的_after_改寫歷史HEAD'是壞。 – j6t
@ j6t感謝您的提示 – cxw