在 Git 中如何将一个Commit的内容贴到旧的Commit中但不要提交

会有这个需求是因为我在修改前人的专案,然后发现在茫茫大海中指引我的,是VS Code旁边显示我做过哪些更改,但git还没储存的标记。
http://img2.58codes.com/2024/20140925IU4Q1vDlyV.png

我需要这些...所以产生了需求!

总之,结论就是先大胆Commit目前更新的内容,可以顺便取个版本tag(假设这版叫2.0.1)。

git add .git commit -m "修改了ABC..."git tag v2.0.1

接着切换到旧节点开新分支,此处的旧节点就是前一个节点所以直接用HEAD^即可,否则也可以用commit的hash编号代替,然后-b的参数可以直接开新分支(这里命名分支为workCompare)。

git checkout HEAD^ -b workCompare

然后这里就是关键,使出git cherry-pick --no-commit 要移过来的commit编号或分支,这里的--no-commit会让移过来的内容不要被commit,而是只加入到暂存区(add)而已。
(--no-commit也可以用-n代替)

git cherry-pick -n v2.0.1

最后用git status确认一下状态是加入了暂存区,所以再用git restore --staged .把所有档案还原回工作区,VS Code的标记就会开心地回来了~

git statusgit restore --staged .

缺点是过程中弄得有点杂乱,如果VS Code有设定或外挂可以指定让旁边的标记显示跟哪个版本的比对,感觉才是最好的解,或许有天找到了再来更新文章。

参考资料:
【状况题】如果你只想要某个分支的某几个 Commit?


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章