一、简介

    1、什么是git?

        git是一款开源的分布式版本控制工具,在世界上所有分布式版本控制工具中,git是最快、最简单、最流行的。

    2、gitd的起源

        git的做着是Linux之父:Linus Benedict Torvalds,当初开发git仅仅是为了辅助Linux内核的开发,方便管理源代码

    3、git的现在

         在国外已经非常普及,在国内并未普及,但是原来越多的开源项目已经转移到git上


二、其他版本控制工具

    1、CVS,最早的开源、免费的集中式版本控制工具,自身设计有问题,会造成提交文件不完整

    2、SVN,修正了CVS一些稳定性问题,是目前用得最多的集中式版本控制工具

    3、ClearCase,收费的集中式版本控制工具,安装比Windows还大,运行速度比蜗牛还慢

     4、VSS 微软的集中式版本控制工具,集成在Visual Studio中



三、git和SVN的简单对比

    1、速度,在很多情况下,git的速度远远比SVN快

    2、结构,SVN是集中式管理,git是分布式管理

                       集中式管理

wKioL1cUSTvzcKi4AABVObqjzSg400.jpg

                                                                分布式管理

wKiom1cUSH7yGezLAABSV_H-P0w764.jpg




     3、其他,SVN使用分支比较笨拙,git可以轻松拥有无限个分支;SVN必须联网才能正常工作,git支持本地版本控制,旧版本的SVN在每一个目录防止一个.svn目录,git只会在根目录拥有一个.git目录

    

                    svn工作流程

wKioL1cUSYPzR59TAABdjRA8x9o513.jpg

git工作流程

wKiom1cUSMazVloaAABC-Tc7Tes624.jpg





四、使用git,跟SVN一样,你可以通过命令行或者图形界面客户端使用git

    1、在Mac上,比较好用的git图形有:SourceTree,gitHub,不过他专门为Github网站而设计,Xcode


五、git 常用指令

    1、git help

        查看其它指定的用法:git help 其它指令

    2、git config git配置信息相关(修改的是.git/config文件)

        配置用户名 git config "user.name" 用户名(用于跟踪修改记录)

        配置邮箱 git config "user.email" 邮箱 (用于多人开发间的沟通)

        查看配置信息 git config -l

        编辑配置信息 git config -e(用vim 编辑)

        设置指令的别名:git config alias.别名 原指令名称

            git config alias.ci "commit -m"

        设置带参数指令命令:git config alias.别名 原指

        将此设置应用到整个系统中:git config --global

        git log --pretty=oneline

        git config alias.log1 "log --pretty=oneline"

    3、git status:查看文件的状态

        查看某个文件的状态  git status 文件名

        查看当前路径所有文件的状态 git status

    4、git log:查看文件的修改日志

        查看某个文件的修改日志:git log 文件名

        查看当前路径下所有文件的修改日志 git log

        用一行的方式查看简单的日志信息 git log --pretty=oneline

        查看最近N次修改修改 git log -N (N是一个整数)

    5、git diff:查看文件最新改动的地方

    查看某个文件的最新改动的地方:git diff 文件名

    查看当前路径所有文件最新改动的地方:git diff

        git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"






    6、git reset:版本回退(建议加上 --hard参数,git支持无限次数后悔)

        回退到上一个版本 git reset --hard HEAD^

        回退到上上一个版本 git reset --hard HEAD^^

        回退到上N个版本 git reset --hard HEAD~N(N是一个整数)

        回退到任意一个版本 git reset --hard 版本号(版本号用7位即可)

    7、git reflog:查看指令使用记录(能够查看所有的版本号)

    8、git rm :删除文件(删除之后要进行commit操作,才能同步到版本库)




    9、git clone:

下远程仓库到当前路径:git clone 仓库的URL

下载远程仓库到特定路径:git clone 仓库的URL 存放仓库路径

    10、git pull:下载远程仓库的最新信息到本地仓库

    11、git push :将本地的仓库信息推送到远程仓库





六、git工作原理,如果想了解git的工作原理,有个核心的概念必须知道

    工作区(Working Drictory):仓库文件夹里除了.git目录以外的内容

    版本库(Repository):.git目录,用于存储记录版本信息

    暂缓区:(stage)

    分支(master):git 自动创建的第一个分支

    HEAD指针:用于指向当前分支


wKiom1cUdfTiN_kEAABY7w9Awyo536.jpg

七、git add 和git commit 的原理

    git add:把文件修改添加到暂存区

    git commit:把暂存区的所有内容提交到当前分支

    git branch

        *master

    git checkout -b fix_bug 创建分支

    git checkout fix_bug 切换分支



八、远程仓库:

 如果是多人团队开发,最好还是搭建一个远程仓库,远程仓库的途径:

   1、自己大家一个git服务器

   2、在gitHub上托管项目:公开项目完全免费

   3、在oschina上托管项目:完全免费,在国内访问速度快