2011-02-12 109 views
1

變化我是新來的git,和它說,它的特點之一就是一切都是本地的,所以你提交修改時不在線。衝突上的git

會發生什麼,如果你下線,做一些修改,提交等,又過了幾分鐘後,你就是重新聯機,另一個人做出改變,其中有些是在同一個地方之前,你做了你的變化。兩人都不知道他們做出了相同/相似的更改。將更改推送到服務器時會發生什麼? 這改變得到「放」

回答

4

誰推到共享存儲庫可以把他們的提交沒有問題的第一個。當第二個人試圖推動他們的變化時,git檢測到衝突並拒絕推送。第二個人則必須先拉第一人稱的變化和它們合併到他們的本地倉庫。成功合併後,人2然後將合併的更改推送到共享存儲庫。

0

所做的更改首先得到放入。然後,當您嘗試提交更改時,git將嘗試合併,如果git不成功,則提交將返回一個錯誤,並且您的源文件將在有衝突 - 你會看到每個衝突的變化並排。您必須經歷每次衝突並選擇要提交的正確更改。

2

Git非常聰明,如果您沒有任何更改,它絕不會讓您推動。

在這種情況下會發生什麼是你將不得不拉,在這拉Git會嘗試合併你的變化與服務器中的變化(同時由其他人完成)。

如果它能夠自動合併更改,則不會發生任何情況。如果它不夠聰明,它會給你一個你必須解決的衝突,git有一個非常聰明的方式來表達衝突,而且它們通常很容易修復。

在這裏你有正式的手動修復衝突:http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#resolving-a-merge