精华内容
下载资源
问答
  • $ npm install branch-name-lint CLI用法 $ npx branch-name-lint $ npx branch-name-lint --help Usage npx branch-name-lint [configfileLocation JSON] Examples $ branch-name-lint $ branch-name-lint ...
  • 主要介绍了git分支(branch)操作相关命令及分支命令的使用的相关资料,需要的朋友可以参考下
  • branch-源码

    2021-03-31 13:55:04
    branch
  • Sonarqube社区分支插件 SonarQube的插件,允许在社区版本中进行分支分析。 支持 该插件不受SonarSource的维护或支持,也没有从SonarQube社区版迁移到任何商业版(开发人员版,企业版或数据中心版)的官方升级路径。...
  • git-split-branch git-split-branch将单个git分支拆分为多个分支,每个分支都包含一组指定的原始分支文件,并且仅包含影响该集合的提交。 这与通过使用索引过滤器选择特定文件所产生的效果类似。 (实际上,git-...
  • 分支名称 获取不带/ref/*前缀的分支信息 产出 输出 类型 例子 描述 is_default boolean true或false 检测动作是否在默认分支上运行 current_branch ... 始终为触发的工作流程运行返回有效的分支名称... id : branch-na
  • git-branch 从本地git存储库获取当前分支。 请考虑关注该项目的作者 ,并考虑为该项目以显示您的 :red_heart_selector: 和支持。 安装 使用安装: $ npm install --save git-branch 用法 const branch = require ...
  • 轨道分支 使用跟踪 git 远程分支的简单脚本。 安装 sudo cp track-branch ...# Or indicate another branch with: `track-branch <remote>/<branch>`, e.g. track-branch origin/develop 执照 麻省理工学院 :copyright:
  • $ git-branch-deploy some-remote/fix-issue-branch 它能做什么? 它在您的路径中运行以下命令: git reset git checkout . git clean -df git checkout master git pull git fetch some-remote git merge --no-...
  • git-branch-select 存储库中的交互式(本地)分支选择。 通过安装 $ npm install --global git-branch-select 用法 $ git branch-select [options] [search] # Alias it in your .gitconfig for added convenience,...
  • git branch常用分支操作

    千次阅读 热门讨论 2020-02-29 20:55:40
    local_branch_name:remote_branch_name 的一种简写,冒号前表示本地分支,冒号后面表示远程分支,如果只写一个就表示两个分支名相同,远程仓库中如果没有这个分支就会新建一个。 也就是说 git push -u origin dev...

    前言

    最近代码的版本控制工具由SVN换成了Git,只用管理个人项目常用的灵魂三步git addgit commitgit push看来是行不通了,之前虽然也一直在用 Git,但是用法很有限,主要集中在前面提到的三步,所以为了更好的工作,我决定还是好好总结一下。

    分支在Git的操作里有着很重要的地位,代表了不同的开发线路,创建一个分支,也就多了一个索引文件,相比于SVN分支拷贝全部文件来说来方便的多,所以Git使得按功能分支的开发模式变得非常简单,在开发过程中常常需要对分支进行操作。

    远程仓库

    本来就几个分支,操作上也没有太麻烦,但是加入了远程仓库以后,事情变得复杂起来。有了远程仓库一般意味着代码开发需要多人合作了,这时候常常会产生冲突,分支合并时也变得不那么容易了。

    远程仓库其实也很好理解,就是放在远处用来保存代码资源的一个仓库,其实和本地的代码库没有什么区别,这个远程仓库主要是为了把大家修改的代码都合并到一起,给大家提供一个统一的目标点。

    远程仓库究竟有多远,常见的代码托管平台:githubgitlab、码云都可以提供远程仓库,如果你在月球上放置一台可以联网的代码仓库服务器,那么距离就是38.4万千米,但是远程仓库也可以很近,你也可以把本机电脑的D盘里的代码仓库作为E盘的代码仓库的远程仓库,或许远程仓库可能只和你隔了一个文件夹。

    由于网络的原因,githubgitlab 访问常常很慢,所以为了做练习测试推送,我在码云创建了一个仓库 gitstart,它的地址大概是这个样子:git@gitee.com:myname/gitstart.git,创建的方法一搜一大把,上面提到的几个托管平台,在哪创建都可以,一定要记住地址,因为后面还要用到。

    建立联系

    本地创建文件夹并进入

    albert@homepc MINGW64 /d
    $ mkdir gitstart
    
    albert@homepc MINGW64 /d
    $ cd gitstart/
    
    albert@homepc MINGW64 /d/gitstart
    $
    

    这里的文件夹名字可以和远程仓库不同,但是为了看起来方便对应,还是取相同的名字好一点。

    初始化仓库

    albert@homepc MINGW64 /d/gitstart
    $ git init
    Initialized empty Git repository in D:/gitstart/.git/
    
    albert@homepc MINGW64 /d/gitstart (master)
    $
    

    临时插播好奇心(不在流程中)

    目前这个状态有点意思,初始化完之后,(master) 这个字符串表示当前是在 master分支,查一下日志看看:

    albert@homepc MINGW64 /d/gitstart (master)
    $ git log
    fatal: your current branch 'master' does not have any commits yet
    
    albert@homepc MINGW64 /d/gitstart (master)
    $
    

    提示也是正确的,说 master分支没有任何提交,但是我们查询一下分支看看:

    albert@homepc MINGW64 /d/gitstart (master)
    $ git branch -a
    
    albert@homepc MINGW64 /d/gitstart (master)
    $
    

    居然是空的,没有分支,查询 .git\HEAD 文件发现里面有一行 ref: refs/heads/master,说明当前分支时 master,但是为什么查询分支没有结果呢?

    打开 .git\refs\heads 目录,发现这个文件夹下根本没有 master文件,其实想想也对,Git 中的分支其实对应着 commit id,现在什么都没有提交,master 也就找不到 commit id,所以就是有 master 文件,里面也不知道写什么。

    查询远程仓库

    albert@homepc MINGW64 /d/gitstart (master)
    $ git remote -v
    
    albert@homepc MINGW64 /d/gitstart (master)
    $
    

    依旧什么内容都没有,说明还没有和远程仓库建立联系。

    与远程仓库建立对应关系

    albert@homepc MINGW64 /d/gitstart (master)
    $ git remote add origin git@gitee.com:myname/gitstart.git
    
    albert@homepc MINGW64 /d/gitstart (master)
    $ git remote -v
    origin  git@gitee.com:myname/gitstart.git (fetch)
    origin  git@gitee.com:myname/gitstart.git (push)
    
    albert@homepc MINGW64 /d/gitstart (master)
    $
    

    这一步需要注意,origin看起来就是一个远程仓库的别名,代表着 git@gitee.com:myname/gitstart.git 这个代码仓库,刚刚提到过,这个远程仓库也可以是本地的,所以你添加git remote add origin d:/test 也是可以的,就表明 gitstart 的远程仓库是本地的 test 仓库。

    第一个分支

    刚刚说过,现在本地库的状态有些特殊,实际上刚刚在码云上创建的 git@gitee.com:myname/gitstart.git 库也很特殊,他们都没有真正的分支,这时只要我们成功提交一次,创建一个commit id,就相当于初始化了master分支。

    添加README文件

    albert@homepc MINGW64 /d/gitstart (master)
    $ echo "learn git branch command">README.md
    
    albert@homepc MINGW64 /d/gitstart (master)
    $ git add README.md
    warning: LF will be replaced by CRLF in README.md.
    The file will have its original line endings in your working directory
    
    albert@homepc MINGW64 /d/gitstart (master)
    $ git commit -m"add readme file"
    [master (root-commit) 3226b63] add readme file
     1 file changed, 1 insertion(+)
     create mode 100644 README.md
    

    查询当前分支

    albert@homepc MINGW64 /d/gitstart (master)
    $ git branch -a
    * master
    

    这次可以是出现了,分支为 master,前面的 * 表示为当前分支。

    将分支推送到远程仓库

    albert@homepc MINGW64 /d/gitstart (master)
    $ git push -u origin master
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 248 bytes | 248.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: Powered by GITEE.COM [GNK-3.8]
    To gitee.com:myname/gitstart.git
     * [new branch]      master -> master
    Branch 'master' set up to track remote branch 'master' from 'origin'.
    

    至此,本地仓库和远程仓库就建立了联系,下面可以开始学习 Git 分支命令了。

    分支操作

    新建分支

    新建分支可以使用 git branch branch_name 命令,以下就是一个创建名为 release 分支的命令:

    albert@homepc MINGW64 /d/gitstart (master)
    $ git branch release
    

    也可以使用 git checkout -b branch_name 来创建一个新分支,创建完会自动切换到新分支:

    albert@homepc MINGW64 /d/gitstart (master)
    $ git checkout -b dev
    Switched to a new branch 'dev'
    
    albert@homepc MINGW64 /d/gitstart (dev)
    $
    

    切换分支

    这是一个很奇怪的命令,命令格式为 git checkout branch_name,总感觉 checkout 子命令包揽了不属于自己的工作,如果在git branch的基础上加一个参数会更合理的一点,但这和切换分支的实际含义可能还有关系,切换分支其实就是修改HEAD文件中的 commit id,而没有真正的发生切换。

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git checkout release
    Switched to branch 'release'
    
    albert@homepc MINGW64 /d/gitstart (release)
    $ git checkout dev
    Switched to branch 'dev'
    
    albert@homepc MINGW64 /d/gitstart (dev)
    $
    

    查看本地分支

    像刚才我们创建的 release 分支和 dev 分支都是在本地创建的,这样的分支通过 git branch 命令就可以查看

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch
    * dev
      master
      release
    

    这样就列举了本地的所有分支,在当前分支名字 dev 前面哈还有一个 * 作为标记

    查看远程分支

    只要在上面的命令基础上加上 -r 参数就行了

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch -r
      origin/master
    

    查询到的分支只有 origin/master 一个,这个分支是一开始我们进行第一次提交产生 master 分支之后,通过 git push -u origin master 推送到远程仓库的,所以现在只有一个。

    查看所有分支

    所有分支包括本地分支和远程分支,将 -r 参数换成 -a 参数就可以了

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch -a
    * dev
      master
      release
      remotes/origin/master
    

    将本地分支推送到远程仓库

    其实之前已经操作过了,可以试着复习一下,git push -u origin branch_name,其实这是一个简写,-u 可以写成 --set-upstream 表示设置上游分支,其实就是和远程仓库的分支建立联系。

    branch_name 也是 local_branch_name:remote_branch_name的一种简写,冒号前表示本地分支,冒号后面表示远程分支,如果只写一个就表示两个分支名相同,远程仓库中如果没有这个分支就会新建一个。

    也就是说 git push -u origin devgit push--set-upstream origin dev:dev 是一样的,下面来试一下,然后查看一下分支:

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git push -u origin dev
    Total 0 (delta 0), reused 0 (delta 0)
    remote: Powered by GITEE.COM [GNK-3.8]
    remote: Create a pull request for 'dev' on Gitee by visiting:
    remote:     https://gitee.com/myname/gitstart/pull/new/myname:dev...myname:master
    To gitee.com:myname/gitstart.git
     * [new branch]      dev -> dev
    Branch 'dev' set up to track remote branch 'dev' from 'origin'.
    
    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch -a
    * dev
      master
      release
      remotes/origin/dev
      remotes/origin/master
    

    冒号前后的米名字是不是一定相同呢?完全没有必要,我们可以让本地的 release 分支对应远程的 master 分支,只不过这样怪怪的,但是操作上完全可以的。

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git checkout release
    Switched to branch 'release'
    
    albert@homepc MINGW64 /d/gitstart (release)
    $ git push -u origin release:master
    Everything up-to-date
    Branch 'release' set up to track remote branch 'master' from 'origin'.
    

    查看本地分支与远程分支对应关系

    这个也是刚刚知道的,可以使用 git branch -vv 命令,注意是两个 v:

    albert@homepc MINGW64 /d/gitstart (release)
    $ git branch -vv
      dev     3226b63 [origin/dev] add readme file
      master  3226b63 [origin/master] add readme file
    * release 3226b63 [origin/master] add readme file
    

    执行这个命令之后可以看出,本地的 masterrelease 分支都对应着远程的 master 分支

    删除本地分支

    我们先复习一下新建分支,然后把它推送到远程仓库,再使用 git branch -d branch_name 命令进行删除

    albert@homepc MINGW64 /d/gitstart (release)
    $ git checkout -b feature_test
    Switched to a new branch 'feature_test'
    
    albert@homepc MINGW64 /d/gitstart (feature_test)
    $ git push origin feature_test
    Total 0 (delta 0), reused 0 (delta 0)
     remote: Powered by GITEE.COM [GNK-3.8]
    remote: Create a pull request for 'feature_test' on Gitee by visiting:
    remote:     https://gitee.com/myname/gitstart/pull/new/myname:feature_test...myname:master
    To gitee.com:myname/gitstart.git
     * [new branch]      feature_test -> feature_test
    
    albert@homepc MINGW64 /d/gitstart (feature_test)
    $ git branch -a
      dev
    * feature_test
      master
      release
      remotes/origin/dev
      remotes/origin/feature_test
      remotes/origin/master
    
    

    开始删除分支,删除之前记得切换到别的分支,否则删除不成功

    albert@homepc MINGW64 /d/gitstart (feature_test)
    $ git checkout dev
    Switched to branch 'dev'
    Your branch is up to date with 'origin/dev'.
    
    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch -d feature_test
    Deleted branch feature_test (was 3226b63).
    
    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch -a
    * dev
      master
      release
      remotes/origin/dev
      remotes/origin/feature_test
      remotes/origin/master
    

    删除远程分支

    通过上面的操作我们发现只删除了本地的分支,远程的分支还在,要想删除远程分支,需要使用 git push origin --delete branch_name 命令

    albert@homepc MINGW64 /d/gitstart (dev)
    $ git push origin --delete feature_test
    remote: Powered by GITEE.COM [GNK-3.8]
    To gitee.com:myname/gitstart.git
     - [deleted]         feature_test
    
    albert@homepc MINGW64 /d/gitstart (dev)
    $ git branch -a
    * dev
      master
      release
      remotes/origin/dev
      remotes/origin/master
    

    这次再查看时发现远程分支也被删掉了。

    获取远程主分支到本地

    其实 Git 的克隆命令默认就是把远程仓库的主分支下载到本地,我们可以使用 git clone 远程地址 本地文件夹 命令来克隆一个仓库,如果本地文件夹省略,则默认新建一个与仓库名相同的文件夹:

    albert@homepc MINGW64 /d
    $ git clone https://gitee.com/myname/gitstart.git gitstartcopy
    Cloning into 'gitstartcopy'...
    remote: Enumerating objects: 3, done.
    remote: Counting objects: 100% (3/3), done.
    remote: Total 3 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    
    albert@homepc MINGW64 /d
    $ cd gitstartcopy/
    
    albert@homepc MINGW64 /d/gitstartcopy (master)
    $ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/dev
      remotes/origin/master
    

    获取远程其他分支到本地

    从上面命令执行后的结果来看,当前本地仓库中只有 master 分支,其他的分支都是在远程仓库上,这时可以用 git checkout branch_name 命令来下载远程分支:

    albert@homepc MINGW64 /d/gitstartcopy (master)
    $ git checkout dev
    Switched to a new branch 'dev'
    Branch 'dev' set up to track remote branch 'dev' from 'origin'.
    
    albert@homepc MINGW64 /d/gitstartcopy (dev)
    $ git branch -a
    * dev
      master
      remotes/origin/HEAD -> origin/master
      remotes/origin/dev
      remotes/origin/master
    
    albert@homepc MINGW64 /d/gitstartcopy (dev)
    $ git branch -vv
    * dev    3226b63 [origin/dev] add readme file
      master 3226b63 [origin/master] add readme file
    

    看到这里可能会疑惑了,git checkout branch_name 不是切换分支的命令吗?实际上当 branch_name 分支在本地不存在而远程仓库存在时,这个命令与 git checkout -b <branch> --track <remote>/<branch> 含义相同,会在本地新建一个分支,并与远程分支建立联系。

    常用集合

    • 新建分支:git checkout -b branch_name
    • 切换分支:git checkout branch_name
    • 查看分支:git branch -a
    • 删除分支:git branch -d branch_name
    • 推送分支到远程:git push origin branch_name
    • 删除远程的分支:git push origin --delete branch_name
    • 拉取远程分支到本地:git checkout branch_name
    • 查询分支的对应关系:git branch -vv

    总结

    • 以上这些命令都是在本地测试过的,可能考虑的不太全面,不过没关系,以后的分支操作还会补充到这里。
    • 这些命令在有些特殊的情况下使用可能会遇到问题,如果大家发现了问题请及时指出,我会尽快修改的。
    展开全文
  • The current branch is not configured for pull No value for key branch.master.merge found in configuration
  • 适用于iOS的Branch SDK文档 查看
  • github 创建分支 (branch) 并提交分支

    千次阅读 2020-03-05 19:23:07
    github 创建分支 (branch) 并提交分支 1. Branch: master git clone https://github.com/ForeverStrongCheng/dbscan_clustering_algorithm strong@foreverstrong:~/darknet_work$ git clone ...

    github 创建分支 (branch) 并提交分支

    1. Branch: master

    git clone https://github.com/ForeverStrongCheng/dbscan_clustering_algorithm

    strong@foreverstrong:~/darknet_work$ git clone https://github.com/ForeverStrongCheng/dbscan_clustering_algorithm
    Cloning into 'dbscan_clustering_algorithm'...
    Username for 'https://github.com': chengyq116@163.com
    Password for 'https://chengyq116@163.com@github.com': 
    remote: Enumerating objects: 33, done.
    remote: Counting objects: 100% (33/33), done.
    remote: Compressing objects: 100% (26/26), done.
    remote: Total 33 (delta 6), reused 30 (delta 6), pack-reused 0
    Unpacking objects: 100% (33/33), done.
    Checking connectivity... done.
    strong@foreverstrong:~/darknet_work$
    

    在这里插入图片描述

    2. git branch

    git branch - 查看本地分支
    git branch -r - 查看远程分支
    git branch -a - 查看本地仓库和远程分支 (a 是 all 的简写)

    strong@foreverstrong:~/darknet_work$ cd dbscan_clustering_algorithm/
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    nothing to commit, working directory clean
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch
    * master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch -r
      origin/HEAD -> origin/master
      origin/master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    3. git branch dbscan_dev - git checkout dbscan_dev

    git branch dbscan_dev - 新建本地分支 dbscan_dev
    git checkout dbscan_dev - 切换到本地分支 dbscan_dev

    git checkout -b dev
    一条命令等同于以下两条命令
    git branch dev
    git checkout dev

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch dbscan_dev
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch
      dbscan_dev
    * master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch -r
      origin/HEAD -> origin/master
      origin/master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch -a
      dbscan_dev
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git checkout dbscan_dev 
    Switched to branch 'dbscan_dev'
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch
    * dbscan_dev
      master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    4. git push origin dbscan_dev

    git add . - 添加项目中所有文件
    git commit -m "20200303" - 添加备注 20200303
    git push origin dbscan_dev - 提交代码到指定分支 dbscan_dev

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ ls
    data  examples  libdbscan.so  LICENSE  Makefile  obj  README.md  results  scripts  src
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git status
    On branch dbscan_dev
    nothing to commit, working directory clean
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    modified: README.md

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git status
    On branch dbscan_dev
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git add .
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git commit -m "20200303"
    [dbscan_dev 8d99cf5] 20200303
     1 file changed, 1 deletion(-)
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git push origin dbscan_dev 
    Username for 'https://github.com': chengyq116@163.com
    Password for 'https://chengyq116@163.com@github.com': 
    Counting objects: 3, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 277 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
    remote: 
    remote: Create a pull request for 'dbscan_dev' on GitHub by visiting:
    remote:      https://github.com/ForeverStrongCheng/dbscan_clustering_algorithm/pull/new/dbscan_dev
    remote: 
    To https://github.com/ForeverStrongCheng/dbscan_clustering_algorithm
     * [new branch]      dbscan_dev -> dbscan_dev
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$
    

    5. git push origin dbscan_dev

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git status
    On branch dbscan_dev
    nothing to commit, working directory clean
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git branch
    * dbscan_dev
      master
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    modified: README.md

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git status
    On branch dbscan_dev
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git add .
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git commit -m "version 1.2."
    [dbscan_dev eb77a4b] version 1.2.
     1 file changed, 1 insertion(+), 1 deletion(-)
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    5.1 fatal: The current branch dbscan_dev has no upstream branch.

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git push
    warning: push.default is unset; its implicit value has changed in
    Git 2.0 from 'matching' to 'simple'. To squelch this message
    and maintain the traditional behavior, use:
    
      git config --global push.default matching
    
    To squelch this message and adopt the new behavior now, use:
    
      git config --global push.default simple
    
    When push.default is set to 'matching', git will push local branches
    to the remote branches that already exist with the same name.
    
    Since Git 2.0, Git defaults to the more conservative 'simple'
    behavior, which only pushes the current branch to the corresponding
    remote branch that 'git pull' uses to update the current branch.
    
    See 'git help config' and search for 'push.default' for further information.
    (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
    'current' instead of 'simple' if you sometimes use older versions of Git)
    
    fatal: The current branch dbscan_dev has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
        git push --set-upstream origin dbscan_dev
    
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    5.2 git push origin dbscan_dev

    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ git push origin dbscan_dev 
    Username for 'https://github.com': chengyq116@163.com
    Password for 'https://chengyq116@163.com@github.com': 
    Counting objects: 3, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 284 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
    To https://github.com/ForeverStrongCheng/dbscan_clustering_algorithm
       8d99cf5..eb77a4b  dbscan_dev -> dbscan_dev
    strong@foreverstrong:~/darknet_work/dbscan_clustering_algorithm$ 
    

    6. Branch: master

    在这里插入图片描述

    展开全文
  • java收银系统源码Branch Metrics React Native SDK 参考 这是我们开源 React Native SDK 的存储库。 此处提供的信息可用作 SDK 的参考手册。 请参阅下面的目录以获取本文档中特色内容的完整列表。 React本机参考 ...
  • git branch 分支

    万次阅读 2018-01-23 12:06:16
    Git自学之路(四)- git branch 分支 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程...

    Git自学之路(四)- git branch 分支

    几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。

    有人把 Git 的分支模型称为它的`‘必杀技特性’’,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。 理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。

    分支简介

    Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。

    在进行提交操作时,Git 会保存一个提交对象(commit object)。知道了 Git 保存数据的方式,我们可以很自然的想到——该提交对象会包含一个指向暂存内容快照的指针。 但不仅仅是这样,该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。

    Git 的分支,骑士分支上仅仅是指向提交对象的可变指针。 Git的默认分支名字是 master 。在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。它会在每次的提交操作中自动向前移动。

    注意: Git的 “master” 分支并不是一个特殊分支。它就跟其他分支完全没有区别。之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。

    分支的创建

    Git 创建新分支其实很简单,它只是为你创建了一个可以移动的新的指针。例如,创建一个 testing 分支,你需要用 git branch 命令:

    $ git branch testing
     
    • 1

    这会在当前所在的提交对象上创建一个指针。

    那么,Git 是如何知道当前在哪一个分支上呢? 也很简单,它有一个名为 HEAD 的特殊指针。 请注意它和许多其它版本控制系统(如 Subversion 或 CVS)里的 HEAD 概念完全不同。 在 Git 中,它是一个指针,指向当前所在的本地分支将 HEAD 想象为当前分支的别名)。 在本例中,你仍然在 master 分支上。 因为 git branch 命令仅仅创建一个新分支,并不会自动切换到新分支中去。

    你可以简单地使用 git log 命令查看各个分支当前所指的对象。 提供这一功能的参数是 –decorate。

    $ git log --oneline --decorate
    f30ab (HEAD, master, testing) add feature #32 - ability to add new
    34ac2 fixed bug #1328 - stack overflow under certain conditions
    98ca9 initial commit of my project
     
    • 1
    • 2
    • 3
    • 4

    正如你所见,当前 “master” 和 “testing” 分支均指向校验和以 f30ab 开头的提交对象。

    分支切换

    要切换到一个已存在的分支,使用 git checkout 命令。现在我们切换到新创建的 testing 分支去:

    $ git checkout testing
     
    • 1

    这样 HEAD 就指向 testing 分支了。

    那么,这样的实现方式会给我们带来什么好处呢?现在改动下在提交一次:

    $ vim test.rb
    $ git commit -a -m 'made a change'
     
    • 1
    • 2

    如图所示,你的 testing 分支向前移动了,但是 master 分支却没有,它仍然指向运行 git checkout 时所指的对象。 这就有意思了,现在我们切换回 master 分支看看:

    $ git checkout master
     
    • 1

    这条命令做了两件事。 一是使 HEAD 指回 master 分支,二是将工作目录恢复成 master 分支所指向的快照内容。 也就是说,你现在做修改的话,项目将始于一个较旧的版本。 本质上来讲,这就是忽略 testing 分支所做的修改,以便于向另一个方向进行开发。

    分支切换会改变你工作目录中的文件

    在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。

    再稍微做些修改并提交:

    $ vim test.rb
    $ git commit -a -m 'made other changes'
     
    • 1
    • 2

    现在,这个项目的提交历史已经产生了分叉。 因为刚才创建了一个新分支,并切换过去进行了一些工作,随后又切换回 master 分支进行了另外一些工作。 上述两次改动针对的是不同分支,你可以在不同分支间不断地来回切换和工作,并在时机成熟时将它们合并起来。 而所有这些工作,你需要的命令只有 branch、checkout 和 commit。

    在使用 git log 命令查看分叉历史。 运行 git log –oneline –decorate –graph –all ,它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。

    $ git log --oneline --decorate --graph --all
    * c2b9e (HEAD, master) made other changes
    | * 87ab2 (testing) made a change
    |/
    * f30ab add feature #32 - ability to add new formats to the
    * 34ac2 fixed bug #1328 - stack overflow under certain conditions
    * 98ca9 initial commit of my project
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    由于 Git 的分支实质上仅是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件,所以它的创建和销毁都异常高效。 创建一个新分支就像是往一个文件中写入 41 个字节(40 个字符和 1 个换行符),如此的简单能不快吗?

    这与过去大多数版本控制系统形成了鲜明的对比,它们在创建分支时,将所有的项目文件都复制一遍,并保存到一个特定的目录。 完成这样繁琐的过程通常需要好几秒钟,有时甚至需要好几分钟。所需时间的长短,完全取决于项目的规模。而在 Git 中,任何规模的项目都能在瞬间创建新分支。 同时,由于每次提交都会记录父对象,所以寻找恰当的合并基础(译注:即共同祖先)也是同样的简单和高效。 这些高效的特性使得 Git 鼓励开发人员频繁地创建和使用分支。

    分支的新建与合并

    新建分支

    创建新分支可以使用 git branch 命令,但想要在新建一个分支并同时切换到那个分支上怎么办呢?可以运行一个带有 -b 参数的 git checkout 命令,如你现在的线上系统出现一个 #10 问题,你可以专为这个问题创建一个分支进行修复:

    $ git checkout -b issue10
    Switched to a new branch "issue10"
     
    • 1
    • 2

    它是下面两条命令的简写:

    $ git branch issue10
    $ git checkout issue10
     
    • 1
    • 2

    现在你就可以在 issue10 这个分支上进行你的修复工作而不影响 master 分支。在此过程中,issue10 分支会不断向前推进,因为你已经切换到该分支。当然在这个过程中你也可以切换回 master 分支中开发。

    合并分支

    当你在 issue10 分支中修复之后就需要合并到 master 分支了,首先应该切换到 master 分支,但是,在切换之前,要留意你的工作目录和暂存区里那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止 Git 切换到该分支。 最好的方法是,在你切换分支之前,保持好一个干净的状态。 有一些方法可以绕过这个问题(即,保存进度(stashing) 和 修补提交(commit amending))。 现在,我们假设你已经把你的修改全部提交了,这时你可以切换回 master 分支了:

    $ git checkout master
     
    • 1

    当你切换回 master 后就可以使用 git merge 命令进行分支的合并工作了:

    $ git merge issue10
     
    • 1

    执行上述命令后 Git 会很聪明的为你完成合并工作,Git 将此次合并的结果做一个新的快照并且自动创建一个新的提交指向它,一切就是这么简单。

    遇到冲突时的分支合并

    一个在聪明的人也会有出错的时候,Git 也一样,有时候合并操作并不会如此顺利。如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。 如果你在对 #10 问题的修改和在 master 的修改都涉及到同一个文件的同一处,在合并它们的时候就会产生合并冲突:

    $ git merge issue10
    Auto-merging index.html
    CONFLICT (content): Merge conflict in index.html
    Automatic merge failed; fix conflicts and then commit the result.
     
    • 1
    • 2
    • 3
    • 4

    此时 Git 做了合并,但是没有自动地创建一个新的合并提交。 Git 会暂停下来,等待你去解决合并产生的冲突。 你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件。

    任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:

    <<<<<<< HEAD:index.html
    <div id="footer">contact : email.support@github.com</div>
    =======
    <div id="footer">
     please contact us at support@github.com
    </div>
    >>>>>>> issue10:index.html
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 issue10 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。 例如,你可以通过把这段内容换成下面的样子来解决冲突:

    <div id="footer">
    please contact us at email.support@github.com
    </div>
     
    • 1
    • 2
    • 3

    上述的冲突解决方案仅保留了其中一个分支的修改,并且 <<<<<<< , ======= , 和 >>>>>>> 这些行被完全删除了。 在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。

    你可以再次运行 git status 来确认所有的合并冲突都已被解决,如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入 git commit 来完成合并提交。

    删除分支

    既然分支 issue10 的修复已经完全合并到 master 分支了,你已不在需要 issue10 分支了,删除它并不会丢失任何东西。现在你可以使用带参数 -d 的 git branch 命令进行分支的删除工作:

    $ git branch -d issue10
     
    • 1

    分支管理

    git branch 命令不只是可以创建与删除分支。 如果不加任何参数运行它,会得到当前所有分支的一个列表:

    $ git branch
      iss53
    * master
      testing
     
    • 1
    • 2
    • 3
    • 4

    注意 master 分支前的 * 字符:它代表现在检出的那一个分支(也就是说,当前 HEAD 指针所指向的分支)。 这意味着如果在这时候提交,master 分支将会随着新的工作向前移动。 如果需要查看每一个分支的最后一次提交,可以运行 git branch -v 命令:

    $ git branch -v
      iss53   93b412c fix javascript issue
    * master  7a98805 Merge branch 'iss53'
      testing 782fd34 add scott to the author list in the readmes
     
    • 1
    • 2
    • 3
    • 4

    –merged 与 –no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。

    当包含了还未合并的工作的分支,尝试使用 git branch -d 命令删除它时会失败,如果真的想要删除分支并丢掉那些工作,可以使用 -D 选项强制删除它。

    分支开发工作流

    由于分支管理的便捷,因此衍生出一些典型的工作模式,可根据项目实际情况选择使用。

    长期分支

    因为 Git 使用简单的三方合并,所以就算在一段较长的时间内,反复把一个分支合并入另一个分支,也不是什么难事。 也就是说,在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些特性分支合并入其他分支中。

    许多使用 Git 的开发者都喜欢使用这种方式来工作,比如只在 master 分支上保留完全稳定的代码——有可能仅仅是已经发布或即将发布的代码。 他们还有一些名为 develop 或者 next 的平行分支,被用来做后续开发或者测试稳定性——这些分支不必保持绝对稳定,但是一旦达到稳定状态,它们就可以被合并入 master 分支了。 这样,在确保这些已完成的特性分支(短期分支,比如之前的 issue10 分支)能够通过所有测试,并且不会引入更多 bug 之后,就可以合并入主干分支中,等待下一次的发布。

    一些大型项目还有一个 proposed(建议) 或 pu: proposed updates(建议更新)分支,它可能因包含一些不成熟的内容而不能进入 next 或者 master 分支。 这么做的目的是使你的分支具有不同级别的稳定性;当它们具有一定程度的稳定性后,再把它们合并入具有更高级别稳定性的分支中。 再次强调一下,使用多个长期分支的方法并非必要,但是这么做通常很有帮助,尤其是当你在一个非常庞大或者复杂的项目中工作时。

    特性分支

    特性分支对任何规模的项目都适用。 特性分支是一种短期分支,它被用来实现单一特性或其相关工作。 也许你从来没有在其他的版本控制系统(VCS)上这么做过,因为在那些版本控制系统中创建和合并分支通常很费劲。 然而,在 Git 中一天之内多次创建、使用、合并、删除分支都很常见。

    你在自己的特性分支(如 iss53 和 hotfix 分支)中提交了一些更新,并且在它们合并入主干分支之后,你又删除了它们。 这项技术能使你快速并且完整地进行上下文切换(context-switch)——因为你的工作被分散到不同的流水线中,在不同的流水线中每个分支都仅与其目标特性相关,因此,在做代码审查之类的工作的时候就能更加容易地看出你做了哪些改动。 你可以把做出的改动在特性分支中保留几分钟、几天甚至几个月,等它们成熟之后再合并,而不用在乎它们建立的顺序或工作进度。

    请牢记,当你做这么多操作的时候,这些分支全部都存于本地。 当你新建和合并分支的时候,所有这一切都只发生在你本地的 Git 版本库中 —— 没有与服务器发生交互。

    远程分支

    远程引用是对远程仓库的引用(指针),包括分支、标签等等。 可通过 git ls-remote (remote) 来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支。

    远程跟踪分支是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们会自动移动。 远程跟踪分支像是你上次连接到远程仓库时,那些分支所处状态的书签。

    它们以 (remote)/(branch) 形式命名。假设你的网络里有一个在 git.ourcompany.com 的 Git 服务器。 如果你从这里克隆,Git 的 clone 命令会为你自动将其命名为 origin,拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master。 Git 也会给你一个与 origin 的 master 分支在指向同一个地方的本地 master 分支,这样你就有工作的基础。

    “origin” 并无特殊含义 
    远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样。 同时 “master” 是当你运行 git init 时默认的起始分支名字,原因仅仅是它的广泛使用,“origin” 是当你运行 git clone 时默认的远程仓库名字。 如果你运行 git clone -o booyah,那么你默认的远程分支名字将会是 booyah/master。

    推送分支到远程服务器

    当你想要公开分享一个分支时,需要将其推送到有写入权限的远程仓库上。 本地的分支并不会自动与远程仓库同步 - 你必须显式地推送想要分享的分支。 这样,你就可以把不愿意分享的内容放到私人分支上,而将需要和别人协作的内容推送到公开分支。

    如果希望和别人一起在名为 serverfix 的分支上工作,你可以像推送第一个分支那样推送它。 运行 git push (remote) (branch):

    $ git push origin serverfix
    Counting objects: 24, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (15/15), done.
    Writing objects: 100% (24/24), 1.91 KiB | 0 bytes/s, done.
    Total 24 (delta 2), reused 0 (delta 0)
    To https://github.com/schacon/simplegit
     * [new branch]      serverfix -> serverfix
     ```
    
     Git 自动将 serverfix 分支名字展开为 refs/heads/serverfix:refs/heads/serverfix,那意味着,“推送本地的 serverfix 分支来更新远程仓库上的 serverfix 分支。”  
    
    下一次其他协作者从服务器上抓取数据时,他们会在本地生成一个远程分支 origin/serverfix,指向服务器的 serverfix 分支的引用:  
    
    ```git
    $ git fetch origin
    remote: Counting objects: 7, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 3 (delta 0), reused 3 (delta 0)
    Unpacking objects: 100% (3/3), done.
    From https://github.com/schacon/simplegit
     * [new branch]      serverfix    -> origin/serverfix
    
    
    
    
    <div class="se-preview-section-delimiter"></div>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    要特别注意的一点是当抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本(拷贝)。 换一句话说,这种情况下,不会有一个新的 serverfix 分支 - 只有一个不可以修改的 origin/serverfix 指针。

    可以运行 git merge origin/serverfix 将这些工作合并到当前所在的分支。 如果想要在自己的 serverfix 分支上工作,可以将其建立在远程跟踪分支之上:

    $ git checkout -b serverfix origin/serverfix
    Branch serverfix set up to track remote branch serverfix from origin.
    Switched to a new branch 'serverfix'
    
    
    
    
    <div class="se-preview-section-delimiter"></div>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这会给你一个用于工作的本地分支,并且起点位于 origin/serverfix。

    跟踪分支

    从一个远程跟踪分支检出一个本地分支会自动创建一个叫做 “跟踪分支”(有时候也叫做 “上游分支”)。 跟踪分支是与远程分支有直接关系的本地分支。 如果在一个跟踪分支上输入 git pull,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支。

    当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master 分支。 然而,如果你愿意的话可以设置其他的跟踪分支 - 其他远程仓库上的跟踪分支,或者不跟踪 master 分支。 可运行 git checkout -b [branch] [remotename]/[branch]。 这是一个十分常用的操作所以 Git 提供了 –track 快捷方式:

    $ git checkout --track origin/serverfix
    Branch serverfix set up to track remote branch serverfix from origin.
    Switched to a new branch 'serverfix'
    
    
    
    
    <div class="se-preview-section-delimiter"></div>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    将本地分支与远程分支设置为不同名字:

    $ git checkout -b sf origin/serverfix
    Branch sf set up to track remote branch serverfix from origin.
    Switched to a new branch 'sf'
    
    
    
    
    <div class="se-preview-section-delimiter"></div>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    现在,本地分支 sf 会自动从 origin/serverfix 拉取。

    设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支,你可以在任意时间使用 -u 或 –set-upstream-to 选项运行 git branch 来显式地设置。

    $ git branch -u origin/serverfix
    Branch serverfix set up to track remote branch serverfix from origin.
    
    
    
    
    <div class="se-preview-section-delimiter"></div>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    查看设置的所有跟踪分支,可以使用 git branch 的 -vv 选项。 这会将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有。

    $ git branch -vv
      iss53     7e424c3 [origin/iss53: ahead 2] forgot the brackets
      master    1ae2a45 [origin/master] deploying index fix
    * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it
      testing   5ea463a trying something new
    
    
    
    
    <div class="se-preview-section-delimiter"></div>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里可以看到 iss53 分支正在跟踪 origin/iss53 并且 “ahead” 是 2,意味着本地有两个提交还没有推送到服务器上。 也能看到 master 分支正在跟踪 origin/master 分支并且是最新的。 接下来可以看到 serverfix 分支正在跟踪 teamone 服务器上的 server-fix-good 分支并且领先 2 落后 1,意味着服务器上有一次提交还没有合并入同时本地有三次提交还没有推送。 最后看到 testing 分支并没有跟踪任何远程分支。

    需要重点注意的一点是这些数字的值来自于你从每个服务器上最后一次抓取的数据。 这个命令并没有连接服务器,它只会告诉你关于本地缓存的服务器数据。 如果想要统计最新的领先与落后数字,需要在运行此命令前抓取所有的远程仓库。 可以像这样做:$ git fetch –all; git branch -vv

    拉取

    当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容。 它只会获取数据然后让你自己合并。 然而,有一个命令叫作 git pull 在大多数情况下它的含义是一个 git fetch 紧接着一个 git merge 命令。 如果有一个像之前章节中演示的设置好的跟踪分支,不管它是显式地设置还是通过 clone 或 checkout 命令为你创建的,git pull 都会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据然后尝试合并入那个远程分支。

    由于 git pull 的魔法经常令人困惑所以通常单独显式地使用 fetch 与 merge 命令会更好一些。

    删除远程分支

    假设你已经通过远程分支做完所有的工作了 - 也就是说你和你的协作者已经完成了一个特性并且将其合并到了远程仓库的 master 分支(或任何其他稳定代码分支)。 可以运行带有 –delete 选项的 git push 命令来删除一个远程分支。 如果想要从服务器上删除 serverfix 分支,运行下面的命令:

    git 
    $ git push origin --delete serverfix 
    To https://github.com/schacon/simplegit 
    - [deleted] serverfix 

    基本上这个命令做的只是从服务器上移除这个指针。 Git 服务器通常会保留数据一段时间直到垃圾回收运行,所以如果不小心删除掉了,通常是很容易恢复的。

    至此,你现在应该能自如地创建并切换至新分支、在不同分支之间切换以及合并本地分支,你现在应该也能通过推送你的分支至共享服务以分享它们、使用共享分支与他人协作。

    展开全文
  • 我没有任何与Branch服务相关的东西,我创建了这个库是因为我使用了Branch,编写了这个简单的包装程序,并且想与社区共享它。 建立管理员: $manager = new Manager([ 'key' => 'key_test', 'secret' => 'key_...
  • git branch简介

    千次阅读 2018-06-05 15:15:01
    git-branch手册页NAME名称git-branch - 列出,创建或删除分支SYNOPSIS概要git branch [--color[=&lt;when&gt;] | --no-color] [-r | -a] [--list] [-v [--abbrev=&lt;length&gt; | --no-abbrev]] ...

    git-branch手册页

    NAME名称

    git-branch - 列出,创建或删除分支

    SYNOPSIS概要

    git branch [--color[=<when>] | --no-color] [-r | -a]
          [--list] [-v [--abbrev=<length> | --no-abbrev]]
          [--column[=<options>] | --no-column]
          [(--merged | --no-merged | --contains) [<commit>]] [<pattern>…​]
    git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
    git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
    git branch --unset-upstream [<branchname>]
    git branch (-m | -M) [<oldbranch>] <newbranch>
    git branch (-d | -D) [-r] <branchname>…​
    git branch --edit-description [<branchname>]

    DESCRIPTION描述

    如果--list给出,或者如果没有非选项参数,则列出现有分支; 当前分支将突出显示星号。选项-r会导致远程追踪分支被列出,选项-a显示本地和远程分支。如果<pattern> 给出a,则将其用作外壳通配符,以将输出限制为匹配的分支。如果给出多个模式,则显示一个分支,如果它匹配任何模式。请注意,提供时 <pattern>,您必须使用--list; 否则该命令被解释为分支创建。

    --contains,仅显示包含指定提交的分支(换句话说,其提示提交的分支是指定提交的后代)。使用时--merged,只会将分支合并到指定的提交中(即,其提交提交可从指定提交中获得的分支)将被列出。随着--no-merged唯一分支机构不合并到一个名为承诺将陆续上市。如果缺少<commit>参数,则默认为HEAD(即当前分支的尖端)。

    该命令的第二种形式创建一个名为<branchname>的新分支头,它指向当前的HEAD或<start-point>(如果给出)。

    请注意,这将创建新的分支,但不会将工作树切换到它; 使用“git checkout<newbranch>”切换到新分支。

    当一个本地分支从远程跟踪分支启动时,Git设置分支(特别是branch.<name>.remotebranch.<name>.merge 配置条目),以便git pull将从远程跟踪分支适当合并。此行为可能通过全局branch.autoSetupMerge配置标志进行更改 。该设置可以通过使用--track--no-track选项来覆盖,并在稍后使用git branch --set-upstream-to

    使用-m-M选项,<oldbranch>将被重命名为<newbranch>。如果<oldbranch>具有相应的reflog,则将其重命名为匹配<newbranch>,并且会创建reflog条目以记住分支重命名。如果<newbranch>存在,-M必须用于强制重命名发生。

    带有-d-D选项,<branchname>将被删除。您可以指定多个分支进行删除。如果分支当前有reflog,则reflog也将被删除。

    使用-r连同-d删除远程跟踪分支。请注意,如果远程跟踪分支不再存在于远程存储库中,或者git获取配置为不再获取它们,那么只有删除远程跟踪分支才有意义。另请参阅git-remote(1)的prune子命令以清除所有过时的远程跟踪分支。

    OPTIONS选项

    -d

    - delete

    删除分支。该分支必须完全合并到其上游分支中,或者HEAD如果没有设置 上游分支--track--set-upstream

    -D

    快捷键--delete --force

    -l

    --create-reflog

    创建分支的reflog。这将激活对分支ref的所有更改的记录,从而可以使用基于日期的sha1表达式,如“<branchname>@ {yesterday}”。请注意,在非裸仓库中,configlog core.logallrefupdates选项通常默认启用reflog 。

    -F

    - force

    如果<branchname>已存在,请将<branchname>重置为<startpoint>。没有-f git分支拒绝改变现有的分支。结合-d(或--delete),允许删除分支,而不考虑其合并状态。结合 -m(或--move),即使新分支名称已存在,也允许重命名分支。

    -m

    - move

    移动/重命名分支和相应的reflog。

    -M

    快捷键--move --force

    --color [= <when>]

    颜色分支突出显示当前,本地和远程跟踪分支。该值必须始终(默认),永不,或自动。

    --no-color

    关闭分支颜色,即使配置文件将默认设置为颜色输出。和...一样--color=never

    --column [= <options>]

    --no-column

    在列中显示分支列表。有关选项语法,请参阅配置变量column.branch。--column--no-column 不带选项相当于总是永不分别。

    该选项仅适用于非详细模式。

    -r

    --remotes

    列出或删除(如果与-d一起使用)远程跟踪分支。

    -a

    - all

    列出远程追踪分行和当地分行。

    --list

    激活列表模式。git branch <pattern>会尝试创建一个分支,gitbranch --list <pattern>用来列出匹配的分支。

    -v

    -vv

    --verbose

    在列表模式下,显示sha1并为每个头提交主题行,以及与上游分支(如果有)的关系。如果给出两次,也打印上游分支的名称(另请参阅gitremote show <remote>)。

    -q

    - quiet

    创建或删除分支时更安静,抑制非错误消息。

    --abbrev = <length>

    改变输出列表中sha1的最小显示长度。默认值是7,可以由core.abbrev config选项覆盖。

    --no-abbrev

    在输出列表中显示完整的sha1,而不是缩写它们。

    -t

    - track

    创建新分支时,设置branch.<name>.remote和 branch.<name>.merge配置条目以将起点分支标记为新分支的“上游”。这个配置会告诉git显示in gitstatus和in两个分支之间的关系git branch -v。此外,它在git pull没有参数的情况下指示新分支签出时从上游撤出。

    当起始点是远程跟踪分支时,此行为是默认行为。false如果需要git checkoutgit branch可以将branch.autoSetupMerge配置变量设置为,并且始终表现得如同--no-track 被赋予。always如果您想在起点为本地或远程跟踪分支时想要此行为,请将其设置为。

    --no-track

    即使branch.autoSetupMerge配置变量为true,也不要设置“上游”配置。

    --set-upstream

    如果指定的分支尚不存在或者--force已经给出,则完全相同--track。否则,--track在创建分支时设置配置,除非分支指向的地方不更改。

    -u <upstream>

    --set-upstream-to= <upstream>

    设置<branchname>的跟踪信息,以便<upstream>被视为<branchname>的上游分支。如果未指定<branchname>,则默认为当前分支。

    --unset-upstream

    删除<branchname>的上游信息。如果未指定分支,则默认为当前分支。

    --edit-description

    打开一个编辑器,编辑文本解释分支是干什么用的,通过其他各种命令使用(例如format-patch, request-pullmerge(如果启用))。可以使用多行解释。

    --contains [<commit>]

    只列出包含指定提交的分支(如果未指定,则为HEAD)。意味着--list

    --merged [<commit>]

    仅列出可从指定提交中获得提示的分支(如果未指定,则为HEAD)。意味着--list

    --no-merged [<commit>]

    只列出提示无法从指定提交中获得的分支(如果未指定,则为HEAD)。意味着--list

    <branchname>

    要创建或删除的分支的名称。新的分支名称必须通过由git-check-ref-format(1)定义的所有检查 。其中一些检查可能会限制分支名称中允许的字符。

    <start-point>

    新的分支头将指向这个提交。它可以作为分支名称,提交标识或标签给出。如果省略此选项,则将使用当前的HEAD。

    <oldbranch>

    要重命名的现有分支的名称。

    <newbranch>

    现有分支的新名称。与<branchname>相同的限制适用。

    EXAMPLES例子

    从已知标签开始开发

    $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
    $ cd my2.6
    $ git branch my2.6.14 v2.6.14    (1) 
    $ git checkout my2.6.14

    1.      这一步和下一步可以合并成一个单步执行“checkout -b my2.6.14 v2.6.14”。

    删除不需要的分支

    $ git clone git://git.kernel.org/.../git.git my.git
    $ cd my.git
    $ git branch -d -r origin / todo origin / html origin / man    (1) 
    $ git branch -D test                                     (2)

    1.      删除远程追踪分支“todo”,“html”和“man”。下一次 抓取拉取将再次创建它们,除非您将它们配置为不要。请参阅git-fetch(1)。

    2.      即使“主”分支(或任何一个分支当前被检出)也没有从测试分支提交所有提交,请删除“测试”分支。

    NOTES笔记

    如果您正在创建要立即签出的分支,那么使用git checkout命令可以更容易-b地创建分支并使用单个命令进行检查。

    这些选项--contains--merged--no-merged提供三个相关但不同的目的:

    ·        --contains <commit> 用于查找所有需要特别注意的分支,因为这些分支包含指定的<commit>。

    ·        --merged 用于查找可以安全删除的所有分支,因为这些分支完全由HEAD包含。

    ·        --no-merged 用于查找合并到HEAD中的候选分支,因为这些分支未被HEAD完全包含。


    最后更新时间2015-10-19 19:46:04协调世界时

     


    展开全文
  • java收银系统源码Branch Metrics React Native SDK 参考 这是我们开源 React Native SDK 的存储库。 此处提供的信息可用作 SDK 的参考手册。 请参阅下面的目录以获取本文档中特色内容的完整列表。 React本机参考 ...
  • 1、执行命令git checkout br_rename_old...3、执行命令git branch -m br_rename_old br_rename_new将本地仓库的br_rename_old的名称修改为br_rename_new 4、执行命令git push origin --delete br_rename_old将远程分支b
  • 问题原因: 问题的原因是在分支创建时,使用了与远程不一致的分支名 例如远程分支是 feature/...所以导致git push时报错fatal: The upstream branch of your current branch does not match the name of your current
  • 1.选择本地文件位置,主项目右键 2.空白处右键,打开git的Git bash here 3.输入 命令: git branch --set-upstream-to=origin/master 4.返回idea重新拉取
  • git branch的作用

    千次阅读 2020-07-08 19:21:24
    1、先建一个分支(所有的改动都是在分支上) git branch 分支名 2、切换到新建的分支 git checkout 分支名切换到新的分支 3、先提交代码到分支上 git add . git commit -m “” 4、先切换至主支上 ...
  • java收银系统源码Branch Metrics React Native SDK 参考 这是我们开源 React Native SDK 的存储库。 此处提供的信息可用作 SDK 的参考手册。 请参阅下面的目录以获取本文档中特色内容的完整列表。 React本机参考 ...
  • git 分支branch详解

    万次阅读 2018-08-24 21:05:36
    branch --set-upstream test origin/test 或者git branch -f --track test origin/test 这里我们就让我们本地已经存在的test分支来追踪远程的test分支。 4.git分支管理  git创建分支于合并分支是如此简单快捷...
  • Android Branch deferred deep link 深度链接

    千次阅读 2019-10-28 15:02:14
    Branch 实现Android端 deferred deep link 官网sdk文档地址:https://docs.branch.io/apps/android/ 1. Configure Branch(配置Branch) 2. Install Branch Import the Branch SDK to your build.gradle // ...
  • No tracked branch configured for branch master or the branch doesn't exist. To make your branch track a remote branch call, for example, git branch --set-upstream-to=origin/master master 【原因...
  • $ npm install default-branch 用法 const defaultBranch = require ( 'default-branch' ) ; defaultBranch ( 'Knutakir/emorjis' ) . then ( branch => { console . log ( branch ) ; // => main } ) ; ...
  • java收银系统源码Branch Metrics React Native SDK 参考 这是我们开源 React Native SDK 的存储库。 此处提供的信息可用作 SDK 的参考手册。 请参阅下面的目录以获取本文档中特色内容的完整列表。 React本机参考 ...
  • java收银系统源码Branch Metrics React Native SDK 参考 这是我们开源 React Native SDK 的存储库。 此处提供的信息可用作 SDK 的参考手册。 请参阅下面的目录以获取本文档中特色内容的完整列表。 React本机参考 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 230,306
精华内容 92,122
关键字:

branch