在Git中只提交一部分文件

当我在Git中更改文件时,如何才能仅提交一些更改?

例如,如何在文件中更改的30行中只提交15行?


你可以使用git add --patch <filename> (或简称-p ),git会开始将你的文件分解成它认为合理的“hunk”(文件的一部分)。 然后它会提示你这个问题:

Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?

以下是每个选项的说明:

  • Ÿ为下一次提交做好准备
  • ñ不要为下一次提交做好准备
  • 退出; 不要站在这个大块头或任何剩余的胖子身上
  • 一个阶段这个庞然大物和所有后来在文件中的大块头
  • d不要在文件中放置这个大块头或任何后来的笨蛋
  • g选择一个大块去
  • /搜索与给定正则表达式匹配的大块
  • j留下这个笨蛋,看下一个未定的大块头
  • J留下这个笨蛋,看下一个大块头
  • k离开这个大块未定,看到以前未定的大块
  • K离开这​​个大块未定,看到前面的大块
  • 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

    上一篇: Commit only part of a file in Git

    下一篇: hard with uncommitted files in the staging area