在Git中仅提交文件部分更改
你可以使用git add --interactive
或git add -p
,然后使用git commit
(而不是git commit -a
);请参考git-add手册中的交互模式,或者简单地按照指示操作。
现代Git也有git commit --interactive
(和git commit --patch
,它是交互式提交中的修补程序选项的快捷方式)。
如果您更喜欢从GUI中进行操作,则可以使用git-gui。您只需右键单击标记要包含在提交中的块,然后选择:
Stage Hunk For Commit
如果您想添加块的特定行,则还可以选择要添加的行,然后右键单击它们并选择:
Stage Lines For Commit
我个人发现使用git add -i
比较容易。其他Git GUI,例如QGit或GitX,也可能具有此功能。
你可以使用:
git add --patch
或者简短的:
git add -p
Git会将你的文件分解成它认为是合理的“块”(文件的一部分)。然后会提示您这个问题:
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
以下是每个选项的描述:
- y 将此块暂存至下次提交
- n 不将此块暂存至下次提交
- q 退出;不将此块或此块之后的块暂存至下次提交
- a 将此块和文件中的所有后续块暂存至下次提交
- d 不将此块或文件中的任何后续块暂存至下次提交
- g 选择一个要去的块
- / 对给定正则表达式查找匹配的块
- j 离开此块未决,查看下一个未决块
- J 离开此块未决,查看下一个块
- k 离开此块未决,查看前一个未决块
- K 离开此块未决,查看前一个块
- s 将当前块拆分成更小的块
- e 手动编辑当前块
- 然后,您可以通过将
+
/-
替换为#
来手动编辑块(感谢veksen)
- 然后,您可以通过将
- ? 打印块帮助
如果文件尚未在存储库中,您可以先执行git add -N
。之后可以继续使用git add -p
。
之后,您可以使用:
git diff --staged
检查您是否暂存了正确的更改git reset -p
取消暂存错误添加的块git commit -v
在编辑提交消息时查看提交记录。
请注意,这与git format-patch
命令远不相同,其目的是将提交数据解析为.patch
文件。
参考资料: Git工具-交互式暂存