考慮以下情形: - 2500上游儲存庫被存儲在SVN - GIT中用戶A導入儲存庫到GIT中並提交1個貼片 - 蹦用戶B導入倉庫到Git和承諾1個補丁 - 蹦用戶A希望合併來自git的用戶BGIT中底墊失敗,並從命令未知退出代碼(128):GIT中合併遞歸
補丁在這種情況下,如果用戶A使用git merge
,然後git的歷史將被污染常見的svn提交(即代替2502提交,歷史將包含2501 + 2501 = 5002提交!)
如果用戶A使用git rebase
,那麼git歷史將是正確的(2502提交)。這在這個簡單的情況下工作正常,但如果用戶A和用戶B早已不是1,但1000款然後每一個奇怪的併發症出現:git rebase -Xours
失敗,出現以下消息:
First, rewinding head to replay your work on top of it...
fatal: Could not parse object '98d7cd83de321e737b22240752cd178622d29406^'
Unknown exit code (128) from command: git-merge-recursive 98d7cd83de321e737b22240752cd178622d29406^ -- HEAD 98d7cd83de321e737b22240752cd178622d29406
你可以如使用以下github存儲庫重現此問題:
git clone https://github.com/opentk/opentk
cd opentk
git remote add mono https://github.com/mono/opentk
git fetch mono
git checkout -b integrate
git rebase -Xours mono/rodo-consolidate-opentk
有誰知道爲什麼會發生這種情況?任何想法如何解決這個問題?
>在這種情況下,如果用戶A使用git的合併,然後git的歷史將與普通SVN提交(即替代2502款污染,歷史將包含2501+ 2501 = 5002提交!) - 不一定。 'git svn'在同一設置(svn.authors-file等)運行時,可以從給定的svn提交中獲得相同的git提交信息。 – user3159253
謝謝,這很好理解。對於這個問題的範圍,'git svn'已經運行了不同的設置。這可以在我的帖子的github倉庫中的實踐中觀察到。 –
順便說一句,如果使用rebase交互模式('rebase -i -Xours ...'),我設法__開始_「rebase」。但是在兩個分支中添加兩個文件時,rebase仍會停止/暫停。 – user3159253