Skip to content

仓库结构与提交流程

先把 Git 仓库粗暴地理解成四层就够用了:工作区 -> 暂存区 -> 本地仓库 -> 远程仓库

img.png

这四层分别在干什么

工作区

就是你现在在编辑器里真正改的那堆文件。

暂存区

它不是“临时备份区”,更像是本次提交的候选清单。你可以把工作区里的一部分改动挑出来,先放进暂存区,准备组成下一个 commit。

本地仓库

执行 git commit 之后,改动会变成一个正式的提交节点,先落在你本地。

远程仓库

执行 git push 之后,别人才能看到你的提交。

TIP

commit 只是提交到本地仓库,不等于已经同步给团队。

场景 1:正常做完一个需求,准备提交

这是最常见的路径。

shell
git status
git add .
git commit -m "feat: 新增登录页表单校验"
git push

如果是第一次推送本地新分支,一般会多一步:

shell
git push -u origin feature/login-form

-u 的作用是建立本地分支和远程分支的跟踪关系。第一次设完,后面通常直接 git push 就够了。

场景 2:我只想提交一部分改动

这个场景在真实开发里非常常见,比如你一边改需求,一边顺手修了个小问题,但这两件事不应该落在同一个 commit 里。

这时不要上来就 git add .,更适合用:

shell
git add -p

-p 是按代码块选择要不要进入暂存区。它不花哨,但很实用,能明显改善提交质量。

场景 3:开始工作前,先把仓库同步到最新

如果你是从主干切新分支,我自己的习惯是先同步主干,再开始写代码。

shell
git switch main
git pull --ff-only
git switch -c feature/login-form

--ff-only 的意思是只允许快进更新。它的好处是:如果本地主干已经有额外提交,不会悄悄帮你做一次 merge,让主干历史变得更乱。

场景 4:本地已经提交了,但还没推送

这时你要记住一个判断标准:只要还没推送到远程,很多动作都还有比较大的腾挪空间。

比如:

  • 提交说明写错了,可以 git commit --amend
  • 想拆 commit,可以用 git reset
  • 想整理历史,可以用 git rebase -i

这类操作后面会分章节展开写。

常见坑

  • git add . 太顺手,容易把临时文件、调试代码、顺手改动一起带进去
  • 工作区不干净时就去 pull,后面一旦冲突,现场会更乱
  • 以为 commit 完就结束了,结果根本没 push,别人看不到你的代码

img.png