zoukankan      html  css  js  c++  java
  • git分支管理小结

    之前在使用git的时候,大部分的用处都是用来将自己本地的代码上传至github上。但是近期在做点小项目的时候,发现用到分支的地方,还是挺多的。

    这是今天自己看了《github入门与实践》那本书,跟着书上的步骤实践了一番,发现又学到一部分东西。废话不多说,进入正题。

    先在本地目录C:/gitTest1下,创建本地仓库。
    初始化仓库:

    git init
    

    创建README.md文件

    touch README.md
    

    然后在这个md文件中添加几行,然后从工作树提交到暂存区

    git add README.md
    

    然后将暂存区的改动提交到本地仓库中

    git commit -m"add change"
    

    此时可以通过git branch查看本地分支数。可以发现此时本地仓库中只有master一个分支。
    可能你们觉得在一个分支上开发没有多大的意思,想再创建几个分支进行开发。
    可以通过下面的命令:

    git checkout -b feature-A
    

    这个命令相当于

    git branch feature-A
    git checkout feature-A
    

    上面命令的意思就是创建feature-A分支,并将当前分支切换为feature-A分支。如果在这个分支中修改然后再进行提交,这些改动就被提交到feature-A分支下了。
    此时切换到master分支下:

    git checkout master
    

    发现还是原来的状态,并没有被改动。这正是在开发中创建分支的优点,不同分支之间不会影响。只要创建多个分支,可以在互不影响的情况下同时进行多个功能的开发。
    现在我们来看一下,如果之前创建了feature-A分支并提交了,此时就会有两个分支:master和feature-A分支。master分支是Git默认的分支,主干分支,比较重要的代码发布在这个分支上,此时feature-A分支的任务假如已经完成了,此时需要合并到master分支上。
    首先切换到master分支上。

    git checkout master
    

    然后合并feature-A分支,为了在历史记录中记录本次分支合并记录,最好使用下面的命令:

    git merge --no-ff feature-A
    

    执行上面的命令之后,如果想查看分支合并记录,可以通过图表形式查看:

    git log --graph
    

    到这里基本上,本地的基本任务已经完成了。
    下面开始进行远程仓库的事情了。
    首先在自己的github上创建一个仓库,此时不要勾选创建README.md选项。
    我们需要添加远程仓库:

    git remote add origin git@github.com:sminocence/git-tu.git
    

    这个命令将它设置成本地仓库的远程仓库,会将远程仓库的名称设置为origin(标识符)。

    假定我们是在master分支下执行下面的命令

    git push -u origin master
    

    执行上述命令之后,当前分支的内容就会被推送给远程仓库的origin的master分支。当然除了master分支之外,远程仓库也可以创建其他分支,举个例子,我们在本地仓库中创建feature-D分支,并将它以同名的形式push至远程仓库。

    git checkout -b feature-D
    git push -u origin feature-D
    

    现在远程仓库的github页面就可以查看到feature-D分支了。
    现在我们从实际开发者的角度出发,在另一个目录下D:/gitTest下新建一个本地仓库,从远程仓库获取内容。这就相当于我们刚刚执行过push操作的目标仓库又有了另一名新开发者来共同开发。
    git clone :获取远程仓库
    首先我们换到其他目录下,将github上的仓库clone到本地。注意不要与之前操作的仓库在同一目录下。

    git clone git@github.com:sminocence/git-tu.git
    

    执行git clone命令之后我们会默认处于master分支下,同时自动将origin设置成该远程仓库的标识符。我们可以用下面的命令查看本地仓库和远程仓库的分支信息。

    git branch -a
    

    我们还可以将feature-D分支获取到本地仓库。

    git checkout -b feature-D origin/feature-D
    

    上述命令是以名为origin的仓库的feature-D分支为来源,在本地仓库中创建feature-D分支.
    然后我们可以查看一下这个目录下的本地的分支:master,feature-D。
    我们可以在feature-D分支下进行改动并提交。然后将其推送到feature-D分支。

    git push
    

    git pull 获取最新的远程仓库分支
    我们放下刚刚操作的这个目录,回到之前的那个目录下,这边的本地仓库中只创建了feature-D分支,并没有在这个分支中进行任何提交,然而远程仓库的feature-D分支已经有了我们刚刚推送的提交。这时,我们可以使用git pull命令,将本地的feature-D分支更新到最新状态。当前分支为feature-D分支。

    git pull origin feature-D
    

    总结一下:
    (1)我们在本地的一个目录A下进行开发,然后推送了master和feature-D两个分支(git push -u origin feature-D).
    (2)然后我们又在本地的另一个目录B下,clone了之前推送的那个远程仓库,然后
    git checkout -b feature-D origin/feature-D,获取远程的feature-D分支到本地,此时本地就有了master和feature-D两个分支,然后在B这个目录下进行了改动、提交以及推送到远程仓库的feature-D分支下;
    (3)此时之前A那个目录下,feature-D分支就不是最新的状态了。此时通过git pull origin feature-D获取最新的远程仓库分支。这时候,这个A目录下的feature-D分支就是最新的状态了。这两个目录就相当于两个开发者。就可以同时在同一个分支中进行作业,不断给feature-D增加新功能。
    今天先总结到这里,如果有任何意见,欢迎评论指正,谢谢。

  • 相关阅读:
    linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
    linux下sudo命令
    myeclipse修改编译器版本的方法 .
    java 使用POI读写Excel文件(兼容2003、2007)
    Google.ProtocolBuffers.dll 之.Net应用(一)
    禁止Grid、TreeGrid列排序和列菜单
    在VS2008中加入ExtJS智能提示
    教程地址
    ExtJS xtype 一览
    ExtJS中,将Grid表头中的全选复选框取消复选
  • 原文地址:https://www.cnblogs.com/sminocence/p/8451271.html
Copyright © 2011-2022 走看看