回答

收藏

在 Git 中只提交文件的一部分

技术问答 技术问答 278 人阅读 | 0 人回复 | 2023-09-12

当我在 Git 文件变更时,如何只提交部分变更?; u; ]9 W" k2 E& _2 r; A
例如,我怎样才能只提交文件中已更改的 30 行 15 行?
3 x8 F) l  V6 X! Y; Q5 M$ z" t                                                               
7 W# H9 Q. l" A    解决方案:                                                               
/ O1 c* C( ]( |- m8 N6 z# q                                                                您可以使用git add --patch (或-p简称),git 将您的文件分解为合理的大块(文件的一部分)。然后它会提醒你这个问题:& o% |) s. ]- T
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?以下是每个选项的说明:
2 w" D) t* |; s5 V, Iy 下次提交这个大块暂存: Q2 a8 X5 }0 x6 J2 @. q4 g6 Y) Z
n 不要为下一次提交暂存这个大块" |: N& _1 r* l  Y: _- ^2 S/ Y) \* Q
q退出; 不要上演这个帅哥或任何其他帅哥
5 q0 O, @6 d' Wa 这个大块和所有后来的大块暂存在文件中- w, I' O1 q4 I. E: z
d 不要将这个大块或任何后来的大块暂存在文件中% b. Y# y$ E" S0 B9 ]6 x
g 选个大块头* ^5 w% e7 _: n/ H
/ 搜索匹配给定正则表达式的块* p  D2 A, a& E. P" d
j 留下这个未确定的大块,看下一个未定的大块
$ |1 D3 `; ^3 m& vJ 留下这个大块,看下一个大块
6 B8 k; J6 {' ^; wk 让这个大块未定,请参考以前未定的大块- Y5 ]( ~( o( l+ A* a
K 留下这个大块还没看以前的大块9 O* O& ]3 M9 b6 k5 r# W2 I
s 将当前的大块分成更小的块3 M9 R. S% j/ P3 W
e7 j( X8 u. W# Y; P- V
目前大块手动编辑. i/ |. ^" T! E! R+ a2 ^( t5 _
然后,你可以通过 //-替换为手动编辑大块#1 @2 D& _. G3 o( _
? 打印大帮助
/ V: ?$ P& g5 `3 {! t# X
如果该文件尚未在存储库中,您可以先执行git add -N . 之后可以继续git add -p 。! }$ [  h, ]4 ~0 M
以后可以用:, H; v" |- M" Z2 e. ^- L
git diff --staged 检查您是否做出了正确的改变3 S" Z" D- z5 w0 Z- ~
git reset -p 取消舞台错误添加的帅哥
  L" M8 Z% A) k& X/ Agit commit -v 编辑提交信息时检查您的提交。
请注意,这与git format-patch命令大不相同。命令的目的是分析提交的数据.patch文件。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则