[英]git CLI commands for stage/unstage hunks/lines like sourcetree
[英]Git interactive unstage part of a file or by hunks
git add -p
用于git checkout -p
更改, git checkout -p
以交互方式丢弃更改。 我怎样才能取消对索引的更改?
(我认为git unstage -p
或git reset HEAD -p
可能会起作用。)
如果我没记错的话,您想要的是交互式地取消大块头吗? 我认为git reset -p
正是这样做的。 它的提示信息甚至就像Unstage this hunk?
同样来自手册:
这意味着 git reset -p 与 git add -p 相反,即您可以使用它来选择性地重置大块头。 请参阅 git-add(1) 的“交互模式”部分以了解如何操作 --patch 模式。
我发现这个答案在学习登台时非常有帮助,所以我想我会修改它以取消登台,因为我还没有在 stackoverflow 上找到一个关于“如何取消登台一行或部分文件?”的完整答案。 题。
正如@manojlds 所说,您可以使用git reset --patch <filename>
(或简称-p
),并且 git 将开始将您的文件分解为它认为合理的“大块头”(文件的一部分)。
然后 Git 会提示你这个问题的一个变体:
Unstage this hunk [y,n,q,a,d,g,/,j,J,k,K,s,e,?]?
以下是每个选项的说明:
关于e手动编辑的注意事项:使用上述编辑 (e) 模式时要格外小心,因为它不直观。 我将包含并修改内嵌 git 文档:
# To remove '+' lines, make them ' ' lines (context).
# To remove '-' lines, delete them.
# Lines starting with # will be removed.
为清楚起见修订:
+
开头的行都是当前暂存要添加的行,现在将取消暂存。 为防止+
行不被暂存(即,将它们保留为暂存更改),请将初始+
替换为空格字符。-
开头的行是当前暂存要删除的行,现在将取消暂存。 为了防止-
行不被暂存(即,将它们保留为暂存更改),完全删除每一行。之后,您可以使用:
git diff --staged
以检查您是否已取消暂存/暂存正确的更改git add -p
错误地删除了大块头git commit -v
可在您编辑提交消息时查看您的提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.