拆分一个 magit 中的代码块

82

我附近有2个非常接近的编辑(因此属于同一块),我想单独提交它们。在Magit中是否可以从块内部拆分一部分?

3个回答

128

你可以使用键盘快捷键Ctrl+Space(C-SPC)正确设置标记,magit 将仅提交选择的部分。


我总是将标记设置在区域底部,并将光标移动到顶部,以便对区域进行分期或取消分期,因为之前采用其他方式时曾出现问题(具体情况我无法回忆起来)。具体情况因人而异。 - phils
2
关于我之前的评论,我最近了解到这个问题的原因是,当你取消或者暂存区域时,光标必须在你要操作的区域内。当然,如果你反过来做了,你可以使用 C-x C-x 来交换光标和标记。 - phils
在使用transient-mark-mode时会有不同的行为吗?因为我总是从上到下选择,从未出现问题。 - Dominik Honnef
3
我不仅需要设定标记(C-SPC),还需要再按一次C-SPC来启用“瞬态标记模式”(transient-mark-mode)。 - Vebjorn Ljosa
1
要明确的是:Magit 只会提交所选内容。无论你如何选择,例如我使用 Shift + <箭头> 选择一部分 hunk 并按 s 键将所选部分暂存。 - jfs

61

您还可以使用-+来减小或增大差异中块的大小(0重置),但Dominikh的回答是最重要的内容。


这对我不起作用,这在较新版本的 Magit 中被移除了吗?还是这是我的设置中特有的问题? - Mike H-R
Mike H-R:假设您在magit-status缓冲区中,则据我所知,这仍然可以正常工作。 - phils
1
是的,我弄错了,你需要在以@@开头的行上按下+或-(hunk信息行),而不是在hunk内部按下。 - Mike H-R

0

Magit 重用了 diff-mode,但在其 magit-revision-mode 中没有像 VC 包那样暴露出许多 diff-mode 命令。

例如,您可以调用通常在 diff-mode 中为 C-c C-sdiff-split-hunk


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