• 分支管理


    分支

    什么是分支?

    软件项目中启动一套单独的开发线的方法,多分支并行开发,互不干扰。开发,测试完成后可以合并到主分支上。

    为什么使用git分支?

    1、可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响
    2、封装一个开发阶段
    3、解决bug的时候新建分支,用于对该bug的研究

    相关命令

    新建分支:

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch dev

    列出项目所有分支:

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
      dev
    * master                #分支前面有*号,代表该分支为当前所在分支

    删除分支

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch -d dev

    更改分支名

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
      bug
    * master
    root@DESKTOP-33IBDMI:/mnt/e/git# git branch -m bug dev        #bug为旧分支名,dev为新分支名
    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
      dev
    * master

    切换分支

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
      dev
    * master
    root@DESKTOP-33IBDMI:/mnt/e/git# git checkout dev            #切换到dev分支
    Switched to branch 'dev'
    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
    * dev
      master

    注意:切换分支时,如果对分支上的文件进行修改,且没有commit,就切换到另一个分支上,这时会报错。当然可以加 -f 参数强制切换到另外的分支上,但当前分支上的变更会直接丢弃,一般不建议使用此参数。

    实例:

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
      dev
    * master
    root@DESKTOP-33IBDMI:/mnt/e/git# ls
    11.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# git checkout dev
    Switched to branch 'dev'
    root@DESKTOP-33IBDMI:/mnt/e/git# ls
    11.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# touch 22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# git add *
    root@DESKTOP-33IBDMI:/mnt/e/git# git commit -m "add 22.txt"
    [dev 461c95c] add 22.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# ls
    11.txt  22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# git checkout master
    Switched to branch 'master'
    root@DESKTOP-33IBDMI:/mnt/e/git# ls
    11.txt

    合并分支:

    root@DESKTOP-33IBDMI:/mnt/e/git# git branch
      dev
    * master
    root@DESKTOP-33IBDMI:/mnt/e/git# git merge dev        #当前分支合并指定分支
    Updating ef5b5ee..461c95c
    Fast-forward
     11.txt | 1 +
     22.txt | 0
     2 files changed, 1 insertion(+)
     create mode 100644 22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# ls
    11.txt  22.txt

    注意:master切换到dev分支,对a文件修改后提交,再切换回master分支,也对a修改后提交,然后在master分支merge dev分支,此时会产生冲突。
    查看冲突的文件:git diff –name-only –diff-filter=U

    Git diff

    使用场景

    1、解决冲突
    2、制作补丁

    相关命令
    root@DESKTOP-33IBDMI:/mnt/e/git# cat 22.txt
    sdfsd
    root@DESKTOP-33IBDMI:/mnt/e/git# echo werwer >>22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# git add 22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# echo lkkll >>22.txt
    root@DESKTOP-33IBDMI:/mnt/e/git# git diff                #用于比较当前工作区跟暂存区的差异
    diff --git a/22.txt b/22.txt
    index aa41325..9d15487 100644
    --- a/22.txt        # - 表示变更前的文件
    +++ b/22.txt        # + 表示变更后的文件
    @@ -1,2 +1,3 @@     #在源文件第1行开始的2行和目标文件第1行开始的3行构成一个差异小结
     sdfsd
     werwer
    +lkkll
    root@DESKTOP-33IBDMI:/mnt/e/git# git diff --staged        #查看存入到暂存区,没提交到本地仓库的修改
    diff --git a/22.txt b/22.txt
    index e69de29..aa41325 100644
    --- a/22.txt
    +++ b/22.txt
    @@ -0,0 +1,2 @@
    +sdfsd
    +werwer
    root@DESKTOP-33IBDMI:/mnt/e/git# git commit -m "s w"
    root@DESKTOP-33IBDMI:/mnt/e/git# git diff HEAD 22.txt        #比较的是工作区中的文件与版本库中文件的差异。HEAD指向的是版本库中的当前版本,而22.txt指的是当前工作区中的文件,也可以不具体指定
    diff --git a/22.txt b/22.txt
    index aa41325..d05c57f 100644
    --- a/22.txt
    +++ b/22.txt
    @@ -1,2 +1,4 @@
     sdfsd
     werwer
    +lkkll
    +sdfklkj
    root@DESKTOP-33IBDMI:/mnt/e/git# git diff dev            #当前分支与dev分支的差异
    git diff 分支名1 分支名2                                  #查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
    git diff commitid1 commitid2                             #用于列出两个历史提交的差异
    git diff --stat                                          #用于罗列有变更的文件
  • 相关阅读:
    lua版本的一个状态机
    unity getcomponentsinchildren 翻船
    dotween tips
    ulua c#调用lua中模拟的类成员函数
    洗牌算法
    unity的一些tips
    用Unity写一个12306验证器的恶搞图生成软件
    好久没写Blog了
    蛋疼的时候写三消游戏(十三)
    用DropBox分享Unity3D的Web应用
  • 原文地址:https://www.cnblogs.com/guarderming/p/10220005.html
Copyright © 2020-2023  润新知