Git原理以及常用命令介绍

来源:互联网 发布:数控车圆球编程实例 编辑:程序博客网 时间:2024/05/16 09:37
1.被Git管理(就是已跟踪)的文件只有三种状态:
    ·已提交
    ·已修改    
    ·已暂存

2.安装Git
    ·编译源代码来安装
    ·特定平台预编译好的安装包

3.Git和其他的VCS版本控制系统的比较:
         a)SVN的仓库repository概念和Git的概念是一样的。都是指在某个目录里面有一个.svn或者.git文件夹。
         b)Git的clone和SVN的checkout有着非常重要的区别。git的clone是把服务器上的git仓库的所有数据都取下来了(eg.任一的一个文件的更新历史记录)。而SVN的checkout只是把SVN服务器上面的当前最新的数据给取下来,像某个文件的更改记录是不会拿下来的。

         c)Git里面都是分支(Branch),包括主干分支,或者其他的分支。SVN的分为主干、分支、标签(tag)三种。

         d)SVN中如果一个文件从V1到V2,SVN在V2的时候记录的是与V1的差异量,而Git记录的是一系列的快照。


4.得到一个Git仓库的方法:
    1.在已有的目录下,使用git init。
    2.通过git clone [url]的方式克隆已有的仓库

5.Git支持多种数据传输协议。是通过git clone [url]后面的url来决定的。

url有如下三种形式:

    a)本地协议,是本地和远程共用一个共享的文件系统。例如克隆的时候url可以为git clone /opt/git/project.git或者git clone file:///opt/git/project.git

    b)git://  表示使用的git自己的协议
    c)http(s):// 表示使用的是http协议
    d)user@server:/path.git 表示使用的是SSH传输协议
    Remarks:SSH是其中唯一一个支持读和写操作的网络协议。而HTTP和Git通常都是只读的。所以虽然二者大多数都可用,但执行写操作的时候还是需要SSH。


6.git add命令是来告诉Git开始对指定的文件进行跟踪。所以在工作目录下面的所有文件都不外乎两种状态:已跟踪和未跟踪。已跟踪的文件是指纳入版本控制管理的文件。


7.通过Git管理的文件的状态变化周期图

8.Git常用的命令有:

          a)git config—配置一些参数

          b)git clone—从已有的仓库中克隆到本地来

          c)git status—查看文件的状态信息

          d)git add—有好多功能:1.命令Git跟踪某个新文件 2.把已跟踪的文件放到暂存区 3.合并时把有冲突的文件标记为已解决的状态等

          e)git diff—用来查看某个文件在不同状态时的差异

           f)git rm—移除文件

          g)git mv—移动文件

          h)git log—查看提交历史

           i)git tag—对某一时间点上的版本打上标签


9.可以在仓库目录中创建一个名为.gitignore的文件,通过编辑这个文件来制定某些类别的文件不纳入Git的管理,这样这些文件就不会出现在未跟踪的文件列表中。


10.Git管理的文件在流转时,是有三个区域:

            a)工作区域—某个文件还没有修改,或者已经修改但没有放到暂存区中,那么它就属于这个区域

            b)暂存区域—当把已经修改的文件通过git add命令处理后,就会放到暂存区域中,当执行git commit命令时,暂存区域的文件才会被提交

            c)Git本地仓库—当通过git commit命令将暂存区域里面的文件提交后,就会放到这个区域

            d)Git远程仓库—当通过git push命令会将本地仓库中修改推送到远程仓库


11.给git commit加上-a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而可以略去要把已修改的文件先将其添加到暂存区域中然后再提交的这个步骤


12. 远程仓库的使用方法:

           a)通过git remote或者git remote -v来查看当前的远程库

           b)通过git remote add [remote-name] [url]来添加远程仓库,之后就可以用remote-name这个别名来指代url这个远程仓库了。

           c)通过git fetch [remote-name]从远程仓库中抓取数据

           d)通过git push [remote-name] [branch-name]将本地仓库中的数据推送到远程仓库了。

           e)通过git remote show [remote-name]来查看某个远程仓库的详细信息。

            f)通过git pull [remote-name]从远程仓库拉取更新到本地并且和本地仓库合并


13.关于git pull和git fetch

git pull和git fetch都是从远程仓库中拉取更新到本地,但是两者的区别在于,拉取更新后,会不会和并到本地仓库中。git pull会合并,而git fetch不会。

(1)使用git fetch命令

git fetch origin master  #获取远程仓库origin的master分支到本地git diff master origin/master #进行本地仓库master分支和远程仓库origin的master分支内容的对比git merge origin/master  #合并远程仓库origin的master到本地仓库
(2)使用git pull命令
git pull origin master #从远程仓库origin的master分支获取最新版本并merge到本地仓库
备注,在实际开发中,尽量少用git pull,因为它会直接merge远程仓库的最新版本到本地仓库,容易破坏本地仓库的信息。我们可以使用git fetch和git merge两个命令来代替。

14.有关Git分支的操作

          a)git branch [string] 创建一个名称为string的分支

          b)git checkout [string]从当前分支切换到名称为string分支上去


15. 自结:在团队协同开发某个项目时,采用Git作为项目的VCS,那么也需要建立一个Git远程仓库服务器。简单理解,这个所谓的Git服务器和本地的Git是平等的。与SVN中的服务器的理解还是不一样的。


16.有关GitHub:

            a)GitHub提供仓库托管服务,可以进行公共托管和私人托管服务的站点。所以可以再上面既可以保存开源代码,也可以保存商业代码。

            b)GitHub会向使用私有仓库的用户收取费用的商业公司。

            Remarks:GitHub自己的理解就是,它就是一个Git,同时建立的一个Web站点,这个站点也能去管理Git仓库里面的文件。


学习资料来源:

《Pro Git》  Scott chacon

http://www.cnblogs.com/flying_bat/p/3408634.html

http://www.ruanyifeng.com/blog/2014/06/git_remote.html

原创粉丝点击