2017-10-05 83 views
0

目前正在進行到git rebase的一個分支到另一個分支(這需要一些適應性和很多時間),我們需要在生產(另一個分支)上執行一個修補程序。我們是否可以「藏匿」正在進行的git rebase

有沒有一種辦法:

  1. 結帳是分公司生產沒有失去在這個復位過程中所做的工作的?
  2. 做生產部門的工作+承諾
  3. 跳回到那個rebase進程完成?
+0

我不認爲有一個內置的方式來做到這一點。您必須手動備份'.git/rebase-apply'和'.git/ORIG_HEAD'以及其他可能的內部文件,然後中止rebase在其他分支上工作,然後將備份的文件放回原位。簡單地克隆repo並在克隆上執行修補程序或在中止rebase之前備份整個repo會更容易。 –

+0

這匹配我想我給的答案。謝謝。 – samb

回答

1

我按原樣離開了項目,並將其git clone作爲其他文件夾。我將編碼並將修補程序提交到該新文件夾的生產分支中,並在準備就緒時將它們推回到原始項目文件夾。

+0

推送到非裸倉庫有一些注意事項,請參閱https://stackoverflow.com/q/1764380/279627 –

0

簡短的回答是否定的。某些項目(如索引,HEAD和正在進行的重定信息)存儲在工作樹中或與其關聯。

如您在自己的答案中所建議的那樣,您可以創建一個新的克隆;或者使用Git 2.6或更高版本,請使用git worktree add。 (該git worktree功能將出現在2.5,但有修復之後小改進的長細流的簡單倉促,所以這個工作最好在最新版本的Git)

做什麼git worktree add是創建一個使用額外的工作樹現有存儲庫。這與創建新克隆類似,只不過底層.git存儲庫是直接共享的。每增加一個工作樹都有自己單獨的指數,所以不是指數工作樹,你現在有工作樹一個指數。而不是HEAD,每個工作樹有一個HEAD,依此類推。

git worktree add有一個嚴格限制:每個工作樹必須位於一個單獨的分支中。因此,如果您的主工作樹(分支中間的樹)位於分支develop上,則您添加的工作樹不能位於分支develop上。如果您需要或需要,請繼續並使用單獨的克隆。 (你從來沒有真的需要但它的細節變得棘手。)

相關問題