完整操作:Git操作-文件管理、远程仓库、分支、标签
打印版笔记:Git操作.pdf
1: 创建与合并分支
- 创建分支1dev:
git branch dev
;切换至div分支:git checkout dev
,一句话:git checkout -b dev
- 用
git branch
命令查看当前分支,当前分支前面会标一个*
号 - 合并分支 ,先
git checkout master
切换到主分支,然后执行git merge dev
进行合并。然后可以再执行git branch -d dev
删除分支 - 查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
2: 解决分支冲突
当Git无法自动合并分支时2,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph
命令可以看到分支合并图。
备注: 进入log后直接按 Q
就可以退出。
3: 分支管理策略
合并分支时3,默认采取的为Fast farword
模式,这种合并看不到合并历史,但是这种模式下,删除分支会丢掉分支信息。
1.禁用Fast farword
模式时,合并分支会产生一个commit, git merge --no-ff -m "merge with no-ff" dev
其中,--no-ff
参数,表示禁用Fast forward。
采用git log --graph --pretty=oneline --abbrev-commit
查看分支历史。
备注:不用–no-ff,实际上只是将master的指针update成dev分支而已,用的还是dev的commit ID,而使用之后,则是重新commit了一哈,有了新的commit ID
4: Bug分支
我个人觉得场景是这样的。设A为游戏软件
- master 上面发布的是A的1.0版本
- dev 上开发的是A的2.0版本
- 这时,用户反映 1.0版本存在漏洞,有人利用这个漏洞开外挂
- 需要从dev切换到master去填这个漏洞,正常必须先提交dev目前的工作,才能切换。
- 而dev的工作还未完成,不想提交,所以先把dev的工作stash一下
git stash
。然后切换到master - 如果是在master修复bug,就在master建立分支issue101并切换.
git checkout -b issue101
- 在issue101上修复漏洞,并
git commit
。 - 修复后,在master上合并issue101 ,
git merge --no-ff -m "merged bug fix 101" issue-101
- 切回dev,
git stash list
命令看看stash内容,然后git stash pop
,恢复的同时把stash内容也删了继续工作。
5:强制分支删除
发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D branchname
强行删除。
6:多人协作
多人协作的工作模式通常是这样4
-
查看远程库信息,使用
git remote -v
; -
本地新建的分支如果不推送到远程,对其他人就是不可见的;
-
从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; -
在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致; -
建立本地分支和远程分支的关联,使用
git branch --set-upstream-to=origin/master master
; -
从远程抓取分支,使用
git pull
,如果有冲突,要先处理冲突。