如何仅在变更集中暂存行删除?

How to only stage line deletions in a changeset?

我已经在一个特定的文件中编码了太长时间而没有提交,我最终遇到了这样一种情况,我想提交删除一行代码的功能 (A)。但是,在我的文件中,我还对功能 (B) 进行了工作,它添加了一行新代码来代替功能 (A) 删除的代码。

为了提交功能(A),我想提交删除原始行的更改。我不想提交从功能 (B) 添加新行的更改。

如何只提交行的删除,而将添加保留为未暂存的更改?

您可以使用 git add --edit to edit 差异。 运行 git add --edit,搜索相关行并删除包含您为 B 添加的代码的行。它应该以 + 开头。您应该看到要为 A 删除的行,它应该以 - 开头(保留它)。

编辑 diff 不应修改您的工作目录,但我会备份文件以防万一!

如果您正在寻找 GitKraken 答案:当您单击一个文件并在大块视图中查看更改时,您可以通过单击出现在行号之间的“+”号来分别添加每个更改的行:

在删除的行前面单击此按钮将暂存它,并将显示文件中的所有其他更改保留为未暂存。