Git- 同步工作流:提交部分修改并安全同步
适用场景
当你在本地有多项修改(包括修改过的文件和新文件),但出于以下原因,只想提交其中一部分,同时需要和远程仓库同步时,遵循此流程:
- 部分修改尚未完成,无法形成一个完整的提交。
- 部分修改是仅供本地调试用的,永远不想上传到远程。
核心原则
先在本地把“要提交的”和“不想提交的”分清楚,再与远程同步。先 commit,再 pull,最后 push。
详细操作步骤
第 1 步:精准暂存要提交的文件
目的:明确告诉 Git 哪些更改是你这次打算提交的。
-
命令行:
Bash
# 使用 git add <文件名> 精准添加,可以一个一个或一次多个 git add <文件1.cpp> git add <文件2.h> -
VS Code 图形界面:
- 打开左侧的“源代码管理”面板。
- 在“更改”列表中,只点击你想要提交的那些文件旁边的
+号。
-
检查:
运行 git status,确认文件被正确地分在了“Changes to be committed”(待提交的更改)和“Changes not staged for commit”(未暂存的更改)两个区域。
第 2 步:储藏所有其他修改
目的:将所有“未暂存”和“未跟踪”的修改暂时隐藏起来,创造一个干净的工作区,为后续的 pull 和 commit 操作做准备。
-
命令行(推荐在 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 图形界面:
- 在“源代码管理”面板顶部的输入框中填写提交信息。
- 点击上方的 对勾 ✔️ 按钮。
-
检查:
运行 git status,会提示你的分支领先于远程分支(Your branch is ahead of 'origin/...')。
第 4 步:与远程仓库同步
目的:在推送你的代码前,先获取他人的最新更新,确保你的提交是建立在最新版本之上的。
-
命令行:
Bash
# 推荐使用 rebase 保持提交历史的整洁 git pull --rebase -
VS Code 图形界面:
- 点击
...(更多操作) 菜单。 - 选择 拉取(变基)(Pull (Rebase)) 。
- 点击
-
注意:
如果此步骤发生合并冲突 (Conflict),请先在编辑器中手动解决冲突,然后根据 Git 的提示完成后续操作(对于 Rebase,是 git add <冲突文件> -> git rebase --continue)。
第 5 步:推送到远程仓库
目的:分享你的工作成果。
-
命令行:
Bash
git push -
VS Code 图形界面:
- 点击
...(更多操作) 菜单。 - 选择 推送 (Push) 。
- 点击
-
检查:
命令成功执行,没有报错。你的提交已经上传到远程仓库。
第 6 步:恢复本地的临时修改
目的:把你之前隐藏起来的工作恢复回来,继续你的开发。
-
命令行:
Bash
git stash pop -
VS Code 图形界面:
- 点击
...(更多操作) 菜单。 - 选择 存储 (Stash) -> 弹出最新储藏 (Pop Latest Stash) 。
- 点击
-
检查:
运行 git status,你之前未提交的修改现在又出现在了“更改”列表中。
流程总结(快速回顾)
git add <要提交的文件>git stash push -k -ugit commit -m "..."git pull --rebasegit pushgit stash pop