我知道我有 git add -p 来手动选择要添加到索引的 block 。不过,我正在寻找一种使用 Git CLI API 以编程方式添加某些 block 的方法。
这可以通过 CLI 实现吗?还是我需要为我正在使用的 C# 进行 API 绑定(bind)?
最佳答案
我去查看了 git add -p
的工作原理。你甚至不想知道。
实际上,它解析 git diff
输出(实际上是 git diff-files -p
),并手动处理差异。它会向您显示一个大块,如果您需要它,它会将其附加到其正在运行的差异中,并最终使用生成的差异运行 git apply --cached 。
我强烈建议您使用任何可用的 API,而不是试图说服这个 1,600 行补丁操作脚本执行您想要的操作。
值得注意的部分包括 @hunk = coalesce_overlapping_hunks(@hunk) 周围的区域,它刚刚处理完所有帅哥的问题循环,并且即将为您将它们压缩成一个差异,大约 my %patch_modes = ...其中描述了与实际 git 工具的所有交互;您可以看到它是如何基于我上面显示的命令构建的。
关于c# - 如何以编程方式将 block 添加到 Git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350162/