美文网首页
git-分支1

git-分支1

作者: 脏脏包盛 | 来源:发表于2018-09-07 20:25 被阅读0次

git branch 查看分支
git branch dev 创建名字为dev的分支
git checkout dev 切换分支
git checkout -b dev创建并切换分支
git merge dev 合并dev分支
git branch -d dev 删除dev分支
git log --graph --pretty=oneline --abbrev-commit 可以查看分支合并图
git merge --no-ff -m "merge with no-ff" dev 可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

创建和合并分支

创建分支并转到dev分支

git checkout -b dev

相当于下面两个命令

git branch dev
git checkout dev

查询分支

git branch

提交文档

git add readme.txt
git commit -m "add readme.txt"

切换到master分支

git checkout master

合并dev分支并删除dev

git merge dev
git branch -d dev

具体过程如下连接
http://liaoxuefeng.gitee.io/git-resources/master-and-dev-ff.mp4

解决冲突

合并分支有时会有冲突,下面例子做演示
创建并跳转分支

git checkout -b feature1

修改readme.txt为以下

Creating a new branch is quick AND simple.

在新分支做修改文件并提交,然后跳转回master分支

git add readme.txt
git commit -m “AND simple”
git checkout master

修改readme.txt为以下

reating a new branch is quick & simple.

在master上提交

git add readme.txt
git commit -m "& simple"

合并两个分支

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

发生冲突,需要解决合并问题,使用git status 查看冲突文件

$ git status小姐
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

查看readme.txt内容

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

对于上面冲突部分我们对其修改,再做提交。就可以解决冲突了。

$ git add readme.txt 
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed

用带参数的git log 也可以查看解决冲突情况

$ git log --graph --pretty=oneline --abbrev-commit
*   cf810e4 (HEAD -> master) conflict fixed
|\  
| * 14096d0 (feature1) AND simple
* | 5dc6824 & simple小姐
|/  
* b17d20e branch test
* d46f35e (origin/master) remove test.txt
* b84166e add test.txt
* 519219b git tracks changes
* e43a48b understand how stage works
* 1094adb append GPL
* e475afc add distributed
* eaadf4e wrote a readme file

最后删除分支

git branch -d feature1

小结:
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。

分支管理策略

正常合并分支使用的是fast forward模式,即调整指针合并。如果不使用这个模式,我们可以强制禁止这种模式,git就会在merge时生成新的commit,这样就能看到分支信息
实战,使用--no-ff方式的git merge
创建分支

git checkout -b dev

修改readme.txt提交

$ git add readme.txt 
$ git commit -m "add merge"
[dev f52c633] add merge
 1 file changed, 1 insertion(+)

现在,我们切换回master:

$ git checkout master
Switched to branch 'master'

准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:

$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

合并后,我们用git log看看分支历史:

$ git log --graph --pretty=oneline --abbrev-commit
*   e1e9c68 (HEAD -> master) merge with no-ff
|\  
| * f52c633 (dev) add merge
|/  
*   cf810e4 conflict fixed
...

可以看到,不使用Fast forward模式,merge后就像这样:


image.png
分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:


image.png

相关文章

  • git-分支1

    git branch 查看分支git branch dev 创建名字为dev的分支git checkout dev...

  • gitignore 转载地址

    修改 .gitignore 文件 立即生效 Git-分支-分支的新建与合并

  • Tag的使用

    git merge 合并分支 友好链接:https://git-scm.com/book/zh/v1/Git-%E...

  • git_chapter3_分支

    Chapter3 分支 参考自 https://git-scm.com/book/zh/v1/Git-%E5%88...

  • git-分支2

    修复bug,需要在需要修复的节点创建分支,修复后合并,手头任务没有完成先保存,回头再弄git stash 保存现在...

  • git-分支3

    git push origin 推送分支git remote -v 查看远程仓库信息git checkout ...

  • git操作集锦

    git-更改本地和远程分支的名称 git branch -m old_branch new_branch# Ren...

  • Git_ 拉取远程分支

    其他分支合并教程:git教程[https://git-scm.com/book/zh/v2/Git-%E5%88%...

  • git-分支的使用

    一、应用场景 在项目的开发过程中,不可能一味的只是使用master分支来进行提交代码,比如我们需要开发一个新的功能...

  • git-创建远程分支

    开始用SourceTree操作GIT仓库之后,导致好多常用的GIT命令记不太清楚了,这里弄一个系列,记录常用GIT...

网友评论

      本文标题:git-分支1

      本文链接:https://www.haomeiwen.com/subject/xftfgftx.html