用例。我已经提交了一个包含许多更改的文件,但我忘记为一个更小的副任务进行新的提交 - 从我在那里找到的一些个人过时的电子邮件中清理文件,这与更大的任务无关. 为了保持 git 工作流程的清洁,电子邮件的清理应该在第二次提交中进行。我现在需要将一个提交拆分为两个提交,这意味着也要拆分代码更改。
在 codium/vscode 的Source Control
窗格中,
在COMMIT
选项卡中,
我选择了一个文件(server.py),我需要在其中取回一些“错误”的行,其中包含错误的个人电子邮件。我可以看到旧文件和新文件之间的一种可视化git diff
(在最新提交之前和之后)。
现在我不想将错误的电子邮件从“旧文件”复制并粘贴回工作文件。
有没有办法使用 codium/vscode 的 git 函数更改回(撤消、编辑、取消暂存,不确定这里最好的词是什么)仅针对所选行的提交?
到目前为止还没有这方面的工具,但将来可能会成为一个功能?
您似乎无法逐行执行此操作 - 只有当您有冲突时才有可能,最好使用自 1.69.0 版(2022 年 6 月版)以来的漂亮 vscode 工作台及其3 路合并编辑器。但是,该编辑器无法删除有冲突的行,同时将这些删除的行添加到新文件中,这就是这里需要的。
解决方法
在根提交之后进行一个新的提交,该提交只有很小的更改,并且正好在“完整文件提交”之前。如果您随后使用完整文件进行后续提交,则已经进行了小的更改。这甚至不是一种解决方法,因为从问题的一开始就很清楚,但似乎没有其他答案:您将必须经历所有的小更改并对其进行新的小提交。如果不仅仅是一些自动样式更改,而是您需要逐个检查的各种电子邮件更改,例如在这种情况下,这可能是一项相当大的工作。
为了使这一步稍微容易一些,您仍然可以通过3 路合并编辑器合并完整文件和根文件。然后,您将通过从上面的完整文件复制并粘贴到两个下面的第三个窗口(=您的新“小提交”)手动添加小的更改,最后将第三个窗口保存为新文件。
此屏幕截图不是此处的意思,因为它正在处理有冲突的行,但它表明您可以在下面的文件窗口中手动更改内容:
主意
为了明确这里需要什么作为答案,使用带有3 路合并编辑器的工作台,您将拥有第三/第四个复选框(每侧一个),它将撤消所选文件中的步骤到根目录commit 有,然后将撤消步骤保存到新的第三个文件中,然后该文件中将包含撤消的提交行。因此,不仅是这个 3 路合并步骤(如下),还有一个 3 路拆分步骤。
到目前为止,这不在工具中: