精华内容
参与话题
问答
  • [root@localhost helloworld-git]# git branch * master [root@localhost helloworld-git]# git branch new-branch [root@localhost helloworld-git]# git checkout new-branch Switched to branch 'new-branch'
    [root@localhost helloworld-git]# git branch
    * master
    [root@localhost helloworld-git]# git branch new-branch
    [root@localhost helloworld-git]# git checkout new-branch
    Switched to branch 'new-branch'
    [root@localhost helloworld-git]# git branch
      master
    * new-branch
    [root@localhost helloworld-git]# echo 'world hello'>helloworld.txt
    [root@localhost helloworld-git]# cathelloworld.txt
    bash: cathelloworld.txt: command not found
    [root@localhost helloworld-git]# cat helloworld.txt
    world hello
    [root@localhost helloworld-git]# git add helloworld.txt
    [root@localhost helloworld-git]# git commit -m helloworld-new-branch
    [new-branch 7ce1110] helloworld-new-branch
     Committer: root <root@localhost.localdomain>
    Your name and email address were configured automatically based
    on your username and hostname. Please check that they are accurate.
    You can suppress this message by setting them explicitly:


        git config --global user.name "Your Name"
        git config --global user.email you@example.com


    After doing this, you may fix the identity used for this commit with:


        git commit --amend --reset-author


     1 file changed, 1 insertion(+), 1 deletion(-)
    [root@localhost helloworld-git]# git log
    commit 7ce1110957b0d9c44cddb2663c3238570aa4eabe
    Author: root <root@localhost.localdomain>
    Date:   Thu Mar 21 17:06:29 2013 +0800


        helloworld-new-branch


    commit fddae22359221092ade97421800f308f0d8e3886
    Author: root <root@localhost.localdomain>
    Date:   Thu Mar 21 16:50:51 2013 +0800


        helloworld-master
    [root@localhost helloworld-git]# cat helloworld.txt
    world hello
    [root@localhost helloworld-git]# git checkout master
    Switched to branch 'master'
    [root@localhost helloworld-git]# cat helloworld.txt
    helloworld
    [root@localhost helloworld-git]# git checkout new-branch
    Switched to branch 'new-branch'
    [root@localhost helloworld-git]# cat helloworld.txt
    world hello
    [root@localhost helloworld-git]# 
    展开全文
  • Git - 团队合作利器 BranchGit Flow

    千次阅读 2016-08-02 21:05:06
    【原文地址】:从0开始学习 GitHub 系列之「团队合作利器 BranchGit 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的...

    【原文地址】:从0开始学习 GitHub 系列之「团队合作利器 Branch」

    Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到过,但是本篇会详细讲述什么是分支、分支的具体操作以及实际项目开发中到底是怎么依赖分支来进行团队合作的。

    1. 什么是分支?

    我知道读者中肯定有些人对分支这个概念比较模糊,其实你们可以这么理解,你们几个人一起去旅行,中间走到一个三岔口,每条路可能有不同的风景,你们约定 3 天之后在某地汇聚,然后各自出发了。而这三条分叉路就可以理解成你们各自的分支,而等你们汇聚的时候相当于把你们的分支进行了合并。

    2. 分支的常用操作
    通常我们默认都会有一个主分支叫 master ,下面我们先来看下关于分支的一些基本操作:

    新建一个叫 develop 的分支

    git branch develop

    这里稍微提醒下大家,新建分支的命令是基于当前所在分支的基础上进行的,即以上是基于 mater 分支新建了一个叫做 develop 的分支,此时 develop 分支跟 master 分支的内容完全一样。如果你有 A、B、C三个分支,三个分支是三位同学的,各分支内容不一样,如果你当前是在 B 分支,如果执行新建分支命令,则新建的分支内容跟 B 分支是一样的,同理如果当前所在是 C 分支,那就是基于 C 分支基础上新建的分支。

    切换到 develop 分支

    git checkout develop

    如果把以上两步合并,即新建并且自动切换到 develop 分支:

    git checkout -b develop

    把 develop 分支推送到远程仓库

    git push origin develop

    如果你远程的分支想取名叫 develop2 ,那执行以下代码:

    git push origin develop:develop2

    但是强烈不建议这样,这会导致很混乱,很难管理,所以建议本地分支跟远程分支名要保持一致。

    查看本地分支列表

    git branch

    查看远程分支列表

    git branch -r

    删除本地分支

    git branch -d develop
    git branch -D develop (强制删除)

    删除远程分支

    git push origin :develop

    如果远程分支有个 develop ,而本地没有,你想把远程的 develop 分支迁到本地:

    git checkout develop origin/develop

    同样的把远程分支迁到本地顺便切换到该分支:

    git checkout -b develop origin/develop

    3. 基本的团队协作流程
    一般来说,如果你是一个人开发,可能只需要 master、develop 两个分支就 ok 了,平时开发在 develop 分支进行,开发完成之后,发布之前合并到 master 分支,这个流程没啥大问题。

    如果你是 3、5 个人,那就不一样了,有人说也没多大问题啊,直接可以新建 A、B、C 三个人的分支啊,每人各自开发各自的分支,然后开发完成之后再逐步合并到 master 分支。然而现实却是,你正在某个分支开发某个功能呢,这时候突然发现线上有一个很严重的 bug ,不得不停下手头的工作优先处理 bug ,而且很多时候多人协作下如果没有一个规范,很容易产生问题,所以多人协作下的分支管理规范很重要,就跟代码规范一样重要,以下就跟大家推荐一种我们内部在使用的一种分支管理流程 Git Flow。

    4. Git Flow
    准确的说 Git Flow 是一种比较成熟的分支管理流程,我们先看一张图能清晰的描述他整个的工作流程:

    这里写图片描述

    第一次看上面那个图是不是一脸懵逼?跟我当时一样,不急,我来用简单的话给你们解释下。

    一般开发来说,大部分情况下都会拥有两个分支 master 和 develop,他们的职责分别是:

    master:永远处在即将发布(production-ready)状态

    develop:最新的开发状态

    确切的说 master、develop 分支大部分情况下都会保持一致,只有在上线前的测试阶段 develop 比 master 的代码要多,一旦测试没问题,准备发布了,这时候会将 develop 合并到 master 上。

    但是我们发布之后又会进行下一版本的功能开发,开发中间可能又会遇到需要紧急修复 bug ,一个功能开发完成之后突然需求变动了等情况,所以 Git Flow 除了以上 master 和 develop 两个主要分支以外,还提出了以下三个辅助分支:

    feature: 开发新功能的分支, 基于 develop, 完成后 merge 回 develop

    release: 准备要发布版本的分支, 用来修复 bug,基于 develop,完成后 merge 回 develop 和 master

    hotfix: 修复 master 上的问题, 等不及 release 版本就必须马上上线. 基于 master, 完成后 merge 回
    master 和 develop

    什么意思呢?

    举个例子,假设我们已经有 master 和 develop 两个分支了,这个时候我们准备做一个功能 A,第一步我们要做的,就是基于 develop 分支新建个分支:

    git branch feature/A

    看到了吧,其实就是一个规范,规定了所有开发的功能分支都以 feature 为前缀。

    但是这个时候做着做着发现线上有一个紧急的 bug 需要修复,那赶紧停下手头的工作,立刻切换到 master 分支,然后再此基础上新建一个分支:

    git branch hotfix/B

    代表新建了一个紧急修复分支,修复完成之后直接合并到 develop 和 master ,然后发布。

    然后再切回我们的 feature/A 分支继续着我们的开发,如果开发完了,那么合并回 develop 分支,然后在 develop 分支属于测试环境,跟后端对接并且测试的差不多了,感觉可以发布到正式环境了,这个时候再新建一个 release 分支:

    git branch release/1.0

    这个时候所有的 api、数据等都是正式环境,然后在这个分支上进行最后的测试,发现 bug 直接进行修改,直到测试 ok 达到了发布的标准,最后把该分支合并到 develop 和 master 然后进行发布。

    以上就是 Git Flow 的概念与大概流程,看起来很复杂,但是对于人数比较多的团队协作现实开发中确实会遇到这么复杂的情况,是目前很流行的一套分支管理流程,但是有人会问每次都要各种操作,合并来合并去,有点麻烦,哈哈,这点 Git Flow 早就想到了,为此还专门推出了一个 Git Flow 的工具,并且是开源的:

    GitHub 开源地址:https://github.com/nvie/gitflow

    简单点来说,就是这个工具帮我们省下了很多步骤,比如我们当前处于 master 分支,如果想要开发一个新的功能,第一步切换到 develop 分支,第二步新建一个以 feature 开头的分支名,有了 Git Flow 直接如下操作完成了:

    git flow feature start A

    这个分支完成之后,需要合并到 develop 分支,然而直接进行如下操作就行:

    git flow feature finish A

    如果是 hotfix 或者 release 分支甚至会自动帮你合并到 develop、master 两个分支。

    想必大家已经了解了这个工具的具体作用,具体安装与用法我就不多提了,感兴趣的可以看我下我之前写过的一篇博客:

    http://stormzhang.com/git/2014/01/29/git-flow/

    5. 总结
    以上就是我分享给你们的关于分支的所有知识,一个人你也许感受不到什么,但是实际工作中大都以团队协作为主,而分支是团队协作必备技能,而 Git Flow 是我推荐给你们的一个很流行的分支管理流程,也是我们薄荷团队内部一直在实践的一套流程,希望对你们有借鉴意义。

    展开全文
  •   git主要提倡的一种管理方式就是分支管理...分支建立:git branch newBranch commit 或者:git checkout -b newBranch commit分支切换: git checkout anotherBranch 删除分支: git branch -D existBr...

     

    git主要提倡的一种管理方式就是分支管理,所以这应该是每一个学习git的人应该掌握的。

    分支查看:
    git branch

    分支建立:
    git branch newBranch commit 或者:
    git checkout -b newBranch commit

    分支切换:

    git checkout anotherBranch

    删除分支:

    git branch -D existBranch (删除分支不管是否合并好)
    git branch -d existBranch (删除已经合并好的分支)

     

    展开全文
  • 同一个仓库多个分支进行同时修改,最后合并...#创建分支branch1并切换到分支branch1中 git branch MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master) $ git branch branch1 MY-PC@DESK...

    在这里插入图片描述
    同一个仓库多个分支进行同时修改,最后合并到同一个仓库中
    各个分支互不影响。相当于多个独立开发的环境。

    #创建分支branch1并切换到分支branch1中 git branch / git checkout

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git branch branch1
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git branch
      branch1
    * master
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git checkout branch1
    Switched to branch 'branch1'
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch1)
    

    #在分支branch1中创建文件1.txt

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch1)
    $ touch 1.txt
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch1)
    $ git add 1.txt
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch1)
    $ git commit -m "add 1.txt"
    [branch1 2514902] add 1.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 1.txt
    

    #分支可以看到所在路径根节点下的文件
    例如branch1是master的分支,test.txt在master下,
    即使我切换到branch1中也能看到。

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch1)
    $ ll
    total 1
    -rw-r--r-- 1 MY-PC 197609  0 6月   7 10:30 1.txt
    -rw-r--r-- 1 MY-PC 197609 13 6月   7 10:12 test.txt
    

    合并创建分支和切换分支两个命令 git checkout -b
    将git branch和git checkout合并成git checkout -b (branch)

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch1)
    $ git checkout -b branch2
    Switched to a new branch 'branch2'
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch2)
    

    #删除分支 git branch -d
    在branch2下创建分支branch3,切换到branch3中delete branch2,
    如果在branch2中delete branch2 会报错。

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch2)
    $ git checkout -b branch3
    Switched to a new branch 'branch3'
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ git branch -d branch2
    Deleted branch branch2 (was 2514902).
    

    在branch3中创建2.txt并在master中尝试删除branch3中的2.txt
    报错,因为此时branch3中已经发生变动
    而新增的2.txt还没有合并到master中。
    可以选择用大写-D参数强制删除

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git checkout branch3
    Switched to branch 'branch3'
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ touch 2.txt
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ vim 2.txt
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ cat 2.txt
    hello
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ git add 2.txt
    warning: LF will be replaced by CRLF in 2.txt.
    The file will have its original line endings in your working directory
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ git commit -m "add 2.txt"
    [branch3 628ce7f] add 2.txt
     1 file changed, 1 insertion(+)
     create mode 100644 2.txt
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (branch3)
    $ git checkout master
    Switched to branch 'master'
    Your branch is up to date with 'origin/master'.
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git branch -d branch3
    error: The branch 'branch3' is not fully merged.
    If you are sure you want to delete it, run 'git branch -D branch3'.
    

    #将branch3中的内容合并到master中,最后提交的一般是master git merge

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git merge branch3
    Updating c0b5233..628ce7f
    Fast-forward
     1.txt | 0
     2.txt | 1 +
     2 files changed, 1 insertion(+)
     create mode 100644 1.txt
     create mode 100644 2.txt
    
    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git push
    Enumerating objects: 7, done.
    Counting objects: 100% (7/7), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (6/6), 527 bytes | 105.00 KiB/s, done.
    Total 6 (delta 0), reused 0 (delta 0)
    To github.com:Jacobtsang/git-tutorial.git
       c0b5233..628ce7f  master -> master
    

    虽然现在本地仓master主干下有三个分支,
    而远端仓看到的只有master
    在这里插入图片描述
    #将分支push到远端 git push origin

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git push origin branch3
    Total 0 (delta 0), reused 0 (delta 0)
    remote:
    remote: Create a pull request for 'branch3' on GitHub by visiting:
    remote:      https://github.com/Jacobtsang/git-tutorial/pull/new/branch3
    remote:
    To github.com:Jacobtsang/git-tutorial.git
     * [new branch]      branch3 -> branch3
    

    在这里插入图片描述
    #在本地删除远端分支 git push origin :

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git push origin :branch3
    To github.com:Jacobtsang/git-tutorial.git
     - [deleted]         branch3
    

    在这里插入图片描述
    #push上去的分支想更改别的名字

    MY-PC@DESKTOP-S026G4J MINGW64 /c/Users/MY-PC/Desktop/git-tutorial (master)
    $ git push origin branch3:b3
    Total 0 (delta 0), reused 0 (delta 0)
    remote:
    remote: Create a pull request for 'b3' on GitHub by visiting:
    remote:      https://github.com/Jacobtsang/git-tutorial/pull/new/b3
    remote:
    To github.com:Jacobtsang/git-tutorial.git
     * [new branch]      branch3 -> b3
    

    在这里插入图片描述

    翻译自:https://codesofun.com

    展开全文
  • GitGit branchGit checkout常见用法

    千次阅读 2017-05-06 10:21:00
    git branchgit checkout经常在一起使用,所以在此将它们合在一起Git branch一般用于分支的操作,比如创建分支,查看分支等等,git branch不带参数:列出本地已经存在的分支,并且在当前分支的前面用”*”标记git...
  • 1. modify and add files to remote server  scp -p -P 29418 wangyonghui@10.2.48.50:hooks/commit-msg .git/hooks/  git status 查看当前目录修改是否争取... git branch -a 查看当前工作的branch  git checko
  • 常用的新建分支命令格式:git branch newbranchname/git checkout -b newbranchname。 git branchgit checkout -b的异同点: 相同点: git branchgit checkout -b都可以用于新建分支(默认基于当前分支结点...
  • git branch

    2017-11-08 10:15:48
    git-branch - List, create, or delete branchesgit branch [--color[=] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=] | --no-column] [--sort=<k
  • Git branch

    2016-08-31 11:18:32
    git branch 显示远程分支: git branch -r 显示全部分支(本地+远程): git branch -a 创建分支: git branch xxx 切换分支: git checkout xxx 创建+切换分支: git checkout -b xxx
  • Git Branch

    2017-08-22 19:56:44
    几乎每一种版本控制系统都以某种形式支持分支。...查看分支:git branch创建分支:git branch 切换分支:git checkout 创建+切换分支:git checkout -b 合并某分支到当前分支:git merge 删除分支:git branch -d <name
  • git branch [ branchname ] eg: git branch release-2019-09-24 # 创建一个分支名为release-2019-09-24 的分支 (2)切换分支: git checkout [ branchname ] (3)合并分支: git merge (4)列出分支:...
  • clone branch in git

    2016-03-30 09:14:41
    当我们远程仓库有一个master分支,三个其他次分支的时候,我想克隆其中一个次分支,就用git clone [uri] 却发现克隆下来的不是我想要的,后来明白 git clone默认会把远程...1 git branch -r -r --remotes List or de
  • 1.git clone 命令$ git clone <版本库的网址>比如,克隆jQuery的版本库。$ git clone https://github.com/jquery/jquery.git上面这种方法表示克隆master分支。$ git clone -b masterTest ...2.git branch 命令$ git b

空空如也

1 2 3 4 5 ... 20
收藏数 59,792
精华内容 23,916
关键字:

branch