2011-08-03 67 views
201

我當時在主分公司工作,做了一些改動,然後把它們藏起來。現在,我的主人在HEAD。git存儲更改適用於新分支?

但現在,我想檢索這些更改,但要從主分支的HEAD版本分支出的新分支。

我該怎麼做?

+1

我認爲您正在尋找? http://stackoverflow.com/questions/556923/how-to-merge-my-local-uncommitted-changes-into-another-git-branch – zx1986

回答

274

標準程序不起作用嗎?

  • 進行更改
  • git stash save
  • git branch xxx HEAD
  • git checkout xxx
  • git stash pop

短:

  • 進行更改
  • git stash
  • git checkout -b xxx
  • git stash pop
+39

更短:'git checkout -b xxx' – eckes

+25

只是爲了澄清@eckes 'git checkout -b xxx'是替代做'git branch xxx HEAD'然後'git checkout xxx'。爲了實現OP所需要的,你還需要執行'git stash'命令。 – Simon

+9

另一個捷徑:'git stash'相當於'git stash save' – sfletche

190

既然你已經藏匿更改,所有你需要的是這一個班輪:

  • git stash branch <branchname> [<stash>]

從文檔(https://www.kernel.org/pub/software/scm/git/docs/git-stash.html):

創建並簽出一個名爲< BRANCHNAME新分支>從該< 藏匿>在最初創建提交開始,適用記錄在< 的變化將>存儲到新的工作樹和索引中。如果成功,和< 藏匿>是形式藏匿@的基準{< 修訂>},它然後丟棄< 藏匿>。當沒有給出< 存儲器>時,應用最新的一個。

如果您運行git存儲保存的分支發生了足夠多的變化,git存儲應用因衝突而失敗,這非常有用。由於在git存儲運行時HEAD的提交之上應用了存儲,因此它將恢復原始存儲的狀態而不產生衝突。

+3

對於單個stash,這是要走的路。因爲Git將應用最新的存儲,所以不需要存儲名稱引用,切換到新分支並在1個命令中應用存儲。 – sinisterOrange

+0

@RodneyGolpe這似乎也適用於'主'藏匿?我想要做的是,從'主',git存儲,然後我會期待'git stash branch [branchname]將存儲應用到一個新的分支,讓主人沒有編輯? –

+2

@DavidDoria在返回主人之前,您必須將更改提交到新分支。 –