回答

收藏

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

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

当我在 Git 文件变更时,如何只提交部分变更?
& m9 Q; x* {7 i) ^5 `$ m! g5 K例如,我怎样才能只提交文件中已更改的 30 行 15 行?
9 z5 @, U$ x% Z                                                                ' k9 s4 |, E& y5 j! G/ A1 w* V
    解决方案:                                                               
$ _/ r4 d# f$ y4 S) ?" K$ n                                                                您可以使用git add --patch (或-p简称),git 将您的文件分解为合理的大块(文件的一部分)。然后它会提醒你这个问题:
' S6 c+ ~; m: T2 @$ f/ sStage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?以下是每个选项的说明:
7 z+ _9 ~' Q1 ?2 _3 k6 ^% m2 wy 下次提交这个大块暂存
. j5 n4 Y$ I# }0 {9 Zn 不要为下一次提交暂存这个大块
- S" D+ X$ |# u/ Bq退出; 不要上演这个帅哥或任何其他帅哥$ F% g6 X* a: }6 |
a 这个大块和所有后来的大块暂存在文件中, e/ S9 m3 h; t1 |( i; H4 z
d 不要将这个大块或任何后来的大块暂存在文件中# E4 ]" Q! h8 i# _
g 选个大块头
- h% d' W0 x4 c+ p7 ?/ 搜索匹配给定正则表达式的块- D; j$ R/ ?- S# B. L3 x! |
j 留下这个未确定的大块,看下一个未定的大块
4 y3 C6 ?% g: _9 g2 zJ 留下这个大块,看下一个大块8 [5 X, A8 |0 ~
k 让这个大块未定,请参考以前未定的大块
  [# o7 \4 M& L. h! g/ S7 S: `K 留下这个大块还没看以前的大块
' ^$ [$ }9 W: a- V$ ]s 将当前的大块分成更小的块  I5 J# ~; o- q6 y
e+ U+ e/ f0 l+ R
目前大块手动编辑( O7 z* f% x- n8 [; ?
然后,你可以通过 //-替换为手动编辑大块#& |5 ~" s+ W8 ]& S, e
? 打印大帮助
% C; [5 ?( z' g3 P' u8 f4 ~
如果该文件尚未在存储库中,您可以先执行git add -N . 之后可以继续git add -p 。+ @# }/ M& y) r
以后可以用:+ ?6 M! A7 b3 g8 `/ g% t+ r
git diff --staged 检查您是否做出了正确的改变
: M( i/ ^( ~1 E0 G- |8 S" ogit reset -p 取消舞台错误添加的帅哥8 S# O! l+ w* g4 x# Q
git commit -v 编辑提交信息时检查您的提交。
请注意,这与git format-patch命令大不相同。命令的目的是分析提交的数据.patch文件。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则