你能从一个Git提交中挑选一个或多个代码段吗?

3
当我在工作区进行阶段性提交时,通常会使用-p选项来浏览每个更改块。我发现这很有用,可以确认我的更改并检查拼写错误和其他愚蠢的错误。
在我的开源开发工作中,当一个dev分支变得陈旧时,我通常会使用rebase。然而,有时我想在我的工作区测试一些东西,并且不想要整个分支,因为它很长并包含许多尚未合并的提交。我可以使用git cherry-pick,但那似乎会获取整个提交。有时这些提交很大,我不想要整个提交。
是否有任何方法可以通过cherry-pick抓取提交,但在将其应用于暂存区之前逐个检查提交块?
假设用户随后只对他们想要的提交组件进行修改。
1个回答

3

不确定这是否是最简单的方法,但从原子性上看,它可能如下所示

# first you cherry-pick without committing
git cherry-pick -n <commit-hash>

# then you unstage everything
git reset

# and stage hunk by hunk as usual
git add -p

# finally you discard everything else
git stash --keep-index

1
感谢您的回答,这似乎是一个直接的处理方式。我很惊讶在git中没有与-n选项对应的-p选项。我意识到如果与-x选项一起使用可能会有影响,并且可能不是最初的用例之一。无论如何,这也可以编写脚本来实现,所以谢谢! - Lucas Roberts
如果您只想挑选可以应用的补丁块,而cherry-pick不适用,则无法起作用。 - Hi-Angel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接