当我在 Git 中对文件进行更改时,如何仅提交部分更改?
例如,我如何才能只提交文件中已更改的 30 行中的 15 行?
您可以使用git add --patch <filename>(或-p简称),git 将开始将您的文件分解成它认为合理的“大块”(文件的一部分)。然后它会提示你这个问题:
git add --patch <filename>
-p
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
手动编辑当前大块
然后,您可以通过将+/-替换为手动编辑大块#
+
-
#
? 打印大块帮助
如果该文件尚未在存储库中,您可以先执行git add -N <filename>. 之后你可以继续git add -p <filename>。
git add -N <filename>
git add -p <filename>
之后,您可以使用:
git diff --staged
git reset -p
git commit -v
请注意,这与git format-patch命令大不相同,命令的目的是将提交数据解析为.patch文件。
git format-patch
.patch