关于本地版本库的操作,请见:Git入门——本地版本库操作

本篇提到的所有命令: 小结

前面提到,Git相对于传统的SVN有着很大的优势,其中之一就在于集中式系统中,版本库只能存在于中央服务器上;而在Git中,版本库可以克隆多个,甚至在同一台主机中也可以克隆多个版本库。当然,日常开发过程中,还是会有一台主机充当中央服务器的角色,作为整个项目的整体基准。我们可以自己搭建一个git服务器,也可以直接使用github所提供的免费仓库托管服务。 在本文中我们使用GitHub。在使用之前,需要注册GitHub账号,并且在本地与GitHub上设置SSH,具体操作请参照:SSH设置

一、远程仓库的添加与克隆
        1、关联本地仓库
              首先在GitHub网站上创建仓库


            创建完成后,我们可以选择将这个库克隆至本地,也可以将本地已经创建好的库关联至远程库,这里我们关联。

                    a、使用git remote add origin 仓库地址命令将远程库与本地库关联
                             
      仓库地址有两种形式,https形式: https://github.com/zhuwq585/DataStructure-JavaScript.git
                             
                           
                ssr形式: git@github.com:zhuwq585/DataStructure-JavaScript.git
                             
      使用https形式则每次需要输入用户名密码且速度慢,使用ssr形式就直接调用先前配置的ssr密钥进行认证,无需输入用户名密码。
                    b、使用git push -u origin master命令将本地仓库推送至远程库
           
            这时就可以在github上看到推送的文件了

        2、从远程仓库克隆
            还是老办法,先在GitHub上建立仓库。使用git clone 远程库地址命令克隆仓库。
            
            之后添加文件,提交并使用git push命令推送至远程仓库即可。
           

二、分支管理
        分支是一个在多人协作开发中非常有用的功能,开发不同部分的人可以创建各自的分支,在不影响别人的情况下工作,待开发完成后再合并至主分支。Git的分支功能非常高效。每次commit操作都会生成一个新的版本,各个版本按照时间的顺序串接起来就是一条版本时间线。当创建了分支之后,我们可以拥有并行的多条时间线,并在合适的时候把其它的分支合并到总分支(master)上,这就是分支的功能。  关于分支的概念,http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000 中的图画的非常形象
        1、 创建分支
               使用
git branch 分支名 创建分支
               使用
git branch 查看分支 标注*的是当前分支
               使用
git checkout 分支名 切换分支
               使用 git branch -d 分支名 删除分支
     
           ·可以使用git checkout -b 分支名 创建分支并直接切换至该分支
           ·当前分支无法被删除
        2、合并分支
                使用git merge 分支名 命令将所选分支合并到当前分支上
            
            这里创建了test1分支,并在此分支上添加并提交了test.txt文件。此时切换至master分支,我们会发现刚才添加的test.txt文件不见了。使用merge命令合并分支之后,刚才添加的文件又回来了。

            直接使用merge命令会默认用Fast forward模式进行合并,等于是将另一分支的下一个版本直接指向当前的提交。这样的话,一旦删除分支之后,该分支信息便会丢失。  若是在合并分支的时候加上--no-ff参数,则会强制禁用Fast forward模式,合并时会生成一个新的提交,将两个分支的下一版本指向该提交。这样便不会丢失分支信息。

        3、解决冲突
            在合并分支的时候,若两个分支都对同一个文件的同一部分进行了修改提交,则会发生冲突。这个时候就需要用户手动解决冲突,再行合并。这里我们添加一个test.txt文件,建立两个分支,在这两个分支上同时修改该文件并尝试提交合并:
   
            这个时候git会提示我们发生了冲突,无法合并分支,冲突发生在test.txt中。status命令可以看到更多详情。这个时候,文件系统中的test.txt文件也已经标出了冲突位置。如下图:  git使用<<<<<<< ======= >>>>>>>进行冲突位置提示
         其中<<<<<<<与=======之间的部分是当前分支的修改,=======与>>>>>>>之间是其它分支的提交。
   
这个时候,我们把冲突位置修改为正确的文本,再进行合并:
  
使用log命令可以看到分支合并的情况。使用git log --graph命令可以看到分支合并图:
  
        4、工作区暂存
            有时候,我们在进行手头工作的时候,会突然转向其它紧急工作,比如Bug修复等等,这个时候因为手头工作尚未完成,不能进行提交。而Git中是必须提交后才能切换分支进行工作的。这个时候工作区暂存功能就非常有用。我们可以使用git stash命令储存工作区状态。 待其它工作完成后,再使用git stash
apply
恢复工作区,使用git stach drop删除工作区暂存文件。使用git stach list可以查看储存的工作现场。可以暂存多个工作区状态,这个时候就需要在apply等命令后加上list命令中查询到的暂存文件名。
  
            恢复工作区与删除暂存文件可以用一条命令git stach pop直接完成。


三、分支与远程库
        可以使用git remote命令查看远程库信息    
  
        1、将分支推送至远程库
            使用git push origin 分支名将本地分支上的所有提交推送到远程库。
  
        2、从远程库抓取分支
            创建远程分支的本地分支,使用git checkout -b 分支名 origin/分支名命令,同样的,这条命名可以分成branch和checkout两步命令。有时需要将本地分支与远程分支建立链接,这时使用git branch --set-upstream 分支名 origin/分支名命令。
            当链接建立完毕后,有时需要将远程分支的最新提交抓取到本地,这时使用git pull命令,将远程分支提交抓取至本地并尝试合并。

