2013-03-09 50 views
0

有時候在一家分公司工作,最終獲得的比您計劃的要多,並且認識到有必要分出您在另一家分公司所做的一些工作。如何從git分支中分割出工作?

E.g.當修復你遇到的錯誤或添加文檔時,或者在路上注意到某些小功能修復時。

什麼是最簡單的方法來分解你已經做了一個新的分支的一些工作?

回答

0

使用checkout -i以交互方式選擇想要進入新分支的位,提交該分支,然後在大分支上使用git revert刪除您分出的部分。

E.g.

---A   - @{upstream} 
    \ 
    \--B--C - LargeBranch 

創建一個新的分支SplitBranch,從相同的上游分支LargeBranch是基於,並以交互方式選擇的變化,你想有:

git checkout -b SplitBranch @{upstream} 
git checkout -i LargeBranch 
git commit 

,導致:

---A   - @{upstream} 
    |\ 
    | \--B--C - LargeBranch 
    \ 
    \--D - SplitBranch 

然後,通過使用git revert輕鬆刪除已拆分爲SplitBranch的內容:

git checkout LargeBranch 
git revert halfFoo 

---A   - @{upstream} 
    |\ 
    | \--B--C--E - LargeBranch, E is inverse of D. 
    \ 
    \--D  - SplitBranch 

現在,LargeBranch不再包含您轉入SplitBranch的內容。

0

我會創建一個新的分支,以便在一些方便的地方接收「太多」的變化,git cherry-pick從原始提交到它,然後git rebase -i他們出來的原始。櫻桃採摘前可能會分割一些提交。

爲了確保沒有任何東西丟失,請在HEAD處以git branch save開頭,這樣您就可以解決現有分支問題;吹一下,重新開始。