Git 本地开发分支常见操作指南
场景说明
假设:
huabei:团队开发分支dev:自己本地开发分支
日常开发中,经常会遇到:
- 别人往
huabei提交了代码 - 自己在
dev上开发 - 需要同步最新代码
- 不想丢失自己的修改
- 不想产生多余 merge commit
一、查看当前分支
bash
git branch当前分支前面会有 *
例如:
bash
* dev
huabei二、同步远程最新代码
先更新团队分支:
bash
git checkout huabei
git pull这样本地 huabei 就是最新的。
三、把 huabei 最新代码同步到 dev
方式 1:merge(最稳)
bash
git checkout dev
git merge huabei特点
- 保留双方提交历史
- 安全
- 容易理解
- 会产生 merge commit
提交记录效果
text
A---B---C
\ \
D----E----MM 就是 merge commit。
方式 2:rebase(推荐个人开发分支)
bash
git checkout dev
git rebase huabei特点
- 提交历史干净
- 不会产生 merge commit
- 更适合个人开发分支
提交记录效果
text
A---B---C---D'---E'看起来像:
你的开发是基于最新代码进行的。
四、merge 和 rebase 区别
| 对比 | merge | rebase |
|---|---|---|
| 是否产生 merge commit | 会 | 不会 |
| 是否改写历史 | 不会 | 会 |
| 是否安全 | 高 | 中 |
| 提交记录 | 分叉 | 线性 |
| 推荐场景 | 团队协作 | 个人开发 |
五、如何查看是否同步成功
方法 1:查看差异(推荐)
查看 dev 是否已经包含 huabei:
bash
git diff dev..huabei结果
无输出:
text
说明 dev 已同步 huabei有输出:
text
说明还有代码没同步方法 2:查看提交图
bash
git log --oneline --graph --all可以看到:
- merge 记录
- rebase 后的线性记录
方法 3:查看某个 commit 是否存在
先看 huabei 最新提交:
bash
git log huabei --oneline -1例如:
text
abc123 修复首页bug查看 dev 是否包含:
bash
git branch --contains abc123输出包含:
bash
dev说明已经同步。
六、开发中最常见的问题
1. merge 后出现冲突
Git 提示:
bash
CONFLICT (content)查看冲突文件:
bash
git status文件会出现:
js
<<<<<<< HEAD
自己的代码
=======
别人的代码
>>>>>>> huabei手动修改后:
bash
git add .
git commit完成冲突处理。
2. rebase 冲突处理
解决冲突后:
bash
git add .
git rebase --continue取消 rebase:
bash
git rebase --abort3. 本地代码未提交,不敢同步
先临时保存:
bash
git stash同步完成后恢复:
bash
git stash pop七、推荐开发流程(最佳实践)
日常开发推荐
1. 更新团队分支
bash
git checkout huabei
git pull2. 切回自己开发分支
bash
git checkout dev3. 同步最新代码(推荐 rebase)
bash
git rebase huabei4. 开始开发
bash
git add .
git commit -m "功能开发"八、不推荐的危险操作
reset --hard
bash
git reset --hard huabei会:
- 覆盖当前分支
- 丢失未保存代码
除非明确知道后果,否则不要使用。
九、推荐命令速查
更新团队分支
bash
git checkout huabei
git pullmerge 同步
bash
git checkout dev
git merge huabeirebase 同步(推荐)
bash
git checkout dev
git rebase huabei查看是否同步成功
bash
git diff dev..huabei查看提交图
bash
git log --oneline --graph --all暂存当前修改
bash
git stash恢复:
bash
git stash pop