本篇提到的命令:
命令 说明
git remote add origin 仓库地址 将远程库与本地当前库关联
git push -u origin master 将本地仓库推送至远程仓库
git clone 远程库地址 将远程仓库克隆至本地
git branch 分支名 创建分支
git branch 查看分支列表
git checkout 分支名 切换分支
git checkout -d 分支名 删除分支
git checkout -b 分支名 创建并切换至分支
git merge 分支名 将分支合并至当前分支
git log --graph 查看分支合并图
git stash 暂存工作区
git stash apply 恢复工作区
git stach drop 删除工作区状态暂存文件
git stach list 查看工作区状态暂存文件列表
git stach pop 恢复工作区状态并删除暂存文件
git remote 查看远程库信息 (-v 查看详细信息)
git push origin 分支名 将本地分支提交至远程库
git checkout -b 分支名 origin/分支名 创建远程库分支的本地分支
git branch --set-upstream 分支名 origin/分支名 将本地分支与远程库分支建立链接
git pull 将远程分支抓至本地并试图合并
            
         

Git入门——远程仓库及分支管理的更多相关文章

  1. 版本控制工具(下)——Git的远程仓库、分支管理与其它操作

    预备知识: SSH协议参考资料:http://blog.csdn.net/vevenlcf/article/details/43273405 图解公钥和私钥:http://blog.csdn.net/ ...

  2. Git 获取远程仓库指定分支内容

    1. 在本地一个空的文件夹中 git init  (生成本地仓库) 2. 在刚刚的文件夹中随便建立一个文件 ,git add . (为了生成分支)(提交到暂存区) 3. git commit -m'1 ...

  3. git 从远程仓库指定分支clone代码到本地

    不指定分支 git clone + clone 地址 # 例如 git clone https://amc-msra.visualstudio.com/xxx/_xx/xxxxxx 指定分支 git ...

  4. git 本地给远程仓库创建分支 三步法

    命令如下: 1:本地创建分支dev Peg@PEG-PC /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 Peg@ ...

  5. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  6. git学习(4)远程库和分支管理

    git学习(4)远程库和分支管理 1.1建立本地git库和远程库联系 我使用的是GitHub上的库,首先在GitHub上新建一个库,在建立与远程库的联系之前需要建立ssh key.建立ssh key可 ...

  7. Git使用手册/Git教程:git fetch 将远程仓库的分支及分支最新版本代码拉取到本地

    相关文章: 关于验证是否存在ssh配置以及生成SSH Key的方法可以参照文章:Git使用手册:生成SSH Key 关于SSH Key的使用和公钥在gitHub.gitLab的配置等,请参考文章:Gi ...

  8. 1. git 本地给远程仓库创建分支 三步法

    命令如下: 1:本地创建分支dev 1 2 Peg@PEG-PC /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 ...

  9. git clone远程仓库的指定分支

    正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...

随机推荐

  1. Domino 邮箱服务器接收不存在的邮箱账号的邮件

    背景: domino邮箱服务器需要设置多个邮件账号邮件转到同一个邮箱账号. 比如:现在没有了 abc@mail.com 的邮箱账号.但是当用户发邮件给它的时候就发给Support@mail.com 原 ...

  2. Leetcode 66.加一 By Python

    思路 如果单独操作最后一个元素,令其加一,满十进一,会挺麻烦的,要分情况. 所以我的思路是将list还原到字符串,再变成数值,直接+1,然后再还原到list.详见代码 代码 class Solutio ...

  3. 自学Linux Shell5.2-shell内建命令history alias

    点击返回 自学Linux命令行与Shell脚本之路 5.2-shell内建命令history alias 外部命令:有时称为文件系统命令,是存在于bash shell之外的程序,通常位于/bin./u ...

  4. ANDROID content provide 使用实例

    Content Provider提供了一种多应用间数据共享的方式,比如:联系人信息可以被多个应用程序访问.Content Provider是个实现了一组用于提供其他应用程序存取数据的标准方法的类. 下 ...

  5. luogu3707 相关分析 (线段树)

    把式子展开以后会发现,可以用线段树维护$x,y,x*y,x^2$分别的区间和 然后操作有区间加和区间修改 这个pushdown的时候,如果改和加的标记同时存在,那一定是先改再加,要不然加的标记已经被清 ...

  6. bzoj5281/luogu4377 Talent Show (01分数规划+背包dp)

    就是01分数规划的思路,只不过当把w[i]-r*t[i]>0的选完以后如果w值还没达到要求,那就再01背包dp一下就好了(dp时w值>W的时候就存在W里就不会爆内存了). (跑得很慢..大 ...

  7. Java -- JDBC 学习--获取数据库链接

    数据持久化 持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大 ...

  8. 教程] 《开源框架-Afinal》之FinalHttp 01一步一脚

    1.FinalHttp是什么 :FinalHttp 对 HttpClient再次封装,最简洁的就是增加了许多回调的方法,对Get 和 Post 请求进行了简化.另外一点就是FinalHttp加入线程池 ...

  9. 【洛谷P1486】郁闷的出纳员

    题目大意:维护一个平衡树,支持插入一个数,删除小于一个值的所有数,K 大值查询,每个节点权值加减一个数. 题解:所有节点权值加减操作可以考虑直接维护一个全局标记,删除小于一个值的所有数字为一个二分的过 ...

  10. 【模板】K短路 A-star

    引理:当一个状态对应的节点第K次从堆中取出时,该状态对应的当前代价是从起点到该点的第K优解. 代码如下 /* POJ2449 */ #include <cstdio> #include & ...