[git专题-02] git分支管理

分支操作

  • Git的分支,其实质是仅仅指向提交对象的可变指针,所以创建 删除分支开销非常小。HEAD指针表示当前指向的分支,分支的常用命令如下:

    #1 创建分支 名为testing
    git-demo1:$ git branch testing
    #2 查看分支:其中前面标记*的是当前分支
    git-demo1:$ git branch 
    *master
    testing
    #3 删除分支 当前分支不能为testing
    git-demo1:$ git branch -d testing
    #4 切换到指定分支工作后,后续的提交都将在该分支上操作
    git-demo1:$ git checkout testing
    #5 新建分支和切换分支可使用以下一个命令
    git-demo1:$ git checkout -b testing
    
  • 合并分支.首先切换到主动合并的分支,如master,然后再运行以下命令:分支合并的两种方式:

    • 如果发起合并的分支是待合并分支的直接上游,只是简单的将指针往前移动即可。

      # 考虑当前工作master分支指向16a458 新建testing分支后并切换到当前分支进行工作,经历了两次提交,由于master分支未做改变,所以master分支是testing的直接上游,只需简单移动master即可合并。
      git-demo1:$ git checkout master   #先切换到master
      git-demo1:$ git merge testing     #合并testing到master分支
      git-demo1:$ git branch -d testing #删除testing分支
      
    • 如果不是,则会找共同的祖先,然后再创建一个新的提交。

      # 考虑当前工作master分支指向bfdb36a 新建issue53分支并进行切换在此工作,经历了两次提交,由于在此过程中master分支更改一次提交,但是两次的修改没有冲突(不在同一处更改),合并会进行一次新的提交
      git-demo1:$ git checkout -b issue53   #先切换到master
      git-demo1:$ git merge issue53         #合并testing到master分支
      git-demo1:$ git branch -d issue53     #删除testing分支
      

远程连接

  • 远程仓库可以选择Github或者Giteegit秘钥访问配置如下:

    # 生成秘钥对 考虑同时使用github和gitee两个git服务商.
    yjf@yjf-box:~$ ssh-keygen -t rsa -f ~/.ssh/github_rsa -C "93628775@qq.com"  #生成github秘钥对
    yjf@yjf-box:~$ ssh-keygen -t rsa -f ~/.ssh/gitee_rsa -C "ccczyl2006@qq.com"    #生成gitee秘钥对
    
    # .ssh文件夹下新增config文件,编辑内容如下
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile /home/yjf/.ssh/github_rsa
    
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile /home/yjf/.ssh/gitee_rsa
    
    # 访问你自己的github页,进入`Settings->SSH and GPG keys->New SSH key`,然后在Key那栏下面将上一步生成的公钥文件github_ras.pub文本内容拷贝进去,最后点击 Add SSH key按钮添加.gitee也同样操作
    
  • 本地已有一个本地仓库,需要与远程关联。

    • 网上新建的仓库未带任何文件(无README.mdgitignoreLICENSE等文件),操作如下:

      #假定远程git仓库地址:https://gitee.com/ccczyl2006/git-demo1.git
      git-demo1:$ git remote add origin https://gitee.com/ccczyl2006/git-demo1.git
      git-demo1:$ git push -u origin master  #默认本地master分支关联远程仓库master分支
      
    • 带初始化文件(需要先git pull origin master --allow-unrelated-histories),操作如下:

      #假定远程git仓库地址:https://gitee.com/ccczyl2006/git-demo1.git
      git-demo1:$ git remote add origin https://gitee.com/ccczyl2006/git-demo1.git
      git-demo1:$ git pull origin master --allow-unrelated-histories
      git-demo1: git push -u origin master
      

远程仓库操作命令

  • git clone克隆远程仓库到本地

    # git协议的仓库地址写法:[user@]example.com:path/to/repo.git/ 会生成目录 与仓库名同名 默认的远程仓库名为origin
    ~:$ git clone git@github.com:ccczyl2006/awesome-vscode.git
    
  • git remote:用于管理远程仓库服务器的名称,在远程仓库clone的情况下一般默认为origin,支持以下命令:

    git-demo1:$ git remote   #显示远程主机名称
    origin
    git-demo1:$ git remote -v  #-v参数列出远程主机的详细信息
    origin    git@gitee.com:ccczyl2006/git-demo1.git (fetch)
    origin    git@gitee.com:ccczyl2006/git-demo1.git (push)
    
    # 增加远程主机 适用在先有本地仓库的情况下 origin为指定的远程仓库名 可以去其他名字
    git-demo1:$ git remote add origin git@gitee.com:ccczyl2006/git-demo1.git
    
  • git push:推送本地分支到远程的对应分支,没有则在远程新建同名的分支

    # git push 主机名 本地分支:远程分支
    #1 省略远程分支,则表示远程分支与本地分支同名
    git-demo1:$ git push origin v2    #本地v2推送到远程v2分支
    
    #2 如果在push时指定了-u参数,表示该主机为默认仓库 在当前分支推送时可直接输入git push 
    
    
  • git pull:拉取指定主机指定分支到本地,并与本地的指定分支合并,相当于执行git fetchgit merge合并

    # git pull 主机名 远程分支:本地分支
    git-demo1:$ git pull origin v3
    
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容