|
当我在 Git 文件变更时,如何只提交部分变更?
. d- Z4 h. N5 f7 G9 ~! R5 ? p例如,我怎样才能只提交文件中已更改的 30 行 15 行?
& F$ Q2 A9 C* K& O6 Z
$ R, E4 |8 ~/ y$ f* O, |7 G 解决方案: 2 u9 K H" i+ L) \5 j% n
您可以使用git add --patch (或-p简称),git 将您的文件分解为合理的大块(文件的一部分)。然后它会提醒你这个问题:; g8 U7 b( j# [
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?以下是每个选项的说明:& y7 r3 q% q9 H7 F* B& _' V
y 下次提交这个大块暂存
) A" p; B* q) |- P. u. J3 }4 Cn 不要为下一次提交暂存这个大块% N- V0 H, l1 T7 h9 J
q退出; 不要上演这个帅哥或任何其他帅哥
1 r. N' S5 W1 z9 I5 l; @a 这个大块和所有后来的大块暂存在文件中; o( Z5 {* F2 }# Z9 T
d 不要将这个大块或任何后来的大块暂存在文件中- N2 {: d# ^6 n( h4 _: g: x4 t3 O
g 选个大块头* a- w7 K6 }' F, c- W
/ 搜索匹配给定正则表达式的块/ L, X4 l+ k- T' H' W' ^$ M6 t
j 留下这个未确定的大块,看下一个未定的大块) e9 K$ L+ Q" Q
J 留下这个大块,看下一个大块! ?/ s2 m0 R& Y! t0 F7 c
k 让这个大块未定,请参考以前未定的大块& ]8 u' s: s# G
K 留下这个大块还没看以前的大块
8 F+ C8 b7 a1 G# ts 将当前的大块分成更小的块7 o, h; [2 ~* u0 a
e
5 I0 m f) Q7 D目前大块手动编辑3 q) N% c; N% w) e$ o& R# f, J- V
然后,你可以通过 //-替换为手动编辑大块#) h- D3 t$ S6 ] w- C, E Y
? 打印大帮助, p( F5 _) S: I0 u$ O' [
如果该文件尚未在存储库中,您可以先执行git add -N . 之后可以继续git add -p 。
/ g3 M) V8 Y2 L" T1 A以后可以用:7 ]# i: ?6 O+ {1 O3 b4 A
git diff --staged 检查您是否做出了正确的改变
1 M, J; p2 J' ?1 v4 j3 W( ugit reset -p 取消舞台错误添加的帅哥' i2 K0 t; D! F2 Y0 A. e
git commit -v 编辑提交信息时检查您的提交。请注意,这与git format-patch命令大不相同。命令的目的是分析提交的数据.patch文件。 |
|