GIT分布式版本控制

来源:互联网 发布:iphone摄影曝光软件 编辑:程序博客网 时间:2024/05/16 17:28

        做了一段时间的Java开发,一直用的版本控制都是svn。个人感觉svn还是挺好用的,用起来也方便。最近跳槽公司用的是git来管理项目版本,什么都不会自己就边开发边摸索这个git是怎么玩的。好了废话不多说了,直接入正题吧!

       首先来看一下git的简单介绍: 
   Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
   Git式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

    Git 与 SVN 区别:

  • 1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别

  • 2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。

  • 3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。

  • 4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。

  • 5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
     

          给一个Git的完整命令手册,方便查看:http://git-scm.com/docs(全英文版的。哈哈)


          关于安装就不多说了,百度一大堆教程。Linux, windows的So on.


         以下是GIT的工作流程,个人感觉还是先把原理搞定才好学

          GIT的工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

   


          感觉理论知识做的也差不多了吧!来点儿实际的吧!

          1  首先我们就应该创建一个仓库,这是必须的。得存在东西嘛!Git 使用 git init 命令来初始化一个 Git 仓库, 如下就是我在D:\new technology目录下创建的一个仓库。

          该命令执行完后会在当前目录生成一个 .git目录。

         

  

          2   git init newrepo 命令,初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

          


          

      3 Clone项目并建立本地分支

                 
                   

                $ git clone+远程URL

             


                    

项目Clone完成,进入根目录

$ cd yimi_mis/

Yimi_mis/.git 文件夹存在,这就是操控版本控制的关键

默认分支master,当前分支master创建本地分支,你也可以用 git branch 命令查看当前分支。

创建dev-本地分支

$ git branch branchName



此时dev-20170901本地master一个分支。你的开发也就在这个分支上进行


3.1 虽然你创建了一个新的分支,但当前分支仍然为master分支,你必须先切换到dev-20170901 分支进行开发,切换分支用以下命令:

$ git checkout dev-20170901

eclipse导入项目即可在dev-20170901上进行开发


代码提交

代码提交前先查看是否有修改的文件:

$ git status


如果有把文件添加进去,添加修改的文件到暂存区,并提交到本地仓库

$ git add file1 file2...(多文件)


文件提交:

$ git commit -m '修改注解'


好了,现在你的本地仓库已经有了当前分支要提交的文件,现在推送当前项目分支到远端服务器对应分支:

推送前先抓取远端代码,因为团队其他人可能已经提交了他们的修改,这时,我们需要先把最新的提交拉取下来,加入我们的修改,再提交上去。


$ git pull (拉取当前分支最新代码)


代码推送无端前主干合并当前分支


Pushmerge远程master分支,避免在分支合并到主干过程中生冲突。

$ git merge origin master


此时有可能会产生冲突,远端代码和本地代码不一致,这时候你需要跟修了不同代码的人商量如何保留代码。


push当前分支到远端


$ git push --set-upstream origin branchName


大功告成  可在远端查看提交的代码