You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Git中如何排除已修改文件(或特定代码行)的提交与暂存?

Git中如何排除已修改文件(或特定代码行)的提交与暂存?

嗨,这个需求太常见了!我平时开发也经常碰到这种情况——本地改了仓库里已有的文件(比如配置文件加了本地测试参数),不想不小心提交上去,还要避免事后重置提交的麻烦。下面给你几种实用的解决方法:

一、排除整个已修改文件的提交

如果是整个文件的本地修改都不想提交,有两个常用命令可以帮你暂时“隐藏”这个文件的修改状态:

  • 方法1:使用git update-index --assume-unchanged <文件名>
    这个命令会告诉Git:“我保证不会改这个文件,你不用再检查它的变化了”。执行后,git status就不会再显示这个文件的修改,也不会不小心把它加入暂存区。
    如果之后需要恢复追踪这个文件的修改,执行:git update-index --no-assume-unchanged <文件名>

  • 方法2:使用git update-index --skip-worktree <文件名>
    这个更适合本地修改不想被远程更新覆盖的场景(比如本地配置文件)。当远程仓库的这个文件有更新时,Git会跳过你的本地修改,不会强制覆盖它。
    恢复追踪的命令是:git update-index --no-skip-worktree <文件名>

小提示:这两个命令都是本地生效的,不会同步到远程仓库,所以其他开发者不受影响。

二、排除特定代码行的提交(部分暂存)

如果只是文件里某几行修改不想提交,只想暂存部分内容,可以用交互式暂存的方法:

  • 方法1:交互式添加(git add -p <文件名>
    执行这个命令后,Git会把文件的修改分成一块一块的“补丁”,然后逐个询问你是否暂存:

    • 输入y:暂存当前补丁
    • 输入n:跳过当前补丁(不暂存)
    • 输入e:编辑当前补丁,你可以手动删掉不想提交的代码行,保存退出后,只有剩下的内容会被暂存
      完成后,你就可以提交暂存的部分,剩下的修改会留在工作区。
  • 方法2:先全加再撤销部分暂存(git reset -p <文件名>
    如果你已经不小心把整个文件暂存了,也不用慌:先执行git add <文件名>把所有修改暂存,然后用git reset -p <文件名>交互式地撤销不想提交的补丁,操作选项和上面一样,最后提交剩下的暂存内容即可。

这样就能精准控制哪些内容提交,哪些留在本地啦!

备注:内容来源于stack exchange,提问作者Ozan BAYRAM

火山引擎 最新活动