创建分支
- git branch dev 创建dev分支
- git checkout dev 切换到dev分支
- git checkout -b dev 创建dev分支,并切换到dev分支,(-b 参数表示创建并切换)
- git branch 查看当前分支,git branch会列出所有分支,当前分支前会有一个*号
- 创建分支后修改不提交的话两个分支下的内容都是修改过的,在新分支下提交后,原来的分支下的文件才会变成修改前的
$ git checkout -b dev //创建并切换分支
$ git branch dev //创建分支
$ git checkout dev //切换分支
$ git branch //查看当前分支
合并分支
- git merge <name> 快速合并某分支到当前分支
- git merge --no--ff -m"message " 禁用fast forward模式合并,合并时会生成一个新的commit,这样从分支历史上就可以看到分支信息而不用担心删除分支后无法查询到分支名
$ git merge dev //把dev分支合并到当前分支
$ git merge --no-ff -m "merge with no-ff" dev //禁用ff模式来进行合并
删除分支
- git branch -d <name> 删除分支
- git branch -D <name> 强行删除一个没有合并过的分支
$ git branch -d dev //删除dev分支
$ git branch -D feature-vulcan //强行删除一个没有合并过的feature-vulcan分支
分支冲突
-
git merge 合并分支
-
会显示冲突文件
-
修改冲突文件(<<<<<<< ======= >>>>>>>标记不同分支的内容)
-
git add 并commit 提交修改;
-
git log 可以查看分支合并的情况( --graph --oneline 参数表示单行图像形式显示)
$ git merge feature1 //快速合并
$ git add readme.txt
$ git commit -m "conflict fixed" //提交冲突文件
$ git log --graph --oneline //查看分支合并情况
Bug分支
- git stash 储藏当前分支修改(当前分支如果有未提交或者未储藏的修改的话,切换分支会丢失修改,储藏后文件会恢复到版本库的状态)
- git stash list 查看当前储藏的所有修改
- git stash apply 恢复最新一次的修改,不删除stash内容(参数 stash@{0} 表示恢复指定stash)
- git stash drop 删除stash内容
- git stash pop 恢复的同时删除stash内容
$ git stash //储藏当前分支的修改到栈中
$ git stash apply stash@{0} //恢复第一项修改,默认最新,最上方
$ git stash drop stash@{0} //删除第一项修改,默认最旧,最下方
$ git stash list //查看储藏的修改
$ git stash pop //恢复并删除修改,默认最新,最少
添加标签
- git tag 查看所有标签
- git tag tagname 用于给一个commit添加标签(可选 commitid 来给以前的版本指定标签)
- git tag -a v1.0 -m "message" 1094adb(给1094adb添加标签 -a指定标签名 -m指定说明文字)
- git show tagname 查看标签信息
$ git tag v0.9 f52c633 //给f52c633添加一个v0.9的标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb //-a指定标签名 -m指定说明文字
$ git show v0.9 //查看v0.9的标签信息
$ git tag //查看所有标签
操作标签
- git tag -d v1.0 来删除标签
- git push origin v1.0 来推送标签到远程(不会自动推送)
- git push origin --tags 一次性推送全部标签
- git push origin :refs/tags/tagname 删除远程标签
$ git tag -d v0.1 //删除标签
$ git push origin v1.0 //推送标签到远程
$ git push origin --tags //推送全部标签到远程
$ git push origin :refs/tags/v0.9 //删除远程标签