2011-04-15 119 views
17

我正在處理由程序生成的不少二進制文件。自動合併對這些文件不起作用。合併時我想要做的事情,實際上是採取一個副本或另一個副本。這並不理想,但我認爲這是最好的方法。Git合併他們的步驟

現在我的理解是,如果我想採取從分支我是從合併文件,並完全拋棄我們的版本,我應該做的:

git merge <branchname> 
git checkout --theirs <filename> 
git add <filename> 
git commit 

這是正確的,還是我遺漏了什麼?

我想做到這一點,而不使用的.gitignore

+0

我一直在尋找一段時間,如何解決'git merge -X theirirs upstream/master''兩者都添加「造成的衝突。 'git checkout - 他們。'是正確的做法!謝謝。 – 2015-03-31 21:08:17

回答

22

如果你的目標是確實保持一個版本或其他,那麼,你將要使用:

git checkout <--theirs|--ours> <path> 
git add <path>`. 

當然,就像你說的,它的效果並不理想。如果有什麼辦法可以避免這種情況,你應該。如果可以的話,嘗試採用工作流習慣,避免在不同的分支上更改那些以後需要合併的文件。如果文件是從跟蹤的內容生成的,那麼您確實可能會忽略它們 - 如果您有充分的理由不這樣做,則可能需要從可合併的跟蹤內容中生成這些文件。

因此,在做這件事之前,先探索你所有的其他選擇,但是如果你必須的話,你就是對的。

+0

在添加它之前是否應該保持「兩個修改」?我這樣做,但它會生成一個新的文件,最後是TH:S – 2011-04-15 01:29:37

+0

編輯:是的,它沒有通知您您正在接受他/她們的事實。只需結賬,然後添加。 – 2011-04-15 01:57:46

1

考慮使用的.gitignore忽略生成的文件。你也可能不得不做git rm。

+0

這是真的......假設二進制文件是由程序直接從被跟蹤的東西生成的。 OP可能不是這種情況。 – Cascabel 2011-04-15 01:20:51

相關問題