用于 stage/unstage hunks/lines 的 git CLI 命令,例如 sourcetree

Posted

技术标签:

【中文标题】用于 stage/unstage hunks/lines 的 git CLI 命令,例如 sourcetree【英文标题】:git CLI commands for stage/unstage hunks/lines like sourcetree 【发布时间】:2015-08-26 23:53:48 【问题描述】:

Sourcetree 可以轻松地暂存和取消暂存大块。也很容易从一个大块和舞台中选择特定的线条或取消它们。我试图弄清楚如何从命令行执行相同的操作。

我尝试在 sourcetree 中执行每个操作并显示命令历史面板。当我执行这些操作时,它不显示任何命令。对于其他操作,它工作正常。

在命令行中,我在交互模式下使用git add,选择补丁选项,然后选择一个包含多行更改的文件。提示是:“暂存这个大块 [y,n,q,a,d,/,e,?]?”。如果我选择“?”选项它输出此帮助文本:

y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

's' 选项看起来很适合将单独的行从大块中分出。但是,当我输入它时,git 只是再次输出帮助文本。

谁能告诉我应该在文档的哪个位置查找?

【问题讨论】:

其实你做的一切都是对的。如果大块已经太小,则可能会发生这种情况,而不能将其拆分为更小的块。 可以在 sourcetree 中拆分同一个块。 我不知道 SourceTree。请尝试手动编辑('e')大块,看看会发生什么。 我在多行更改中的一行开头添加了一个“+”并保存了文件。得到这个输出:暂存这个块 [y,n,q,a,d,/,j,J,g,e,?]? e错误:补丁失败:changeme.txt:1错误:changeme.txt:补丁不适用您编辑的大块不适用。再次编辑(说“不”丢弃!)[y/n]? 是的,这可能会发生。这是一个相关的问题以及如何解决它:***.com/questions/3268596/… 【参考方案1】:

聚会迟到了,但它可能会帮助其他人寻找解决方案。

git 倾向于在同一个块附近添加行 - 如果你想逐行暂存代码,你可以在交互模式下编辑块。

修改文件后,输入:

git add -p

现在,您可以输入e,而不是s

这会让您进入编辑模式以更改大块。

如果您发现要在此特定大块中暂存的特定行,请确保将其 +- 保留在其中,并按照快速指南中的说明编辑其他行。

示例时间

假设我有以下更改:

-  allScriptsTimeout: 60000,
-  getPageTimeout: 60000
+  allScriptsTimeout: 180000,
+  getPageTimeout: 180000

但是,我只想暂存第一条更改的线路。如上所述,输入git add -p 并选择e

在编辑器中,将 - 更改为空格并删除您不想暂存的行。

假设我只想暂存+ allScriptsTimeout: 180000,,我将文件更改为:

-  allScriptsTimeout: 60000,
   getPageTimeout: 60000
+  allScriptsTimeout: 180000,

我们开始了,只有一行已上演,准备提交。

虽然很麻烦,但绝对可以在 git CLI 中添加单独的行 :)

【讨论】:

以上是关于用于 stage/unstage hunks/lines 的 git CLI 命令,例如 sourcetree的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

python 用于生成车库的唯一编号的脚本,用于文本广告系列。一个脚本用于创建XLS文件,另一个脚本用于单独创建

RSA非对称加密,私钥用于签名公钥用于验签;公钥用于加密私钥用于解密

Cas(用于身份验证)+ OpenLDAP(用于用户名、密码+角色和权限)+ Apache Shiro(用于授权)

用于加密的公钥;用于解密的私钥?

我已经使用了 3 个按钮,一个用于一周,一个用于一个月,一个用于一天,如果单击一周按钮,应该禁用日和月