Git使用教程与基本原理和Sourcetree基本使用探微

  1. 什么是GIT

Git是一个强调速度的分布式版本控制软件和源代码管理系统(SCM,source code management)。Git最初是由Linus Torvalds为内核开发而设计的管理软件。自从Git推出以来,已经被不少开源项目所采纳。每个Git工做目录是一个带有彻底历史记录和版本信息的仓库,不依赖于网络和中央服务器。Git是一个免费的开源软件,听从GNU v2协议。html

Git这个词在英语中的原意是很笨拙,没用的人。Linus自嘲说:“我是一个任性的笨蛋,因此我把个人全部的项目的名字都和我很类似。第一个是Linux,如今是Git。”Git的帮助文档中描述Git为:笨拙的内容跟踪者(the stupid content tracker)。(翻译自WIKI)git

关于开发Git的一些历史由来,能够看看这个网站:https://lkml.org/lkml/2005/4/6/121github

   2.为何要用GITubuntu

  • 更顺畅的工做流程,开发过程当中,彻底能够离线操做
  • 快速,Git分布式架构使得本地仓库包含全部的历史版本信息,你能够在不一样的版本之间快速切换
  • 弹性的本地分支,在svn下,你建一个分支须要把源代码复制到另一个文件夹,而在Git下,建立分支的代价是很是小的,只需一条命令
  • 仓库目录结构简洁,用Git复制一个项目,只会在项目根目录建立一个.git的目录,而其余目录很干净
  • 内容按元数据方式存储,全部的版本信息都位于.git目录下
  • 完整性好,更易于协做开发
  • 用户群大,如今已经有成千上万个开源项目采用Git来作项目管理,github上更是有无数个代码仓库
  三、GIT安装与配置

  • 在 Mac 上安装

    在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 git 命令便可。 若是没有安装过命令行开发者工具,将会提示你安装。vim

    若是你想安装更新的版本,可使用二进制安装程序。 官方维护的 OSX Git 安装程序能够在 Git 官方网站下载,网址为 http://git-scm.com/download/macwindows


  • .在Linux上安装
若是你的系统是Linux或者Fedora,你能够经过如下命令直接安装Git:

yum install git-core (fedora)安全

apt-get install git-core (ubuntu)bash

  • .在Windows上安装

尽管Git是发源于Linux,但如今Windows上也有可以正常使用Git,只不过不支持中文,在Windows下全部的中文都显示问号,另外还有一些功能上的BUG。因此建议仍是在Linux上去使用Git,若是你不得不工做在Windows上,你能够到http://msysgit.github.com/上下载msysgit的最新版,安装过程和其余Windows程序差很少,基本上点下一步就OK了。Msysgit默认会安装git bash和git GUI这两个程序,通常用git bash就能够了,它支持经常使用的命令。若是对Linux命令行不熟,你也能够用用git GUI,但功能有限制。服务器

b) 第一次使用GIT网络

在你安装好Git以后,你须要修改一些配置,才能正常使用Git。

Git经过“git config”命令来配置Git,这个命令有2个选项:--system, --global, 加上默认选项,分别对应Git上3级配置文件。第一个是/etc/gitconfig文件,和--system对应,这是全局配置文件,修改这个文件,将会影响系统上全部的用户,全部的仓库。第二个是你家目录下的/.gitconfig文件,与--global对应,修改它会对你当前用户的全部仓库产生影响。第三个是你仓库中的.git/.gitconfig文件,这是“git config”默认修改的配置文件,它只会对你当前仓库产生影响。

在第一次使用Git时,你须要告诉你的协同开发者,你是谁以及你的邮箱,在你提交的时候,Git须要这两个信息。具体经过如下命令设置:

git config --global user.name “Test OSS”

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

固然你也能够不用--global选项,但这意味这你在每个仓库中都要这样设置。

同时,你也能够指定你的编辑器,你的Diff工具:

git config --global core.editor vim

git config --global merge.tool vimdiff

你还能够经过”git config --list”命令来查看你的设置。

当你把Git设置好以后,若是你要和从Git服务器上得到仓库,或者向Git服务器提交你的代码(好比github),你可能须要生成你本身的ssh密钥对。Git支持4种与服务器端通讯的协议:git、http、ssh和https。其中git只是一个只读协议,也就是说你只能够从服务器端获取仓库,可是你不能提交你本身的代码。而http和https用的不多,大部分都只支持ssh协议和Git协议。

当你经过ssh协议与远端服务器进行通讯的时候,你能够经过如下命令生成ssh密钥对:

ssh-keygen -t rsa

