Git- 同步工作流:提交部分修改并安全同步

91 阅读3分钟

Git- 同步工作流:提交部分修改并安全同步

适用场景

当你在本地有多项修改(包括修改过的文件和新文件),但出于以下原因,只想提交其中一部分,同时需要和远程仓库同步时,遵循此流程:

  • 部分修改尚未完成,无法形成一个完整的提交。
  • 部分修改是仅供本地调试用的,永远不想上传到远程。

核心原则

先在本地把“要提交的”和“不想提交的”分清楚,再与远程同步。先 commit,再 pull,最后 push。


详细操作步骤

第 1 步:精准暂存要提交的文件

目的:明确告诉 Git 哪些更改是你这次打算提交的。

  • 命令行

    Bash

    # 使用 git add <文件名> 精准添加,可以一个一个或一次多个
    git add <文件1.cpp>
    git add <文件2.h>
    
  • VS Code 图形界面

    1. 打开左侧的“源代码管理”面板。
    2. 在“更改”列表中,只点击你想要提交的那些文件旁边的 + 号。
  • 检查:

    运行 git status,确认文件被正确地分在了“Changes to be committed”(待提交的更改)和“Changes not staged for commit”(未暂存的更改)两个区域。


第 2 步:储藏所有其他修改

目的:将所有“未暂存”和“未跟踪”的修改暂时隐藏起来,创造一个干净的工作区,为后续的 pullcommit 操作做准备。

  • 命令行(推荐在 VS Code 的集成终端中执行此命令以确保精确):

    Bash

    # -k 参数保留暂存区,-u 参数包含未跟踪文件,-m 参数添加说明
    git stash push -k -u -m "储藏本地临时修改"
    
  • VS Code 图形界面:

    VS Code 的默认“储藏”按钮可能会把所有内容(包括暂存区)都储藏起来,因此执行此特定操作时,强烈建议使用上面的命令行。

  • 检查:

    运行 git status,此时应该只能看到“Changes to be committed”中的文件,工作目录提示是干净的。


第 3 步:提交已暂存的更改

目的:为你想要分享的工作创建一个安全的、永久的本地存档点。

  • 命令行

    Bash

    git commit -m "清晰地描述本次提交的内容,例如:完成用户登录功能"
    
  • VS Code 图形界面

    1. 在“源代码管理”面板顶部的输入框中填写提交信息。
    2. 点击上方的 对勾 ✔️ 按钮。
  • 检查:

    运行 git status,会提示你的分支领先于远程分支(Your branch is ahead of 'origin/...')。


第 4 步:与远程仓库同步

目的:在推送你的代码前,先获取他人的最新更新,确保你的提交是建立在最新版本之上的。

  • 命令行

    Bash

    # 推荐使用 rebase 保持提交历史的整洁
    git pull --rebase
    
  • VS Code 图形界面

    1. 点击 ... (更多操作) 菜单。
    2. 选择 拉取(变基)(Pull (Rebase))
  • 注意:

    如果此步骤发生合并冲突 (Conflict),请先在编辑器中手动解决冲突,然后根据 Git 的提示完成后续操作(对于 Rebase,是 git add <冲突文件> -> git rebase --continue)。


第 5 步:推送到远程仓库

目的:分享你的工作成果。

  • 命令行

    Bash

    git push
    
  • VS Code 图形界面

    1. 点击 ... (更多操作) 菜单。
    2. 选择 推送 (Push)
  • 检查:

    命令成功执行,没有报错。你的提交已经上传到远程仓库。


第 6 步:恢复本地的临时修改

目的:把你之前隐藏起来的工作恢复回来,继续你的开发。

  • 命令行

    Bash

    git stash pop
    
  • VS Code 图形界面

    1. 点击 ... (更多操作) 菜单。
    2. 选择 存储 (Stash) -> 弹出最新储藏 (Pop Latest Stash)
  • 检查:

    运行 git status,你之前未提交的修改现在又出现在了“更改”列表中。


流程总结(快速回顾)

  1. git add <要提交的文件>
  2. git stash push -k -u
  3. git commit -m "..."
  4. git pull --rebase
  5. git push
  6. git stash pop