Git-分布式版本控制系统

一、版本控制

      版本控制系统是记录若干文件内容变化,以便将来查阅修订特定版本或还原部分文件的系统

      分为:集中式版本控制系统(svn)简称cvcs   都有一个单一集中管理服务器,保存所有文件修订版本,开发人员通过客户端连到这台服务器,取出文件或提交更新。会出现中央服务器单点故障!

               分布式版本控制系统(Git)简称dvcs   没有”中央服务器“,每个人的电脑上都是一个完整的版本库。安全性更高!但分布式版本控制系统中会有一台充当”中央服务器“的电脑,方便交换修改。

                                                                    有极其强大的分支管理工具! 

  二、Git帮助与初始化

       $git help              显示git的帮助信息

       $git help-a           加上-a参数可以显示所有帮助信息

       $git help add        加上具体命令可查看详细帮助内容

       $git config --list   显示git的配置信息

       $git config --globol user.name"sunyi"                            设置Git的用户名

   $git config --globol user.email"963807896@qq.com"       设置Git的E-mail

                              --globol  表示设置的范围(系统,项目,全局)

   $git config --unset--globol user.name                           修改前需要--unset参数清空需要修改的设置

     $git init   使用init命令可以初始化一个仓库(repository),同时在当前目录下生成一个用来跟踪管理版本库的的.git文件夹*避免使用含有中文的路径。

三、 创建版本库

   在git的目录下添加一个有内容的文本文件

   $git status            查看当前仓库工作区的状态

   $git add               将新文件添加到仓库

   $git commit          将新文件提交到仓库      $git commit -m”提交本次的说明,方便找到改动记录“  Git完整的添加文件需要先add再commit两步。

四、本地的版本控制

 1> 添加修改

   给文本文件添加一行文本      先查看状态,提示被修改过,但还没有被准备提交的的修改

   $git diff                查看具体修改内容        查看完修改后,经过add和commit将修改添加到版本库

2>   版本回退  

    $git log                查看commit的记录       记录中有提交的作者,email和提交时间以及commit时输入的-m参数后的文本。其中commit后边的数字表示commit id(版本号)是一个SHA1计算出来的非常大的数字,用十六进制表示。

     $git reset--hard HEAD^         退回到上一个版本     首先要知道当前版本  用HEAD表示当前版本 上一个版本就是HEAD^, 上上一个就是HEAD^^  ,往上100个可以写HEAD~100

   $git reset--hard ID 4da437f 放弃回退            必须知道恢复版本的ID号 ,因为git log只存储最后一次版本之前的版本记录  所以需要git reflog来找回之前的版本号 

   $git reflog                            用来记录用户输入的每一次命令。找回版本号并且撤销回退。    *版本号写前几位即可,Git自动查找

3> 工作区和暂存区

   工作区即当前目录下除了.get文件夹下的其他目录  

   版本库即.get文件夹下的东西,其中最重要的就是stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。

   将文件添加到Git版本库的时候分两步执行,首先git add把文件添加进去,实际上就是把文件添加到暂存区,然后git commit提交更改,实际上就是把暂存区所有内容提交到当前分支

4>   撤销修改

   撤销修改分为三种情况:仅修改了工作区的内容,未添加到暂存区(没有经过add和commit的修改);此时工作区提示有一个修改;$git checkout 文件名,可以还原工作区修改。

                                        修改了工作区的内容并添加了暂存区,但未提交修改(经过add但未commit的修改);$git reset HEAD 文件名,可以还原暂存区的修改。再使用checkout命令还原工作区。

              修改被添加到暂存区并且提交了修改(经过add和commit的修改);此时只需要退回版本即可,$git reset--hard HEAD^ 。

5>   删除文件

   在Git中删除也属于修改操作,在工作区手动删除文件之后,工作区和版本库的文件就一致了,Git会发现用户删除了文件,并且告诉用户哪些文件被删除了

   删除文件有两种方法:在工作区删除文件,然后使用git rm 并且commit      执行git rm之前的删除文件操作仅仅修改工作区,并不会将删除操作添加到暂存区,可直接用checkout命令撤销操作即可

                                 在Git中直接使用 git rm 命令删除文件并 commit      在commit之前,删除操作会同时操作工作区和暂存区,在撤销时先使用reset命令,然后再使用checkout命令撤销操作。

五、 远程仓库

1>    生成SSH Key

  $ssh-keygen-t rsa     使用RSA 方式加上时间参数来生成SSH秘钥,使用默认设置即可。

             成功后可以在用户主目录下找到.ssh目录,里面有id_rsa和 id_rsa.pub两个文件,其中id_rsa是私钥,不能泄露!!!id_rsa.pub是公钥文件,可任意发送。

   将生成的id_rsa.pub文件发送给服务器管理员,管理员在服务器将公钥注册以后,此计算机即可通过服务器验证,进而下载上传文件。请保证id_rsa文件安全!!!

2>   远程下载项目代码

   使用git init 创建一个新仓库,然后git  pull可以远程下载项目代码,(或者直接使用git clone命令拷贝版本库至本地)。

   首次使用Git连接服务器时,会有一个警告,ssh连接第一次验证服务器的key,输入yes回车即可。这个警告只出现一次。

3>   推送代码至服务器

   git push      将当前分支推送至服务器。

六、分支管理

1>   创建与合并分支

  分支管理命令     git  branch                   查看当前分支

           git  branch 名称            创建分支

           git checkout 名称          切换分支

             git checkout -b 名称     创建加切换分支,git会在当前分支前加*

           git merge 名称      合并某分支到当前分支

           git branch -d 名称     删除分支

 2>   解决冲突

   git status  告诉我们冲突文件

   git用<<<<<<<,=======,>>>>>>>标记不同分支的内容,修改解决冲突后保存,再提交即可成功合并。

   用带参数的git log 可以看见分支合并情况

   git log --graph --pretty=oneline --abbrev -commmit

   git stash    把当前工作区”储藏起来“,等以后恢复现场后继续工作,使用之后,当前工作区状态是干净的

 3>   bug分支

   git stash apply    恢复工作区现场,不删除stash内容

   git stash drop     手动删除stash内容

   git  stash pop      恢复工作区现场,同时删除stash内容

七、自定义配置

1>   标签

   git tag 名称         添加新标签

   git tag                查看所有标签

   git show 名称      查看对应标签的详细提交信息

2>   忽略文件

   git ignore

 

posted @ 2018-01-28 21:21  程序图  阅读(354)  评论(0编辑  收藏  举报