若是你没有指定密钥名称和存放路径的话,它默认把两个不对称密钥放在你的家目录下的.ssh目录下,密钥文件默认名称为id_rsa和id_rsa.pub,前者是私钥,后者是公钥。中间可能会要你设定访问密钥密码,这个能够设,能够不设,但为了安全考虑,仍是建议你设一个访问密码。不然,意味着任何持有你密钥的人均可以使用该密钥。

而后把你的公钥发给Git仓库管理员,而后你就能够经过ssh协议来访问服务器端,期间程序会自动进行密钥对匹配,若是你设了访问密码,你可能须要输入密码。

更多关于ssh的内容,请访问这里:http://www.freebsd.org/doc/zh_CN/books/handbook/openssh.html

这些设定完以后,你能够经过得到任何一个公开的代码仓库来检测你的git是否工做正常。好比下面这个:

git clone git://git2.kernel.org/pub/scm/git/git.git

四、GIT仓库

Git作为一个资源管理和跟踪系统,若是想要把本身的文件托管在Git上,那么首先你得让Git知道你须要管理的文件在哪。好比说如今我有一个项目,它在test文件夹里,我想让Git管理这个项目,这个时候你需进入到这个目录,而后运行“git init”命令。这个时候Git就会在该目录下生成一个.git的隐藏目录,Git用来进行版本控制和内容跟踪的全部文件都在该文件夹下。

处于git跟踪下的文件只具备三种状态:

  • Modified(working directory):被修改过的文件
  • Staged(staging area):经过git add添加到暂存区域的文件
  • Committed(git directory):经过git commit提交到仓库的文件

因此,通常的git工做流程多是这样:修改过某些文件,而后把这些文件添加都暂缓区,再提交到仓库中造成一个版本或快照,最后提交到git服务器上。而在中间,可能伴随着分支管理,分支切换,撤消与合并。

可能有些人会以为很奇怪,为何git会有暂存区域这个概念,直接提交到仓库中不就ok了。其实这是git为了作版本控制用的,试想若是没有暂存区域,每修改一个文件,就会造成一个版本,太过频繁,不易于管理。暂存区域其实就是下一个版本的文件清单,你能够自由控制该往仓库中提交什么文件,这也能够避免在一个版本中包含一些中间文件,好比编译后的文件。




