2010-04-15 96 views
10

是否有可能合併從中央回購到本地分支的更改,而不必提交/藏匿在當地的分支機構和結賬主編輯?混帳合併切換到本地分支

如果我在當地的分支「工作」的工作,也有一些未提交的更改,我用下面的步驟來從中央回購更新到我的工作分支。

git stash 
git checkout master 
git pull 
git checkout work 
git rebase master 
git stash pop 

通常在「工作」中沒有未提交的更改,然後我省略了存儲步驟。

什麼,我真的很喜歡的是像下面這樣:

git pull master (updates master while work branch is checked out and has changes) 
git rebase master (rebases the updates into work branch uncommited changes are still safe) 

有什麼比我目前做更容易?

+0

我非常驚訝,這仍是如此難以在Git中的事。作爲一名長期的SVN用戶,這種內置功能(無縫地將遠程更改合併到修改後的工作副本中)是我的團隊每天所依賴的功能。 – Spongman 2013-02-27 23:52:40

回答

12

你可以做(​​分支work):

git stash 
git pull --rebase origin master 
git stash apply 

git pull --rebase既拉遠程變化和變基在遠程的人的頂你的本地修改。即基本上做你在腳本中顯示的內容。

局部的變化,當然,應致力於藏匿或在mergerebase(因爲如果合併發生矛盾,衝突的變化應提交的爲您解決這些問題 - 但如果將你的本地修改,然後去了?)

當您稍後決定更新master,並與它合併work分支,它不會造成問題,因爲拉的變化是相同的。因此,您在更改時不必更新master

+1

謝謝@Pavel和@Pran。這是有效的,我需要意識到的是,在這一點上更新主控並不是必須的。當工作合併到master中時它會被更新。 – ScottS 2010-04-15 21:15:55

+0

它的工作原理。謝謝! – 2011-12-13 06:46:52

2

我不認爲,如果你有未提交的更改就可以拉。

因此,你可以做線沿線的東西:

git stash 
git pull --rebase <remote> <branch> # Calls rebase instead of merge. 
git stash pop 
0

也許事情已經自2010年以來改變,但您可以從遠程即使你有未提交的更改拉。您的本地更改將保持未提交,因此您可以在閒暇時區分或合併它們。

git pull origin master 

測試了Git版本1.9.5.msysgit.1

this SO answer