我試圖在git repo中移動一個子目錄,成爲一個新的存儲庫(保留現有的歷史記錄)。git filter-branch --subdirectory-filter失敗,出現「文件編號不正確 - 無法提交」
以下是關於這方面的各種建議,我克隆了現有的repo,刪除了遠程,現在想使用git filter-branch命令從除新目錄外的新repo中刪除所有內容。但是當我運行該命令時,出現錯誤。
$ git filter-branch --subdirectory-filter myDirectory -- --all
C:\Program Files (x86)\Git/libexec/git-core\git-filter-branch: line 269: /libexe
c/git-core/git: Bad file number
Could not get the commits
我在Windows上使用git-bash。
縱觀源git的過濾分支,這個問題似乎是試圖運行此命令時:
git rev-list --reverse --topo-order --default HEAD \
--parents --simplify-merges $rev_args "[email protected]" > ../revs ||
die "Could not get the commits"
我可以毫無問題運行此命令自己 - 這取決於我代替了$ rev_args值。當我通過單提交時,一切都很好。但在腳本,它來自這裏:
rev_args=$(git rev-parse --revs-only "[email protected]")
如果我運行命令,我回來有幾千提交ID的字符串。
所以我懷疑問題只是腳本試圖運行的命令對於shell來說太長了,導致我看到了神祕的錯誤消息。
那個分析聽起來是否正確?如果是這樣,我該怎麼辦呢?
我發現了一個解決方法,我會在下面發帖,但它看起來很哈克,我希望有人知道更好的方法。