Git 日常开发与仓库管理指南
1. Git 在日常开发中的主要用途
Git 主要用于代码版本管理和团队协作,常见操作包括:
- 代码拉取与提交
- 分支创建、切换与删除
- 分支合并
- 临时保存未提交代码
- 处理代码冲突
- 查看仓库状态
- 查看和修改远程仓库地址
- 仓库迁移
- 将已有本地项目推送到新建的远程仓库
在某些描述中可能会看到“代码签入、签出”的说法。
在 Git 语境中可以大致理解为:
| 描述 | Git 中常见对应操作 |
|---|---|
| 签出代码 | git clone、git pull、git checkout、git switch |
| 签入代码 | git add → git commit → git push |
| 创建分支 | git branch、git switch -c |
| 切换分支 | git checkout、git switch |
| 合并分支 | git merge |
| 临时保存代码 | git stash |
| 查看状态 | git status |
| 解决冲突 | 修改冲突文件 → git add → git commit |
2. git status:查看当前仓库状态
git status主要用于查看:
- 当前所在分支
- 哪些文件被修改
- 哪些文件已经暂存
- 哪些文件尚未暂存
- 是否存在冲突文件
遇到 Git 问题时,通常可以先执行:
git status可以简单理解为:
先确认 Git 当前到底处于什么状态。
3. git pull:拉取远程最新代码
git pullgit pull 可以简单理解为:
git fetch
+
git merge例如每天开始开发前:
git switch develop
git pull origin develop表示把远程 develop 分支的最新代码同步到本地。
4. git add、git commit、git push:提交代码
正常开发完成后:
git add .
git commit -m "feat: 新增用户管理功能"
git push origin feature/user完整流程:
修改代码
↓
git add
↓
git commit
↓
git push
↓
GitHub / GitLab需要注意:
git add:把修改加入暂存区git commit:提交到本地 Git 仓库git push:把本地提交推送到远程仓库
也就是说:
commit只是本地提交,push才是把代码发送到远程仓库。
5. git branch:分支管理
查看本地分支
git branch创建分支
git branch feature/user删除分支
git branch -d feature/user查看远程分支
git branch -r查看全部分支
git branch -a现在更推荐直接使用:
git switch -c feature/user它等价于:
git branch feature/user
git switch feature/user6. git checkout 与 git switch:切换分支
传统方式:
git checkout develop创建并切换分支:
git checkout -b feature/user现在 Git 更推荐:
git switch develop创建并切换:
git switch -c feature/user原因是:
checkout功能比较多,既可以切换分支,也可以恢复文件switch专门用于分支切换,语义更加清晰
不过实际公司项目和老教程中仍然大量使用 git checkout,因此两个都需要掌握。
7. git merge:合并分支
假设当前存在:
develop
│
├────────────
│ feature/user
│ ↓
│ 开发完成
│ ↓
└──── merge功能开发完成后:
git switch develop
git pull origin develop
git merge feature/user这里:
git merge feature/user表示:
把
feature/user合并到当前所在的分支。
因此执行 merge 之前一定要先确认当前分支:
git status或者:
git branch8. git stash:临时保存未提交代码
git stash 用于:
当前代码改到一半,但暂时不能提交,又需要切换分支处理其他事情。
例如:
git stash然后切换分支:
git switch develop处理完其他任务后再回来:
git switch feature/user
git stash pop常用 stash 命令
# 临时保存当前修改
git stash
# 带描述保存
git stash push -m "开发用户管理功能"
# 查看 stash 列表
git stash list
# 恢复最近一次 stash,并删除该 stash
git stash pop
# 恢复 stash,但不删除
git stash apply
# 删除某一个 stash
git stash drop stash@{0}
# 清空所有 stash
git stash clearpop 和 apply 的区别
git stash pop
= 恢复代码 + 删除 stash
git stash apply
= 恢复代码 + 保留 stash保存未跟踪文件
默认情况下,新建但还没有执行 git add 的文件可能不会被普通 git stash 保存。
可以使用:
git stash -u或者:
git stash push -u -m "临时保存开发内容"可以把:
commit理解为正式存档stash理解为临时寄存
9. Git 冲突处理
多人开发时,如果两个人修改了同一部分代码,在 pull 或 merge 时可能产生冲突。
例如:
<<<<<<< HEAD
const name = '张三';
=======
const name = '李四';
>>>>>>> origin/develop可以理解为:
<<<<<<< HEAD
当前分支的代码
=======
需要合并进来的代码
>>>>>>> xxx冲突处理流程
第一步,查看冲突文件:
git status第二步,根据实际业务逻辑手动修改冲突内容。
第三步,删除 Git 自动添加的冲突标记:
<<<<<<<
=======
>>>>>>>第四步,重新加入暂存区:
git add .第五步,提交冲突处理结果:
git commit -m "fix: resolve merge conflict"最后推送:
git push完整过程:
git pull / git merge
↓
产生冲突
↓
git status
↓
找到冲突文件
↓
根据业务逻辑修改
↓
git add
↓
git commit
↓
git push解决冲突时不能只机械选择“保留我的”或者“保留对方的”,应该根据实际业务判断:
- 保留当前代码
- 保留对方代码
- 两边同时保留
- 重新组合成正确逻辑
10. 实际团队开发流程
假设需要开发“用户管理”功能。
10.1 更新开发分支
git switch develop
git pull origin develop10.2 创建自己的功能分支
git switch -c feature/user-management10.3 开发完成后提交
git status
git add .
git commit -m "feat: add user management"
git push origin feature/user-management然后在 GitHub 或 GitLab 创建:
Pull Request / Merge Request
↓
Code Review
↓
合并到 develop10.4 开发过程中同步最新 develop
如果功能还没有开发完成,但 develop 已经被其他同事更新:
git switch develop
git pull origin develop再切回自己的功能分支:
git switch feature/user-management把最新 develop 合并进来:
git merge develop如果产生冲突:
git status处理冲突以后:
git add .
git commit
git push完整流程:
git pull
↓
创建 feature 分支
↓
开发
↓
git status
↓
git add
↓
git commit
↓
同步最新 develop
↓
git merge
↓
解决冲突
↓
git push
↓
提交 PR / MR11. 仓库之间的切换
“仓库切换”通常存在两种情况。
11.1 本地不同 Git 仓库之间切换
本质就是切换项目目录。
例如:
cd project-a
git status切换到另一个项目:
cd ../project-b
git status一般情况下,每个包含 .git 目录的项目,就是一个独立 Git 仓库。
可以使用:
git remote -v查看当前本地仓库关联的远程仓库。
11.2 当前本地仓库切换到另一个远程仓库
首先查看当前远程地址:
git remote -v例如:
origin https://github.com/user/old-project.git (fetch)
origin https://github.com/user/old-project.git (push)修改远程地址:
git remote set-url origin https://github.com/user/new-project.git再次确认:
git remote -v然后就可以向新的远程仓库推送:
git push可以简单记成:
切换本地仓库
→ cd
切换远程仓库
→ git remote set-url12. Git 仓库迁移
例如:
旧 GitLab 仓库
↓
本地仓库
↓
修改 Remote
↓
新 GitHub 仓库首先查看旧远程:
git remote -v假设:
origin https://old-gitlab.com/user/project.git新的仓库地址:
https://github.com/user/project.git修改:
git remote set-url origin https://github.com/user/project.git确认:
git remote -v推送主分支:
git push -u origin main推送全部本地分支:
git push origin --all推送 Tag:
git push origin --tags因此常见迁移流程是:
git remote -v
git remote set-url origin 新仓库地址
git push -u origin main
git push origin --all
git push origin --tags12.1 更稳妥的迁移方式:暂时保留旧仓库
如果担心直接覆盖原来的远程地址,可以先重命名:
git remote rename origin old-origin再添加新的远程仓库:
git remote add origin https://github.com/user/new-project.git查看:
git remote -v可能会看到:
old-origin 旧仓库地址
origin 新仓库地址这样旧仓库仍然保留。
确认新仓库迁移正常后,可以删除旧远程:
git remote remove old-origin这种方式在公司项目仓库迁移时更加稳妥。
13. 远程仓库是新建的,将已有本地项目推送到远程
假设本地已经有一个项目:
my-vue-projectGitHub 或 GitLab 上刚创建了一个新的空仓库。
进入项目:
cd my-vue-project如果本地还不是 Git 仓库:
git init查看状态:
git status添加项目文件:
git add .创建第一次提交:
git commit -m "init project"把默认分支修改为 main:
git branch -M main关联远程仓库:
git remote add origin https://github.com/user/my-vue-project.git查看远程地址:
git remote -v第一次推送:
git push -u origin main完整流程:
git init
git add .
git commit -m "init project"
git branch -M main
git remote add origin https://github.com/user/my-vue-project.git
git push -u origin main13.1 git push -u 的作用
第一次执行:
git push -u origin main其中:
-u表示建立本地分支与远程分支之间的跟踪关系:
本地 main
↓
远程 origin/main建立以后,后面通常可以直接:
git push以及:
git pull14. 新建远程仓库时的常见坑
如果在 GitHub / GitLab 创建远程仓库时,同时初始化了:
- README
.gitignore- LICENSE
那么远程仓库已经存在自己的 Commit。
而本地项目也已经有自己的 Commit,此时直接:
git push -u origin main可能会失败。
原因可以理解为:
本地提交历史 A
远程提交历史 B
两边不存在共同起点14.1 需要保留远程仓库内容
可以先:
git pull origin main --allow-unrelated-histories如果产生冲突,手动处理。
然后:
git add .
git commit
git push -u origin main14.2 远程只是刚创建,没有内容需要保留
最简单的做法通常是在创建远程仓库时:
不初始化 README、LICENSE 和
.gitignore。
直接创建一个真正的空仓库。
然后本地:
git push -u origin main即可。
15. Git 高频命令速查
查看状态
git status查看分支
git branch创建并切换分支
git switch -c feature/user或者:
git checkout -b feature/user切换分支
git switch develop或者:
git checkout develop拉取代码
git pull添加暂存区
git add .提交
git commit -m "feat: xxx"推送
git push合并
git merge feature/user临时保存
git stash恢复临时代码
git stash pop查看 stash
git stash list查看远程仓库
git remote -v修改远程仓库
git remote set-url origin 新仓库地址添加远程仓库
git remote add origin 新仓库地址推送全部分支
git push origin --all推送 Tag
git push origin --tags16. 一套完整的 Git 日常开发记忆路线
1. 查看状态
git status
2. 拉取代码
git pull
3. 提交代码
git add
git commit
git push
4. 分支管理
git branch
git checkout / git switch
5. 合并代码
git merge
6. 临时保存
git stash
7. 冲突处理
git status
→ 修改冲突
→ git add
→ git commit
8. 查看远程仓库
git remote -v
9. 切换远程仓库
git remote set-url origin xxx
10. 仓库迁移
旧仓库
→ 本地
→ 修改 remote
→ push
11. 本地已有项目上传新仓库
git init
→ git add
→ git commit
→ git remote add
→ git push17. 核心理解
Git 日常开发最重要的不是单独记命令,而是理解完整协作流程:
远程仓库
↓
git pull
↓
创建功能分支
↓
开发代码
↓
git add
↓
git commit
↓
同步最新代码
↓
git merge
↓
解决冲突
↓
git push
↓
PR / MR
↓
代码 Review
↓
合并到开发分支当这套流程能够熟练掌握以后,基本可以满足绝大多数前端开发岗位日常 Git 使用需求。