美文网首页
Git分支详解

Git分支详解

作者: NiNko | 来源:发表于2019-06-02 12:51 被阅读0次

    Git分支详解

    git branch命令

    • 查看分支 git branch
    • 新建分支 git branch branch_name
    • 切换分支 git checkout branch
    • 删除分支 git branch -d branch_name
      (注意不能删除当前所在的分支)
    • 更改分支名称 git branch -m old_name new_name
    • 创建分支并切换到新创建的分支 git branch -b branch_name
    • 合并分支 git merge branch_name
    • 查看工作区与暂存区差异 git diff
    • 查看提交历史 git log
    • 封存当前暂存区修改 git stash
    • 查看当前保存内容 git stash list
    • 提取暂存区 git stash apply stash@{0}

    git分支初步使用

    1. 首先查看当前目录下的git分支

      $ git branch
        admin
      * master
      

      当前目录有两个分支,分别是master与admin分支,并且目前我们处于master分支上。
      当前的项目文件的内容相同,因为我们没有做修改。

    2. 对文件进行修改并合并
      在master分支下的文件里添加注释
      #this is master branch
      在admin分支下的文件中添加注释
      #this is admin branch
      使用git commit -am 'admin branch'提交更改
      回到master分支,使用git merge admin命令合并分支

      $ git merge admin
      Auto-merging dPro/urls.py
      CONFLICT (content): Merge conflict in dPro/urls.py
      Automatic merge failed; fix conflicts and then commit the result.
      

      可以看到,git提示我们合并失败,因为在文件dPro/url.py内有冲突,他要求我们手动合并并重新提交
      dPro/url.py内显示了冲突的内容

      <<<<<<< HEAD
      #这是master分支
      =======
      #this is admin branch
      >>>>>>> admin
      

      我们对文件进行修改,将admin分支的内容合并到master分支上,修改结果如下

      #this is admin branch
      

      git提示我们合并成功

    3. 查看版本差异
      首先使用git log查看版本历史

      commit f387cc59552544a031cbd424f3d516a2781ecbab (HEAD -> master)
      Merge: 167823b 8e554e9
      Author: Qian <2358979326@qq.com>
      Date:   Sun Jun 2 12:36:38 2019 +0800
      
          mergeadmin fix conflict 
      
      commit 8e554e9a334d31b5acce076d465fb398f6d9ac6c (admin)
      Author: Qian <2358979326@qq.com>
      Date:   Sun Jun 2 12:19:52 2019 +0800
      
          admin branch
      
      commit 167823b479d9c932414534bbaa6610674807f907
      Author: Qian <2358979326@qq.com>
      Date:   Sat Jun 1 23:39:58 2019 +0800
      
          test
      
      

      我们选择两个版本比较差异,使用git diff 版本号1 版本号2,一般选择版本号前8位(git使用前7位)。

      $ git diff f387cc595 167823b479d
      diff --git a/dPro/urls.py b/dPro/urls.py
      index f12a399..7ca8aa1 100644
      --- a/dPro/urls.py
      +++ b/dPro/urls.py
      @@ -24,5 +24,4 @@ urlpatterns = [
          url(r'login/',views.login),
          url(r'index/',views.index),
      ]
      -#this is admin branch
      -
      +#这是master分支
      
    4. 封存暂存区
      我们对文件进行修改,添加#对暂存区的修改,并保存
      接着我们切换到admin分支,使用git checkout admin命令,出现以下错误

      error: Your local changes to the following files would be overwritten by checkout:
              dPro/urls.py
      Please commit your changes or stash them before you switch branches.
      Aborting
      

      git提示我们提交我们的修改,或者是在切换分支之前satsh他们。
      我们使用git stash命令暂存。
      此时我们的工作区已经变成了修改之前的状态,即之前做的修改已经撤销掉了,可以安全的切换分支了。

    5. 提取暂存区
      当我们将修改暂存并切换分支后,重新回到之前暂存内容的分支时,如何提取之前stash的内容?
      首先使用git stash list查看当前保存的内容

      $ git stash list
      stash@{0}: WIP on master: f387cc5 mergeadmin fix conflict
      stash@{1}: WIP on master: f387cc5 mergeadmin fix conflict
      

      使用命令git stash apply stash@{0},打开编辑器,可以看到之前做的修改已经提取出来了。

    相关文章

      网友评论

          本文标题:Git分支详解

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