git cherry-pick 在windows上的坑點

git cherry-pick 指令用于復(fù)制一些提交,比如我有一個新分支,我想直接把舊分支的某個提交連帶著對應(yīng)的代碼改動也一起復(fù)制過來

用法

單個commitId

git cherry-pick [舊分支的commitId] 即可,不用管這個commitid在哪個分支上

多個commitId

如果是多個那就 git cherry-pick commitid1 commitid2 即可,兩個commitid中間用空格隔開

選擇一個區(qū)間

如果是想要復(fù)制一個區(qū)間,但是又懶得一個個輸入,那么只需要找起點和終點的commitId即可

git cherry-pick commitid1..commitid2, 此時commitid1是起點,commitid2是終點,這樣復(fù)制過來的提交是不包含起點的,也就是不包含commitId1

如果想要包含起點呢
git cherry-pick commitid1^..commitid2,多加一個^ 就能包含上起點了

那么坑點就來了

神坑

所有能搜到的技術(shù)文檔和博客,以及AI問答,都告訴你^是包含起點的,但是在windows的cmd上或者cmder,或者Terminal 上輸入,都不會包含起點


image.png

用git log 輸出可以看出,帶^ 和不帶 沒有區(qū)別,輸出的內(nèi)容一樣,都是不包含起點

這是因為^ 在windows的終端上是轉(zhuǎn)義符,而linux/unix上轉(zhuǎn)義符是\,所以這里的^就被當(dāng)成轉(zhuǎn)義符吞掉了

解決

既然^是轉(zhuǎn)義符,那么多轉(zhuǎn)義一次就行了,額外把這個^給轉(zhuǎn)義掉
所以在windows上的cherry-pick 就得改成
git cherry-pick commitid1^^..commitid2 多加一個^

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容