会有这个需求是因为我在修改前人的专案,然后发现在茫茫大海中指引我的,是VS Code旁边显示我做过哪些更改,但git还没储存的标记。
我需要这些...所以产生了需求!
总之,结论就是先大胆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?