有git add -p
进行更改,git checkout -p
以交互方式放弃更改。如何通过帅哥从索引中取消更改?
(我认为git unstage -p
或git reset HEAD -p
可能有用。)
答案 0 :(得分:55)
如果我没有弄错的话,你想要的是以交互方式取消爵士乐?我认为git reset -p
就是这么做的。它的提示信息甚至与Unstage this hunk?
同样来自手册:
这意味着git reset -p与git add -p相反,即你 可以用它来有选择地重置帅哥。请参阅“交互模式” git-add(1)部分学习如何操作--patch模式。
答案 1 :(得分:0)
我发现this answer在学习分期时非常有用,因此我认为我将其修改为不分期,因为我没有在stackoverflow上找到关于“如何git unstage一行或一部分内容的完整答案”。一份文件?”题。
正如@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
在编辑提交消息时查看您的提交。