2012-12-07 65 views
5

我們在我們的應用程序中使用Qooxdoo框架。目前,它的副本存儲在我們的Git存儲庫中的根文件夾「qooxdoo」中。我們決定用直接指向GitHub Qooxdoo存儲庫的子模塊替換它,這樣我們就可以更容易地在將來檢出新版本。Git合併時切換到子模塊

我創建了分支,用於基於master的這些更改,稱爲qooxdoo-update。完全刪除舊文件夾併爲qooxdoo添加子模塊。

git rm -r qooxdoo
git submodule add git://github.com/qooxdoo/qooxdoo.git qooxdoo

到目前爲止,這項工作很不錯。然而,當我想將主人合併到這個分支以保持更新,直到其他開發人員可以再次測試他們的代碼時,問題就出現了。

同時還在的Qooxdoo更新分支我發出命令:

git merge origin/master

CONFLICT (file/directory): There is a directory with name qooxdoo in origin/master. Adding qooxdoo as qooxdoo~HEAD

然後...

git status
Unmerged paths: (use "git add/rm ..." as appropriate to mark resolution)

added by us:  qooxdoo 

運行...

git rm qooxdoo
qooxdoo: needs merge
rm 'qooxdoo'
Unlink of file 'qooxdoo' failed. Should I try again? (y/n)

或...

git add qooxdoo
error: unable to index file qooxdoo
fatal: updating files failed

所以我不確定如何解決衝突,以成功完成合並。

+1

如果你運行'git mergetool',它應該給你選擇他們或保留你的IIRC。 mergetool通常是解決衝突的最簡單方法。 – asm

+0

是的,我知道,但這並不能解決問題。我也在這裏TortoiseGit並嘗試解決衝突那裏,但結束了相同的錯誤消息。 – FredyC

+0

[git error:無法索引文件Crashlytics.framework/Headers]的可能重複(http://stackoverflow.com/questions/30580948/git-error-unable-to-index-file-crashlytics-framework-headers) – kenorb

回答

0

git rm -rf qooxdoo命令應該在其自己的提交中完成,然後再添加子模塊。這將告訴git(當從主人合併到分支)關於意圖。目前,被合併的同一個提交只是替換文件/內容 - 所以git會感到困惑。任何機會你可以重播主提交?

+0

對不起,該回購已久,所以我無法測試它。但是你的回答似乎是合乎邏輯的,所以它是你的;) – FredyC

+0

nope。這並不「混淆」混帳 –

1

如果你想回來到以前的最新版本的文件/目錄中,執行:

git reset HEAD qooxdoo 

應該工作。