【发布时间】:2018-11-10 15:03:50
【问题描述】:
我想git add 仅使用单个 shell 命令从文件中获取特定范围的行。我正在成像:
git add -c myfile.go@123..204
我不想使用 git add -i、git add -p 或 git -e(交互式 git 工具),因为我的文件很大并且有很多更改,而且我已经确切知道哪个我想要的线条。为了争论(明白吗?),假设我想在 2000 行文件myfile.go 中包含包含123-204 的行。
我也不想使用图形用户界面。我的电脑对于新程序来说太旧了,运行速度太慢了,屏幕太小了……随便。以上都是。 Github GUI、Sourcetree、(Atom|IntelliJ|VSC|.* 插件、KDiff、Kaleidescope……他们都出来了。
可以吗?
奖励积分:可以同时处理多个文件吗?
供参考:
两个相关的、但不重复的问题。都不符合我的需要:
- Commit specific lines of a file to git
-
Commit only part of a file in Git
- 这个评论让我觉得可以做到……Commit only part of a file in Git
Git 文档很接近,但没有雪茄:
【问题讨论】:
-
我认为你必须接受 --patch 是你得到的最接近的 lol
-
所以像 Sourcetree 这样的工具实际上必须像至少 4 个不同的 git 和/或文件操作步骤一样逐步完成,才能只上演一个微不足道的大块头?
-
但是我值得信赖的 TI-86 已经让我走到了这一步……我现在不能放弃它。
-
最有可能您需要寻找的是“管道”(低级数据结构操作)命令,而不是“瓷器”(高级版本控制)命令。
-
如果您可以使用所需的行构建补丁文件,
git apply --cached将在不触及工作树的情况下暂存这些更改。 implementation ofgit add --interactive似乎是用 Perl 编写的,并且在后台以这种方式工作。据我所知,它采用的方法是从补丁中提取部分(基本上是git diff输出),然后通过操作标题/上下文行将所需的部分重构为新的补丁文件。
标签: git