通常我想壓縮垃圾分支中的幾十個提交,以在臨時服務器上測試出所有內容。特別是在使用具有問題自動關閉功能(如bitbucket)的問題跟蹤器時 - 我不想關閉當時提交消息中提到的問題,所以我需要壓扁。簡單的方法來壓縮多個提交?
必須有一些事情比單獨更改rebase或單獨更改每一條線更簡單,或者必須知道多少提交前是壁球的目標。
像「壁球的一切,直到這犯了哈希XXXXXX」
通常我想壓縮垃圾分支中的幾十個提交,以在臨時服務器上測試出所有內容。特別是在使用具有問題自動關閉功能(如bitbucket)的問題跟蹤器時 - 我不想關閉當時提交消息中提到的問題,所以我需要壓扁。簡單的方法來壓縮多個提交?
必須有一些事情比單獨更改rebase或單獨更改每一條線更簡單,或者必須知道多少提交前是壁球的目標。
像「壁球的一切,直到這犯了哈希XXXXXX」
是的,當你使用互動模式重訂,你可以通過標記它們壁球提交被壓扁。參見:
您也可以嘗試git merge --squash
這是一種更直接的方式和東西,你正在尋找 - https://stackoverflow.com/a/5190323/7274758
讓我們說你有以下提交集合
O - O - L1 - F1 - F2 - F3a - F3b - F4 - .... - FN
| | \_ master, HEAD
| \_ Fix for Issue 1 and so on.
|
\_ Last Tested. You would like to squash all from this point
重置頭L1 git reset --hard L1
O - O - L1 - F1 - F2 - F3a - F3b - F4 - .... - FN
| |
| \_ Fix for Issue 1 and so on.
|
\_ (Last Tested), master, HEAD
現在壁球一切,直到前面的頭(即FN)git merge --squash [email protected]{1}
O - O - L1 - F1 - F2 - F3a - F3b - F4 - .... - FN
| \
| \_ 0
|
\_ (Last Tested), master, HEAD
執行提交 - git commit
這將承諾從F1的所有更改到FN(SF1_FN)
O - O - L1 - SF1_FN
|
\_ master, HEAD
git checkout --orphan wip
git commit
如果你只是測試內容,你不需要祖先。
最自動的方法是使用git merge --squash
。你是否應該使用Libin Varghese的答案或者這個答案可能取決於你是否打算保留原始提交。如果不是,他說明的是直截了當的。但如果是這樣......
如果你有
A --- B --- C --- D <--(branch)
,你想壁球B
,C
和D
,你可以做
git checkout B^
git checkout -b squashed_branch
git merge --squash branch
git commit
,現在你必須
A --- B --- C --- D <--(branch)
\
BCD <--(squashed_branch)
希望我能接受這兩個答案,但是,我想保留原始提交。我想@Libin Varghese也考慮過這個,並且意在在分支到垃圾分支之後做些什麼。 – rzb