git入门

资料总结     参见<android开发进阶  从小工到专家> 作者 :何红辉

git起源

    用于管理开源项目'linux',  作者 'linus'  . 开发时长 '两周' (第一版) . 2005

第一版git的设计特性

  •  速度
  •  简单的设计
  •  对非线性开发模式的强力支持
  •  完全分布式
  •  有能力高线管理类似linux内核一样的超大规模项目

git基本原理

    git只关心文件数据的整体是否变化,它并不保存变化前后的差异数据. git在每次提交更新时,会将项目所有的文件做一个快照,然后在文件系统中保存一个指向这次快照的索引,为提高性能,若文件没有变化,git只会对上次的快照做一链接而不做额外操作.


    git绝大多数操作都在本地执行.和传统CVS访问网络不同,git会将当前项目的历史更新都存储在本地.


    git会时刻保持数据的完整性,在将数据保存到git之前,会进行checksum--使用SHA-1算法,通过对文件的内容或者目录的结果算出一个SHA-1指作为指纹,根据这个值判断数据的变化.所以如果文件在传输是变得不完整或者磁盘损坏导致数据缺失,git能立即察觉


   git文件有3中状态

  1.     committed : 表示文件已经被安全的保存在本地数据库
  2.     modified    : 表示已修改了文件,但是还没有提交保存
  3.     stage          : 表示把已修改的文件放在了提交的表单中,也就是执行了  git add

   git的三种区域 workspace(普通,未做任何git操作)-->staging area(暂存区域或者说表单区域更好理解些)-->git 数据库


    每个项目都有一个git目录(隐藏文件.git),他是git保存元数据和对象数据库的地方. 每次克隆(clone)仓库时,其实复制的就是这个目录里面的数据


    git的工作流程  :  1. 对项目进行修改  2. 对修改后的项目做快照,然后保存到暂存区域.  3.提交更新,将暂存的文件快照永久保存到git目录中



