0
我一直在使用類似這樣的命令:混帳不再能夠改寫歷史
git filter-branch --index-filter \
'git ls-files -s | sed "s_subdir/__" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' HEAD
從一個子目錄「子目錄」的頂級移動目錄樹。 爲了一個不同的,也是成功的過濾器樹清理後回購,我嘗試使用:
git filter-branch --tag-name-filter cat -- --all
git filter-branch --commit-filter 'git_commit_non_empty_tree "[email protected]"' HEAD
git reflog expire --all --expire=now
git gc --prune=now --aggressive
這混合了幾個建議從溜。 然而,不再做這個過濾器分支後的工作:
Rewrite 07436df7a2795910fb0b718d1a1b84e195cfabea (1/113) (0 seconds passed, remaining 0 predicted) mv: cannot stat ‘somepathhere/.git-rewrite/t/../index.new’: No such file or directory
index filter failed: git ls-files -s | sed "_subdir/__" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"
我一點兒也不明白爲什麼這應該是或在「巫術」的清理我以前負責的命令。很顯然,我的git-fu中缺少一些知識。有人可以建議這可能是什麼?
確實'07436df7a2795910fb0b718d1a1b84e195cfabea'有寫入子目錄嗎? –
該命令是將repo的內容從「subdir」移動到目錄的根目錄。每個提交都必須存在根目錄,如果這就是「寫入」子目錄的含義。我相信所有提交都存在子目錄,並且我使用--prune-empty重寫了它。但是.git-rewrite不存在,當然也不應該用於任何提交。 –
其實,我不知何故使用同音字;我的意思是「正確的」子目錄。 'subdir /'是否存在於它提到的提交樹中?如果你的git結帳07436df,你會得到什麼; ls'? (有一些方法可以看一下提交的樹,但我不記得它是什麼,並且目前沒有'git'可用) –