创建与合并分支
master
是指针 指向分支, HEAD
指向哪个指针 则表示当前分支是哪个
- 创建并切换分支:
git check out -b dev
,相当于git branch dev
创建分支 和git checkout dev
切换分支 - 查看分支:
git branch
,会列出所有分支,当前分支前面会标一个*号 - 切换分支:切换到master分支
git checkout master
- 合并某分支到当前分支:
git merge dev
将dev分支合并到master 其实就是将master指向和dev指向同步到一个分支 - 删除分支:
git branch -d dev
删除dev分支
解决冲突
- 合并分支
git merge "分支名"
- 冲突后 Git用<<<<<<<,=======,>>>>>>>即=号的上下两侧标记出不同分支的内容,我们修改如下后保存
- 在要解决的分支解决冲突后
git add "文件名"
提交到暂存区git commit -m "注释"
提交到本地库 - git log --graph --pretty=oneline --abbrev-commit 可以看到合并图
- 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
使用–no-ff的方式git merge则强制禁用Fast forward
1.git merge --no-ff -m "注释" dev
因为本次合并要创建一个新的commit 所以加上-m 描述
Bug分支
- 隐藏保存当前分支
git stash
- 处理存在bug的分支
git checkout master
, 然后git check out -b 分支名
处理bug后git add
,git commit -m "描述"
, 切换master分支git checkout master
, 合并到master git merge --no-ff -m "描述" bug分支名
- 回到dev分支工作
git checkout dev
- 查看工作区
git stash list
- 恢复:
git stash apply
然后删除:git stash drop
; 或者git stash pop
恢复删除;或者git stash apply stash@{0}
来恢复指定的stash
Feature分支
git checkout -b feature
git add file_name
git commit -m '描述'
git status
git checkout dev
git merge feature
- 如果不需要feature分支
git branch -d feature
或者强制删除git branch -D feature
多人协作
- 查看远程库信息
git remote
- 查看更详细信息
git remote -v
- 推送分支
git push origin master
- 拉取代码
git pull
- 拉取代码失败 提示no tracking information 没有与远程分支建立连接,使用
git branch --set-upstream-to=origin/dev dev