美文网首页
[git专题-02] git分支管理

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

作者: ccczyl2006 | 来源:发表于2019-11-15 22:31 被阅读0次

    分支操作

    • 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
      
      

    相关文章

      网友评论

          本文标题:[git专题-02] git分支管理

          本文链接:https://www.haomeiwen.com/subject/fhreictx.html