我有一個git超級項目引用了幾個子模塊,我試圖鎖定一個工作流程,以供我的其他項目成員在其中工作。如何管理與git子模塊的衝突?
對於這個問題,可以說我的超級項目名爲supery
,子模塊名爲subby
。 (然後是我想要做的簡化...我實際上並沒有使用分支的版本,但我認爲這將是最簡單的佈局作爲一個問題。)
我的主分支supery
具有引用爲子模塊的git項目subby
的標記v1.0
。 supery
的分支名爲one.one
,並將子模塊的參考號更改爲指向subby
的標記v1.1
。
我可以在每個分支中順利工作,但如果我嘗試更新one.one
分支,並從master
分支中進行更改,我會收到一些衝突,我不知道如何解決這些衝突。
基本上,在subby
分支中運行git pull . master
後,它看起來像創建了其他子模塊。
拉/合併之前,我從git submodule
從one.one
分支所需的響應:
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
但拉之後,當我運行增加了額外的子模塊git submodule
:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e
Automatic merge failed; fix conflicts and then commit the results.
$ git submodule
qw3rty...321e subby (v1.0)
asdfgh...456d subby (v1.1)
zxcvbn...7890 subby (v1.1~1)
如何刪除/忽略不需要的子模塊引用並提交我的衝突和更改?還是有一個參數,我可以用我的原始git pull
將忽略我的子模塊?
感謝您澄清問題。 這對我來說是完全意義上的,重置命令對我的情況完全適用。 但是,接受來自主分支的子模塊ref並丟棄ref到當前分支的子模塊的命令是什麼? 我知道如何處理正常的衝突,但經過三天的瀏覽網頁後,我找不到除rm -r之外的其他代碼示例。而且我開始認爲有這些例子不存在的原因。子模塊到目前爲止已經從超級項目中抽象出來,您必須管理每個轉換。 – Tyler 2009-05-07 20:26:25
最後!一個答案!我在`git status`中添加了`:../ Mono.Cecil`,但`git add`和`git rm`失敗,因爲Mono.Cecil:需要合併,pathspec'Mono.Cecil /'不匹配任何文件「,因爲它只是一個空文件夾,而git只能處理文件。 `git checkout`給了我`Mono.Cecil:需要合併,錯誤:你需要首先解析你當前的索引`,`git submodule update`給``跳過未裝入的子模塊Mono.Cecil`和`git checkout master Mono.Cecil` FINALLY修復。基本問題:`git status`建議是錯誤的,所以選擇一個分支並用`checkout`將其文件夾複製一份! – IBBoard 2012-08-18 19:43:51