2011-05-16 71 views
1

我必須使用不同的計算機。我更新了文件A,B和其他文件在一個和B,C和其他文件在另一個。如何處理合並/拉入git

文件B中的更新是代碼的不同部分。我已經承諾兩個。 我把A和B推到了github上。

問題:

  • 現在我應該在另一個呢?

  • 我應該拉?或者我應該先推?

  • 如果我推,文件A會被覆蓋?

  • 如果我拉,文件C會被覆蓋?

  • 需要採取什麼樣的工藝?

  • 我需要做什麼與文件B有不同的版本?我可以合併它們嗎?

回答

0

通常的情況是,你做一個拉你推你的更改。但是可能會出現這種情況,即當前祖先的提交與最後一次提交時相同(即所有其他提交者尚未推送任何內容),這意味着不需要合併,只需推送您的更改即可,而無需拉。

一旦有人推動了他們之間的變化,那麼你總是不得不把他們的變化拉入你的(這是git創建所謂的合併提交,這是一個沒有被創建的提交通常的方式與git add,git commit等)。現在您的存儲庫與最新的更改同步,您可以安全地將中央存儲庫與您的存儲庫同步。

在這種情況下,您必須先拉出,這意味着C不會被覆蓋,因爲這兩個存儲庫具有相同的版本(請記住,您只在兩個回購站上更改了B)。

在B的情況下,如果你有兩個不同的版本必須由git合併,可能會有衝突。但這正是一個拉動,它是一個獲取(同步你的倉庫)和你的本地分支之間的合併,跟蹤遠程分支,例如master與origin/master合併。

最後A會發生同樣的事情,在A的第一個回購中所做的更改將在另一個存儲庫中進入A的微不足道的合併,因爲修改後的A是從相同版本(相同的斑點) A在其他回購中。

希望這清除了一些東西了。

乾杯!

2

你必須先拉,讓你的添加是對的什麼是在服務器上面。一旦你拉(將合併之前推MODS與你的本地MODS),然後你可以推。 BTW:這不是github,這是純粹的git。我建議以下書籍來了解git的工作原理:

http://book.git-scm.com/

+0

只需要注意,如果您必須先進行拉動,推動將失敗。 – 2011-05-16 21:50:12