有時候在一家分公司工作,最終獲得的比您計劃的要多,並且認識到有必要分出您在另一家分公司所做的一些工作。如何從git分支中分割出工作?
E.g.當修復你遇到的錯誤或添加文檔時,或者在路上注意到某些小功能修復時。
什麼是最簡單的方法來分解你已經做了一個新的分支的一些工作?
有時候在一家分公司工作,最終獲得的比您計劃的要多,並且認識到有必要分出您在另一家分公司所做的一些工作。如何從git分支中分割出工作?
E.g.當修復你遇到的錯誤或添加文檔時,或者在路上注意到某些小功能修復時。
什麼是最簡單的方法來分解你已經做了一個新的分支的一些工作?
使用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
的內容。
我會創建一個新的分支,以便在一些方便的地方接收「太多」的變化,git cherry-pick
從原始提交到它,然後git rebase -i
他們出來的原始。櫻桃採摘前可能會分割一些提交。
爲了確保沒有任何東西丟失,請在HEAD處以git branch save
開頭,這樣您就可以解決現有分支問題;吹一下,重新開始。