在Git中只提交一部分文件
当我在Git中更改文件时,如何才能仅提交一些更改?
例如,如何在文件中更改的30行中只提交15行?
你可以使用git add --patch <filename>
(或简称-p
),git会开始将你的文件分解成它认为合理的“hunk”(文件的一部分)。 然后它会提示你这个问题:
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
以下是每个选项的说明:
如果该文件还没有在存储库中,您可以先执行git add -N <filename>
。 之后,您可以继续使用git add -p <filename>
。
之后,您可以使用:
git diff --staged
检查你是否执行了正确的更改
git reset -p
to unstage misckedly add hunks
git commit -v
在编辑提交消息时查看您的提交。
请注意,这与git format-patch
命令大不相同,该命令旨在将提交数据解析为.patch
文件。
未来的参考:https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging
你可以使用git add --interactive
或者git add -p <file>
,然后使用git commit
( 而不是 git commit -a
); 请参阅git-add联机帮助页中的交互模式,或者只需按照说明进行操作。
现代Git也有git commit --interactive
(和git commit --patch
,这是在交互提交中修补选项的捷径)。
如果你更喜欢用GUI来做,你可以使用git-gui。 你可以简单地标记你想包含在提交中的块。 我个人觉得比使用git add -i
更容易。 其他git GUI,如QGit或GitX,也可能具有此功能。
git gui在diff视图下提供了这个功能。 只需右键点击你感兴趣的行,你应该看到一个“阶段这条线提交”菜单项。
链接地址: http://www.djcxy.com/p/65.html