You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git如何分两次提交推送不同文件:先B、C后移动的A?

分步实现两次提交的Git操作

这事儿很简单,有两种常用方法能搞定你的需求,我都给你拆解清楚:

方法一:用git commit --only直接提交指定文件(推荐,更快捷)

因为你已经把B.txt和C.txt加入暂存区了,直接用这个命令就能精准提交这两个文件的变更,完全不影响暂存区里A.txt的移动操作:

  • 执行提交命令:
    git commit --only B.txt C.txt -m "feat: update B.txt and C.txt"
    

    小提示:这个命令的作用是专门提交你指定的文件,暂存区里的其他变更(也就是A.txt的移动)会原封不动保留着,不会被提交

  • 推送第一次提交到远程:
    git push
    
  • 现在暂存区还留着A.txt的移动变更,直接提交它:
    git commit -m "refactor: move A.txt to someDirectory/"
    
  • 推送第二次提交到远程:
    git push
    

方法二:手动调整暂存区(适合理解Git暂存区原理)

如果你想手动控制暂存区的内容,或者你的Git版本低于2.23(没有git restore命令),可以用这种方法:

  • 先确认当前状态,看看暂存区里的内容:
    git status
    
    你会看到A.txt的移动、B和C的修改都在暂存区里
  • 把A.txt的移动变更从暂存区移除,放回工作区:
    # Git 2.23+ 用这个
    git restore --staged A.txt someDirectory/A.txt
    # 旧版本Git用这个
    git reset HEAD -- A.txt someDirectory/A.txt
    
  • 再次执行git status确认:此时暂存区只有B和C的变更,A的移动会显示在未暂存区域
  • 提交B和C的变更:
    git commit -m "feat: update B.txt and C.txt"
    
  • 推送第一次提交:
    git push
    
  • 把A的移动变更重新加入暂存区(Git会自动识别这是移动操作,不用管原A.txt的删除):
    git add someDirectory/A.txt
    
  • 提交A的移动操作:
    git commit -m "refactor: move A.txt to someDirectory/"
    
  • 推送第二次提交:
    git push
    

额外小提示

如果不想分两次推送,也可以等两次提交都完成后,只执行一次git push,Git会把本地的两次提交一次性推送到远程,效果和分两次推送是一样的~

内容的提问来源于stack exchange,提问作者Irbis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:27:24