美文网首页
git分支管理

git分支管理

作者: 小裴走世界 | 来源:发表于2018-01-30 10:03 被阅读0次

    本地分支管理

    创建和切换分支

    创建分支

    在本地终端运行 git branch『分支名称』 新建一个分支,如新建一个名为『learn-branch』的分支命令如下:

    python

    $ git branch learn-branch

    切换分支

    创建完分之后使用git branch命令查看分支:

    python

    $ git branch

    * master

      learn-branch

    可以看到『 master 』分支上有一个『*』,说明当前是处在『 master 』分支上,也就是说创建完分支后需要我们手动切换到『learn-branch』,使用git checkout 『分支名称』命令:

    python

    $ git checkout learn-branch

    Switched to branch 'learn-branch'

    再使用git branch命令查看,会发现已经切换到『learn-branch』分支:

    python

    $ git branch

    * learn-branch

      master

    创建和切换分支两条命令可以合起来,使用git checkout -b『分支名称』命令可以创建一个分支并切换到此分支上。

    合并分支

    快进模式合并

    快进式合并分支,也叫『Fast Foreword』,简单的理解就是当要合并的分之和目标分支之间没有冲突,只是多做了一些修改时就会采取『Fast Foreword』模式

    例如,我们切换到新建的『learn-branch』分支上,对『learn-git.txt 』文件加一行文字:

    I am learning to use git.

    然后提交此文件:

    $git add learn-branch.txt

    $git commit -m "edit learn-git.txt"

    [learn-git fce6c4e] branch test

      1 files changed, 1 insertions(+)

    接着使用$ git checkout master命令切换回『 master 』分支,再查看『learn-git.txt 』文件,发现刚才添加的内容并不存在!因为那个提交是在『learn-branch』分支上,而『 master 』分支此刻的提交点并没有变。

    现在,我们把『learn-branch』分支的内容合并到『 master 』分支上:

    $ git merge learn-branch

    Updating ca62ea0..fce6c4e

    Fast-forward

      learn-branch.txt | 1 +

      1 file changed, 1 insertion(+)

    git merge命令用于合并指定分支到当前分支,示例中是把指定分支『learn-branch』合并到『 master 』分支上。

    合并完成后会发现『 master 』分支上的『learn-git.txt 』文件内容和在『learn-branch』分支上编辑后的内容完全一样。此时如果想删除『learn-branch』分支,可以使用命令$ git branch -d 『分支名称』。

    普通模式合并

    当要合并的分之和目标分支之间存在冲突,就无法使用快进合并模式,需要先手动解决冲突,再提交。

    例如,我们先切换到『learn-branch』分支,在『learn-git.txt 』文件中写入下面文字并提交

    I am on "learn-branch" branch.

    然后切换到『 master 』分支,在『learn-git.txt 』文件中写入下面文字并提交

    I am on "master" branch.

    接着输入git merge learn-branch命令:

    $ git merge learn-branch

      Auto-merging learn-branch.txt

      CONFLICT (content): Merge conflict in learn-git.txt

      Automatic merge failed; fix conflicts and then commit the result.

    Git 返回结果提醒我们『learn-git.txt 』文件存在冲突,需要我们手动解决冲突。运行 git status 命令,也可以看到出现冲突状况:

    $ git status

    On branch master

    You have unmerged paths.

      (fix conflicts and run "git commit")

    Unmerged paths:

      (use "git add ..." to mark resolution)

          both modified:      learn-git.txt

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

    现在我们打开『learn-git.txt 』,会发现 Git 加入了冲突解决标记:

      <<<<<<< HEAD

      I am on master branch

      =======

      I am on learn-branch branch

      >>>>>>> learn-branch

    可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时的工作分支)中的内容,下半部分是在 learn-branch 分支中的内容。解决冲突的办法无非是二者选其一或者人工亲自整合到一起。把上述内容修改为这样:

    I am on master branch

    接下来运行 git add 来告诉 Git 冲突已经解决,并运行 git commit 来完成合并:

    $git add learn-git.txt

    $git commit -m "conflict resolved"

    [master cadd265] conflict resloved

    相关文章

      网友评论

          本文标题:git分支管理

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