[英]Git commit squashing (rebase -i): how do commits actually work?
我不太明白如何用git rebase -i壓縮提交。 我有一件事想知道:
如果我的rebase -i產生以下列表:
pick A Last commit
pick B Commit
pick C Some other commit
我應該壁球犯A和B或B和C嗎? 問題是,在這種情況下,git表示它將把D..A重新基於D(D是此之前的最后一個提交),而不是C..A重新基於C,這對我來說很有意義。 D根本沒有顯示,那么為什么這樣說呢?
事實是,git術語中的D..A
意味着“從D到A,不包括D本身”。 如果您查看git-rev-list
手冊頁,將會看到
表示法“
<commit1>..<commit2>
”可以用作“^<commit1> <commit2>
”的^<commit1> <commit2>
這意味着“列出所有包含在<commit2>
中但不包含在<commit1>
中的<commit1>
。並且D
本身所做的更改也包含在D
commit中 。因此,它不包括在表示為D..A
列表中。
這就是為什么說git rebase -i D
影響D..HEAD
是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.