2012-02-28 58 views
-1

我對Git相當陌生。現在我只有一個存儲庫的主分支。我開始與另一個人合作,我很困惑我如何能夠與這個人同時進行調整。我使用Tower,所以我不需要在命令行上學習任何東西 - 我只是在尋找一個流程描述。如何與其他人同時更改存儲庫?

我的直覺是每個人都有我們自己的分支機構,我們分開工作。這是正確的方法嗎?一旦工作完成,我們是否將這些分支與我們的主人合併?

假設這個其他人進行了更改並將其提交給主分支,而我一直在分支中處理其他事務 - 我如何將他的工作與我自己的工作合併?

+2

您是否明白存儲庫是分散的?你們都可以提交給同一個分支,但是在推/拉之前不會看到對方的變化嗎? – 2012-02-28 19:28:26

回答

5

如果您都在同一分支上工作,並且他推送了他的更改,那麼您將無法推送您的更改。但是你可以做的是將更改拉入你的本地副本,這將合併你的更改。如果有一些衝突,你將不得不手動解決它們。然後,您可以推送該合併的結果,該結果將包含兩組更改。

一般來說,爲你和他的一個分支可能沒有意義。有意義的是創建「feature branches」。如果您正在使用功能A,請爲其創建一個分支。完成後,將其合併回主。這允許您即使在您的功能未完成時也可以進行緊急錯誤修正。

+0

以下是我感到困惑的地方 - 我是否會提取他的更改,獲取他的更改,或將他的更改合併到本地回購協議中?你是說從遠程回購拉動合併他和我的變化,對嗎? – 2012-02-28 19:53:54

+0

拉取與合併後進行提取相同(如有必要)。所以,是的,如果你拉,git會合並你的更改並創建一個合併提交。 – svick 2012-02-28 20:03:41

2

一個人必須先推動,然後如果你嘗試推動,你會得到一個錯誤,有一些變化,推到回購會覆蓋這些變化。如果發生這種情況,您需要獲取這些更改並將它們合併到您的工作中,然後推送到回購並且應該被接受。其他人也必須這樣做。

2

你必須pull更新merging他們所做的更改(可能是解決conflicts)之前,如果它已發散,你可以push更改爲remote(別人有pushed)從你最後一次pulled

這是獨有的Git,每VCS要求您拉的變化,應對合並,你可以推到中央/遠程倉庫前發生衝突。

這個工作流程沒有什麼神奇的。

與d之差(istributed)如Git VCS是存儲庫是一個遠程中央庫的想法是一個慣例,不像CVS或顛覆(和其他人都集中) 。

Git只是非常善於處理以非常複雜的方式進行合併,因此大多數時候都會將衝突最小化。