c# - 如何以编程方式将 block 添加到 Git 存储库?

标签 c# git

我知道我有 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/

相关文章:

git - Dart 包依赖于 git repo 的子目录

git - 使用 git-tfs 克隆 TFS 存储库

c# - Automapper:检查 MapFrom 中的空值

c# - 正则表达式 - 提取子串

C# 泛型和类型检查

Git 从当前 checkout 的 master 创建分支?

c# - 流利的 C# 生成器

c# - 通过Datatable在DataGridView中添加Combobox

android - 如何删除存储库并在 Android studio 中添加新存储库?

ruby-on-rails - 推送到 Heroku 时无法从远程存储库读取(Rails 教程 5)