git cherry-pick 在windows上的坑点

git cherry-pick 指令用于复制一些提交,比如我有一个新分支,我想直接把旧分支的某个提交连带着对应的代码改动也一起复制过来

用法

单个commitId

git cherry-pick [旧分支的commitId] 即可,不用管这个commitid在哪个分支上

多个commitId

如果是多个那就 git cherry-pick commitid1 commitid2 即可,两个commitid中间用空格隔开

选择一个区间

如果是想要复制一个区间,但是又懒得一个个输入,那么只需要找起点和终点的commitId即可

git cherry-pick commitid1..commitid2, 此时commitid1是起点,commitid2是终点,这样复制过来的提交是不包含起点的,也就是不包含commitId1

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

那么坑点就来了

神坑

所有能搜到的技术文档和博客,以及AI问答,都告诉你^是包含起点的,但是在windows的cmd上或者cmder,或者Terminal 上输入,都不会包含起点


image.png

用git log 输出可以看出,带^ 和不带 没有区别,输出的内容一样,都是不包含起点

这是因为^ 在windows的终端上是转义符,而linux/unix上转义符是\,所以这里的^就被当成转义符吞掉了

解决

既然^是转义符,那么多转义一次就行了,额外把这个^给转义掉
所以在windows上的cherry-pick 就得改成
git cherry-pick commitid1^^..commitid2 多加一个^

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容