2013-01-07 120 views
2

下面是情況。 github上有3個分支:master,his-tests,my-tests 讓我們暫時忘記master分支吧。在完成對主人的初步工作之後,我一起工作的人創建了一個分支「他的測試」,在那裏他繼續開發代碼。然後我根據他與創建我的分支:git工作流分支更新

git checkout -b my-tests 

我在我的測試增加了一些變化,COMMITED它推到github上。我的合作者看到了這些變化,並在他的分支(他的測試)中實施了這些變化。幾天後,他添加了更多的變化,我想在我的分支(my-tests)中實現它們。我該怎麼做?我知道我可以刪除我的分支並再次克隆他的分支,但我無法繼續這樣做。處理它的正確方法是什麼?所以,當我訪問github上,我可以看到,有在他的分支(通常爲1個或2個文件)進行了變更:

git branch -a 
master 
* my-branch 
his-branch 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 
remotes/origin/my-branch 
remotes/origin/his-branch 

所以,我該怎麼辦與我的分支合併了分支。他擁有最新的文件狀態,我希望更新我的分支中的所有文件。正如你所看到的,我已經結帳,並且始終在我的分支中工作,我不會在他的分支中進行更改。什麼是這個更新我的分支與他的變化,然後在它上面添加一些變化,並推動我的變化,我的分支在Github上的循環工作流程。

是否還有更多您需要的信息?謝謝

回答

1

所以,我該怎麼辦與我的分支

您合併了分支與我的分支合併了分支!

首先,確保你的本地回購匹配你看到在GitHub上的內容:

$ git checkout his-branch 
$ git pull 

一旦你的本地回購是最新的,你可以從his-branch新的東西合併到my-branch

$ git checkout my-branch 
$ git merge his-branch 

使用git merge將允許git處理兩個分支之間的任何可能的衝突。如果有衝突,但你不關心他們,只是想和你的分支是一樣的他,在你的分支放棄一切,你可以用git reset移動你的分支:

$ git checkout my-branch 
$ git reset --hard his-branch 
+0

**注意:**使用'混帳重置--hard'將失去更改。所以如果你想刪除/刪除你自己的修改,請這樣做。(如果你錯誤地做了,有一種方法可以恢復,但你最好先小心一點) –

+0

右鍵:使用'reset --hard'將會「放棄分支中的所有其他東西」。 – ellotheth

+0

在這種特殊情況下,我總是在開始編寫代碼之前等待他的更改,以免丟棄任何東西。那會好嗎? – Wasteland

1

你」將不得不自己的分支合併到你:

git checkout my-test 
git merge his-test 

你也rebase你改變到他的分支。這將保持歷史直,但你修改歷史(其中一些人認爲是壞的)

git checkout my-test 
git rebase his-test 

如果你的同事是在另一個遙遠。通過將遠程啓動:

git remote add my-colleague-remote [email protected] 

然後,您引用的分支保持這個遙控器上:

git fetch my-colleague-remote 
git merge my-colleague-remote/his-branch 
+0

修改本地歷史並不錯;這是鼓勵!修改歷史記錄然後將修改推送到共享存儲庫會爲使用該分支的其他人創建令人頭疼的問題,因爲現在*他們必須重新綁定才能保持同步。在這種情況下,如果'his-branch'是'my-branch'的直接後代(即,如果my-branch合併成'his-branch'後沒有更改'my-branch' branch')? – ellotheth

+0

謝謝。發佈後:git合併他的測試我得到的消息:已經是最新的。這實際上並不正確。然後我嘗試從我的分支中調用 - 但它說我沒有指定分支,因爲這不是我當前分支的默認配置遠程。如果我切換到主和拉 - 所有它說:取回原點,已經是最新的。 – Wasteland

+0

所以你的同事在另一個偏遠地區? –