更多git 进阶( http://www.125135.com/1057214.htm )

命令行比较高冷,仍是来一个图形界面

GUI for git|SourceTree|入门基础

  1. SourceTree简介
  2. SourceTree基本使用
  3. SourceTree&Git部分名词解释
  4. 相关链接推荐

1、SourceTree简介

  SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操做。同时它也是Mercurial和Subversion版本控制系统工具。支持建立、提交、clone、push、pull 和merge等操做。

2、SourceTree基本使用

(如下以SourceTree For Mac V2.0.5.2中文版为例,托管平台以Github为例)

  1. 基本安装
    1.1. 不建议在appstore直接搜索下载SourceTree,由于appstore里的版本已经十分老旧(好像是2012年更新的)。建议前往官网下载安装最新版,我这里也提供一个SourceTree for Mac V2.0.5.2的百度云的方便连接。 传送门→SourceTreeDownload
    1.2. 拖动安装,Launchpad中打开,continue,输入github帐号按下一步完成便可。没有Github帐号的朋友,也能够跳过本步骤完成安装

  2. 注册GitHub(已有Github帐号的朋友请跳过本步骤)
    2.1. 打开Github官网 传送门→Github
    2.2. 填写必要的信息,点击sigh up for github

  1. 2.3. 默认选中免费帐号,点击绿色的Finish sign up便可


  2. 实践入门-建立仓库 clone&pull
    3.1. 建立仓库
    用咱们刚才建立的帐号登录github,在欢迎页点击“+ New repository“建立咱们的仓库


    Create Repository 1

    或点击右上角的“+”,而后再New repository亦可

    Create Repository 2

    3.2. 按照我的须要填写仓库名、仓库描述等,建议勾选“Initialize this repository with a README”(注意此处免费帐户只能选择创建public(开源)仓库),填写完成后点击Create repository

    3.3. 至此,咱们的仓库已经建立成功。建立成功后,咱们在页面的右下角找到连接,点击复制

    Copy Link

    3.4. 打开咱们的SourceTree,点击:“+新仓库”,选择:“从URL克隆”

    Clone 1

    3.5. 粘贴咱们的仓库连接至源URL,SourceTree会自动帮咱们生成目标路径(本地仓库路径)以及名称,点击克隆

    Clone 2

    3.6. 等待数秒后,SourceTree会为咱们自动打开咱们刚才克隆的仓库,选择master选项,这里咱们能够看到咱们仓库里的全部文件

    MainPage

    3.7. 接下来咱们想要上传一个项目至咱们的远程Github仓库内。咱们点击右上角“在Finder”中显示。而后SourceTree会帮咱们打开咱们的本地仓库,咱们将须要上传的项目复制到本地的Finder文件夹内,而后关闭文件夹,回到主页面。咱们会发现工做副本出现了更改提示

    Change Notification

    3.8. 咱们点击工做副本,而后咱们发现咱们刚才上传的文件都在未暂存文件当中,此时,咱们勾选“未暂存文件”

    工做副本 1

    3.9. 发现咱们的文件变成了已暂存文件。此时,咱们能够输入更新信息,而后,点击提交按钮

    工做副本 2

    3.10. 咱们切换回master分支,会发现master分支以及推送(Push)按钮,都出现了更改提示。这表示SourceTree已经将咱们刚才添加的文件成功提交到本地仓库,而本地仓库的内容则比远程仓库超前了一个版本。咱们这个时候点击推送(Push)便可将本地仓库的内容同步至远程仓库。

    Branch Master

    3.11. 点击推送(push),等待片刻便可,咱们从新登陆github网站,会发现咱们刚才本地仓库的文件已经成功推送到远程仓库

    Push
  3. 实践入门-参与开源 Fork&pull request
    (如下以 [https://github.com/octocat/Spoon-Knife] 举例)
    4.1. 首先打开上述页面,而后点击右上角“fork”按钮。fork意味着将他人的仓库复制到咱们帐号中。若是咱们想要参与开源项目,首先要fork下别人的项目,而后在咱们复制过来的仓库中,对别人的代码作修改。


    fork

    4.2. fork完以后,咱们用上文提到的方法,将本身帐号中的[Spoon-Knife]仓库克隆(clone)到本机SourceTree中,并在稍做更改后,推送(push)到本身帐号的远程仓库
     4.2.1 在SourceTree中创建新仓库,并复制URL

    clone Spoon-Knife

     4.2.2 在本地仓库中稍做更改(如图我新建了一个Test)

    Example

     4.2.3 经过上文方法推送(Push),登录Github,进入Spoon-Knife仓库,发现test已经上传到咱们帐号的远程仓库Spoon-Knife当中

    Success

    4.3. 上传完后,咱们点击Github branch旁的绿色按钮

    Pull Request 1

    4.4. 以后咱们会进入一个Compare页面,这个页面用于比较做者仓库与咱们仓库的文件的不一样。Base fork:指的是做者仓库目录地址;Head fork:指的是咱们帐号中fork后所产生的仓库地址。咱们点击Create pull request便可

    Compare

    4.5. 而后咱们会进入一个Pull Request界面,在这里,咱们能够输入本身更改的缘由/更改的内容。这里写的文字会显示给源代码做者,若是做者接受了咱们的推送请求(pull request)后,咱们的代码将会上传到源代码做者的仓库内,成功为开源作贡献。若是做者拒绝了咱们的推送请求(pull request)后,咱们的代码将不会上传到源代码做者的仓库内。

    Pull Request 2

    4.6. 咱们点击Create Pull Request便可,系统将自动跳转到等待回复的页面,这里会显示做者是否接受咱们的代码更改。

    Pull Request 3

    3、SourceTree&Git部分名词解释

    1. 克隆(clone):从远程仓库URL加载建立一个与远程仓库同样的本地仓库
    2. 提交(commit):将暂存文件上传到本地仓库(咱们在Finder中对本地仓库作修改后通常都得先提交一次,再推送)
    3. 检出(checkout):切换不一样分支
    4. 添加(add):添加文件到暂存区
    5. 移除(remove):移除文件至暂存区
    6. 暂存(git stash):保存工做现场
    7. 重置(reset):回到最近添加(add)/提交(commit)状态
    8. 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的全部内容,相同内容抵消
    9. 抓取(fetch):从远程仓库获取信息并同步至本地仓库
    10. 拉取(pull):从远程仓库获取信息并同步至本地仓库,而且自动执行合并(merge)操做,即 pull=fetch+merge
    11. 推送(push):将本地仓库同步至远程仓库,通常推送(push)前先拉取(pull)一次,确保一致
    12. 分支(branch):建立/修改/删除分枝
    13. 标签(tag):给项目增添标签
    14. 工做流(Git Flow):团队工做时,每一个人建立属于本身的分枝(branch),肯定无误后提交到master分枝
    15. 终端(terminal):能够输入git命令行
    16. 这里只对SourceTree作一下大致讲解。

4、相关连接推荐

  1. →Github help for mac https://mac.github.com/help.html
  2. →Github help for win https://windows.github.com/help.html
  3. 由浅到深学git  http://backlogtool.com/git-guide/tw/intro/intro1_1.html
  4. http://www.jianshu.com/p/be9f0484af9d (鸣谢)  

上文均为我的拙见,欢迎你们讨论交流

相关文章
相关标签/搜索