2012-11-09 41 views
0

我以前使用過其他DVCS系統,但我是git的新手。所以我認爲我對如何按照我的意圖使用它有錯誤的假設。XCode git pull後的工作流混淆

我有一個RepoA,它有一個碩士和開發分支,我做我的大部分工作。前一段時間,我從RepoA克隆了RepoB,開始製作「BigFeatureA」,並在開發分支中完成了這項工作。我還沒有完成BigFeatureA,但是希望從克隆完成之後引入所有在RepoA中所做的更改,以便使用最新的代碼繼續使用BigFeatureA。 (目前在RepoA中,開發和主分支是相同的,但當然有時它們不是。)使用在RepoB中工作的XCode,我從RepoA開發分支做了一個Pull。我有一個衝突,解決它,拉動按鈕啓用,然後做拉。

現在在RepoB中,所有帶來的更改均爲「未提交更改」,文件顯示「M」或已修改。因此,沒有任何提交消息或任何來自RepoA的內容,只是源代碼的變化。這不是我所期望的。這只是XCode的git工作流版本,或者這只是git合併的工作方式?

我的最終工作流程是在BigFeatureA完成時將RepoB推送到RepoA。這樣做和走向另一個方向是否有區別,即:在RepoA中並從RepoB中拉出?

(進一步閱讀表明,我可能應該在RepoB中創建一個「BigFeatureA」分支,然後在RepoA上開發分支,然後從BigFeatureA分支合併到develop分支中。在分支和回購之間做了合併?)

+0

你在repoA中犯過嗎? – Michael

+0

是的。我曾經對RepoA進行了一系列的錯誤修復,我希望將其引入到RepoB中 - 所有承諾。 – morejanus

回答

0

不,這不是預期的行爲。它將所有更改作爲修改文件離開的原因是因爲它在合併時已經「放棄」了。

我不知道的信息與發佈時相關 - >我創建了最初不知道如何將.DS_Store放入.gitignore文件的存儲庫。我在那裏有* .DS_Store很長一段時間,但是我可能在這之後沒有正確清理。看起來存在「很多」。存儲庫中的DS_Store文件並將其放入.gitignore文件中似乎意味着「從現在開始」,而不是「從我之前做的事情」。

因此,上面Xcode抱怨被修改的.DS_Store文件,因爲它不知道如何解決該類型的文件中的衝突,它只是放棄。它沒有處理這個事實,該文件已經在RepoA中被刪除,它也需要在RepoB中被刪除。其次,雖然它在文件列表中說.DS_Store,但它不是主文件夾中的.DS_Store,它是文件層次結構下的一個或多個.DS_Store文件。所以無論我通過命令行在git中刪除最高級別的.DS_Store多少次,Xcode都不會高興。所以我不能告訴它正在談論哪個 .DS_Store文件。看起來Xcode不擅長在項目中使用同名多個文件。

解決方法是在另一個SO post之後找到所有.DS_Store在您的層次結構中,git rm他們然後通過命令行git commit。然後,Xcode合併將完成,並且您將不會被拉來修改文件。