2013-07-02 25 views
0

因此,這裏有一些背景:我試圖使用hg-fast-export移動存儲庫from Mercurial to git,當我執行最後一步(git checkout HEAD)時,存儲庫中仍存在更改。具體來說,它表示有4個刪除的文件不應該被刪除。當運行git reset --hard時,分階段更改仍然存在。 git checkout和git stash + git stash drop也一樣。這是怎麼回事?

當我嘗試以下方法,沒有什麼變化:

git reset --hard HEADgit checkout .git stash && git stash drop

我注意到的一件事很奇怪的是,當有人使用這個Mercurial回購時,他們在T_T中間添加了一個git回購。所以有趣的是當我運行git checkout HEAD(但不是當我運行git checkout .時),.git子目錄顯示爲在索引(奇怪)中被刪除。每當我運行git reset時,這些更改都會消失,但沒有一堆錯誤飛過無效路徑。

最後,這會使存儲庫處於與我第一次運行git checkout HEAD時所處的狀態相同的狀態。 (至少git的一致!)。

當然,一部分人將mercurial轉換爲git已經經歷了這種情況。任何人都可以分享他們的經驗,堅持git內部的變化嗎?

+0

錯,git checkout HEAD有什麼意義?在'git reset --hard'之後就是'git status'顯示的內容? –

+0

我不確定'git checkout HEAD'除了在運行腳本之前將庫的工作副本更新到HEAD之外,還有什麼意義。 我運行'git reset --hard HEAD'後,剩下的4個文件在索引中被列爲不應該被刪除。它們存在於文件系統上,但如果我運行上述命令,git不會取消刪除操作。 – Caustic

+0

正如我所看到的'git checkout HEAD'是一個無操作。而且你期望它實際上做了些什麼。 –

回答

0

這個問題的原因的確是在mercurial repository中有一個.git目錄。

我解決這個問題的方法是在執行快速導出轉換之前,用排除故障目錄的文件映射運行hg convert

希望這可以幫助未來的人!

相關問題