git的基本配置

    git下载后需要进行初始化配置,如果后续需要修改配置内容,使用相同的命令即可,后续配置会覆盖前面


    使用git config工具(安装了git后自带)来读取或者设置相应的工作环境变量. 这些环境变量共有3中,存储在不同地方(作用域不同)

  1. /etc/gitconfig : 针对所有用户, 使用git config 工具是, 用 --system选项设置或读取
  2. ~/.gitconfig : 针对当前用户, 用 --global 选项设置读取
  3. 当前项目下的.git/config : 针对当前项目.

     优先级从小到大,也就是说 项目的优先级最强,用户次之,全局最次


    默认安装git后,git会自动配置工具的环境变量,所以使用cmd命令可以直接操作git config工具,可以在doc中数据git version查看git版本.若提示git无效,则需要额外配置git的path地址


   git配置项 1: 用户信息

   cmd中输入  git config --global user.name "xxxx"

                      git config --global user.email [email protected]

   配置完后,你当前用户的git信息就是xxxx了,你可以通过 git config --global user.name/user.email 查看你的配置,如果你想让当前项目有不同配置,进入项目目录后重新执行配置命令,去掉 --global 即可.


   设置git默认的编辑器 : git config --global core.editor emacs

   设置git默认的差异分析工具: git config --global merge.tool vimdiff

   查看现有的git配置  git config --list

   配置高亮效果

  • git config --global color.status auto #查看状态时高亮显示
  • git config --globalcolor.branch auto #分支名高亮
  • git config --global color.ui auto #自动高亮


    使用git别名能有效提高工作效率(就是默认的git 命令重命名)git config --global alias.新名字  原始命令

   如: git config --globalalias.co checkout


   git基本命令的使用

    一,初始化本地仓库  git init

    如果你有项目,在dos中进入这个项目目录,执行 git init ,那么git会在这个目录中创建.git工作目录.并对目录中的内容进行版本控制


   git入门_第1张图片

   , git status  检查本地项目状态  

   刚初始化的时候.git中的数据库中是没有文件快照的,这是你在工作目录中创建一个java文件,再执行 git status,会发现git提示有差异文件为添加到表单

  git入门_第2张图片

    git入门_第3张图片

   三,git add  不多说 ,就是将 差异文件添加到暂存区域  可以看到dos中的使用提示  use 'git add <file> ...'

   使用 git add .   添加所有文件

   使用 git add  <文件名>   添加指定文件

   这时再看git status 

   既然有add  那么相对应的remove也有吧.  看上图  git rm --chched <file>  就是将表单中的文件移除

  

  四,git commit  提交表单到本地数据库

  两种模式  1. git  commit  -m "<注释>"    2. git commit

  第一种会将引号中的内容作为提交的注释添加到数据库中,用以说明这次提交做了什么

  第二种会打开一个默认的文本编辑器 如vim ,你可以使用编辑器添加复杂的注释

  说明一下,注释支持中文 


  五,git log  查看项目历史版本

  见图git入门_第4张图片

  这个e516xxx 的就是这次提交的指纹了,通过项目结构和文件内容,用SHA-1算出来的

  下面的first commit 就是这次提交的注释

   如果想从注释中提取历史文件

   1.使用 git checkout  e516xxx  <文件名> 即可

   2.使用 reset,但是reset操作不对会移除log信息


   五. git branch  创建分支

   分支等于对项目做一个副本,分支主干互不影响,然后在副本中开发新功能,防止代码混乱或者说新功能影响旧功能.

   具体操作流程  1. 开辟分支  2.切换到分支开发  3.切回主干 4.合并分支 5.删除没用分支

   如图  b就是创建的分支名了

    

   创建完分支后,可以执行 git branch  查看枝干列表,  带星号说明你在这个枝干上.

   git init 后会默认创建一个名为master主干


   六.切换分支  git checkout

   见图 git入门_第5张图片 这里的co 就是前面设置的checkout 的别名,用co就简化了,效果如同

git checkout b.

   执行完这条命令后,版本就从master主干切换到名为b的枝干了,见图: 


   我们在分支中开发项目,如新建了一个Test类,这时如果就算提交到本地,那么主干的版本也是看不到的


   git入门_第6张图片

切回主干


git入门_第7张图片

会发现不仅文件没有,log也没有


七.git merge  合并分支

git入门_第8张图片

看看合并后的目录,Test出现了

git入门_第9张图片

同时log也出现了

注意合并的时候如果同样的代码被多个修改,那么可能会出现冲突,这时候需要手动调节完冲突再重新执行add commit.

最后,新功能开发完了,分支合并了,那么需要删除无用的分支  git branch -d <分支name>, 删除后再看枝干列表



八.git tag版本标签

一般会在正式发布的版本中添加tag标签,以便以后出意外恢复或者检索

语法 git tag -a <tagName> -m "<注释>"


使用git tag 列出所有的tag版本


使用git show 查看tag的详细信息,git show也能用于查看分支


使用 git tag -d <tagName> 删除tag


九.git push  将本地仓库的记录添加到远程 

git 大部分是在本地的,但是如果多人合作的话,远程仓库必不可少,团队成员可以从远程中clone(第一次)出项目来进行多人开发.

所以在提交完(commit)项目后, 调用gitpush  发布到远程.(当然你得有远程服务器,或者可以使用github)


提一下 git pull / git fetch / git clone 的区别

git clone: 是把整个git项目拷贝下来,包括里面的日志信息,git项目里的分支,你也可以直接切换、使用里面的分支等等

git fetch :从远程获取最新版本到本地,但是不会和本地合并

git pull: = git fetch + git merge  下载最新后再和本地的合并


ok 最后一个 

十.git help  <命令>查看指定命令的帮助文档


简单的过了一遍git , 用于快速入门.






 

你可能感兴趣的:(git)