git入门

为什么要用git?

    1.
svn之类的"Centralized Version Control Systems"有什么问题?

     a.服务器的单点问题。服务器一旦当机,所有人都无法提交改动了。

     b.如果服务器硬盘坏了,而又没有备机,那你将损失所有revision history

    2.
git之类的"Distributed version control system" 如何解决上述问题?

     客户端存有的文件并不仅仅是最新版本,而是整个repository的镜像。每次checkout都是一次完整的复制。

      a.如果服务器硬盘坏了,可以根据客户端的文件恢复

      b.由于你镜像了整个repository,所以很多操作都只需在本地完成,速度很快; 而且如果服务器连不上,照样可以看revision history

    

基本概念

  1.
git的三种状态

    a.committed  — 修改已存入本地数据库

    b.modified   — 文件被修改,但还没有提交到本地库

    c.staged     — 文件被修改,并且已经被你标识了“将要”进库 ?

  2.
几种文件/目录的定义

    a. Git directory — 相当于svn的repository目录,用于存放元数据;既然git是"distributed", 所以你的本地和服务器上都会有这个目录。

    b. Working directory — 相当于svn的working directory

    c. Staging area — 是一个文件,记录哪些内容将被提交。这个文件一般在Git directory里面。

  3.
工作流

    a. 在working directory里修改文件,文件进入modified状态

    b. 标识这些文件,文件进入staged状态,Staging area被更新

    c. 提交。Staging area里的文件会进入working directory,并进入committed状态

例示git命令的使用

  1.
把某个已有的项目加入git

     cd myproject

     git init   #把本目录里变成git directory

     git add *.java  #加入所有文件

     git commit   #提交 

  2.
增改文件

    #增

    git add README

    git status

    git commit

    #改

    vi README

    git diff

    git status #将提示Changed but not updated,下次提交时不会提交任何东西   

    git add README #这就是stage,告诉git下次我将提交README

    git status

    git diff –staged

    git commit

   

    #不用git add,直接提交

    vi README

    git commit -a

  3.
玩远程的

    git remote add origin git@github.com:chenjianjx/learn-visitor-pattern.git  #定义一个remote repository,取名为origin

    git remote -v #察看刚刚定义好的remote repository

    git push -u origin master #将本地所有更新提交到远程repository

    #直接clone一个

    git clone git://gitorious.org/opentaps/opentaps-2.git opentaps-2

    cd opentaps-2

   

(待续…)

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.