zoukankan      html  css  js  c++  java
  • Git分支管理

    分支管理

    git branch

    列出所有分支,当前分支前面会标一个*号

    $ git branch
    * dev
      master
    

    表示有两个分支,当前分支为dev。

    git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。

    $ git branch -r
    MyName/master
    
    $ git branch -a
    * master
      remotes/origin/master
    

    上面命令表示,本地仓库的当前分支是master,远程分支是origin/master。

    git branch命令的-d选项,用于删除分支(删除分支不能在 被删除分支上 进行)

    $ git branch -d test
    Deleted branch test (was 64fcede).
    

    git checkout <分支>

    切换分支

    $ git checkout -b dev origin/master
    

    上面命令表示,在origin/master的基础上,创建一个新分支并切换至新分支。git checkout命令加上-b参数表示创建并切换,即相当于:

    $ git branch dev //创建dev分支
    $ git checkout dev //切换到dev分支
    Switched to branch 'dev'
    

    git merge

    合并指定分支到当前分支

    $ git merge dev
    

    冲突情况

    当为dev进行新的一次提交,切换到master分支,会看到Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

    $ git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'MyName/master' by 1 commit.
      (use "git push" to publish your local commits)
    

    接下来为master分支也进行一次新的提交,然后合并dev分支

    $ git merge dev
    Auto-merging 新建文本文档.txt
    CONFLICT (content): Merge conflict in 新建文本文档.txt
    Automatic merge failed; fix conflicts and then commit the result.
    

    可以看到git提示txt文件存在冲突,必须手动解决冲突后再提交。此时查看修改的txt

    $ cat 新建文本文档.txt
    123
    <<<<<<< HEAD
    master change
    =======
    dev change
    >>>>>>> dev
    

    Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

    接下来对内容进行修改再提交

    git add *
    $ git commit -m'conflict fixed'
    [master a94df7f] conflict fixed
    

    分支合并情况可用带参数的git log查看
    image

    分支策略

    版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。

    除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:

    • 功能(feature)分支
    • 预发布(release)分支
    • 修补bug(fixbug)分支

    这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。

    功能分支

    第一种是功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop,然后删除feature分支。

    功能分支的名字,可以采用feature-*的形式命名。

    预发布分支

    它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。

    预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Master和Develop分支,然后删除预发布分支。它的命名,可以采用release-*的形式。

    修补bug分支

    软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。

    修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支,然后删除bug分支。它的命名,可以采用fixbug-*的形式。

    bug分支特殊情形

    假如有个场景,在工作中,接到个bug修复任务,此时你正在dev进行的工作还没有提交也没办法提交(还未完成),注意,未提交状态下切换分支会将状态合并到切换分支。要想将dev正在进行的工作现场保存起来,就需要使用Git提供的 git stash

    $ git stash
    Saved working directory and index state WIP on dev: d5dd078 working
    

    查看工作区,可以看到是干净的

    $ git status
    On branch dev
    nothing to commit, working tree clean
    

    接下来,就要确定bug在哪个分支,切换到对应分支并创建临时分支

    $ git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'MyName/master' by 11 commits.
      (use "git push" to publish your local commits)
    
    $ git checkout -b bug
    Switched to a new branch 'bug'
    

    完成修复bug后,切换到master分支接着完成合并,最后删除bug分支,bug修复工作便彻底结束。

    接下来就要回到原本的dev工作了

    git checkout dev
    

    之前的保存的工作现场就用git stash list进行查看

    $ git stash list
    stash@{0}: WIP on dev: d5dd078 working
    

    可以看到现场被保存在某个地方,接下来有两个方法恢复:

    一是用git stash apply,恢复后stash内容不删除,要删除的话需要用git stash drop命令

    二是用git stash pop,恢复的同时把stash内容删除。

    强行删除还未合并的分支

    假如你在开发一个新功能,最好新建一个feature分支,

  • 相关阅读:
    1.4.2.3. SETUP(Core Data 应用程序实践指南)
    1.4.2.2. PATHS(Core Data 应用程序实践指南)
    1.4.2.1. FILES(Core Data 应用程序实践指南)
    1.4.2. 实现 Core Data Helper 类(Core Data 应用程序实践指南)
    1.4.1. Core Data Helper 简介(Core Data 应用程序实践指南)
    1.4. 为现有的应用程序添加 Core Data 支持(Core Data 应用程序实践指南)
    1.3.2. App Icon 和 Launch Image(Core Data 应用程序实践指南)
    1.3.1. 新建Xcode项目并设置故事板(Core Data 应用程序实践指南)
    php验证邮箱是否合法
    如何使js函数异步执行
  • 原文地址:https://www.cnblogs.com/y-dt/p/9748513.html
Copyright © 2011-2022 走看看