Git版本控制软件结合GitHub从入门到精通常用命令学习手册

suyuwen1 10年前

git版本控制软件

注意:

学习前请先配置好Git客户端

相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略

官方中文手册:http://git-scm.com/book/zh

GIT 学习手册简介

本站为 Git 学习参考手册。目的是为学习与记忆 Git 使用中最重要、最普遍的命令提供快速翻阅。 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数。

本手册将从入门到精通指导大家。 首先,我们要从如何以 Git 的思维方式管理源代码开始。

如何以 GIT 的方式思考(这里可以不用看懂,接着看下面的内容,看完就全懂了。

懂得 Git,第一件重要的事情就是要知道它与 Subversion、Perforce 或者任何你用过的版本控制工具都有着很大的差别。 通常,忘掉你预想的版本控制方式,改以 Git 的方式思考,能够帮助你更好地学习 Git。

让我们从头开始。假设你正在设计一个新的源代码管理系统。在你使用某个工具之前,是如何完成基本的源码版本控制工作的呢? 十有八九,你只是在项目到达某些阶段的时候,对项目做一份拷贝。

 $ cp -R project project.bak

这样,你就可以在事情变得一团糟的时候很方便的返回到之前的状态,或者通过对比当前的项目与之前的拷贝,看看自己在之后的工作中,都做了哪些修改。

如果你有点偏执,你可能会经常作上面说的事情,或许还会给项目拷贝加个日期:

 $ cp -R project project.2010-06-01.bak

如此,你就有了一堆项目在各个阶段的快照,来作比较、查看。使用这种模式,你还可以有效地与人分享项目变更。 如果你会在项目到达一定阶段的时候给它打个包,丢到自己的网站上,那其他的开发者们,就能很方便地下载它,做点改动,并给你补丁回馈。

 $ wget http://example.com/project.2010-06-01.zip   $ unzip project.2010-06-01.zip   $ cp -R project.2010-06-01 project-my-copy   $ cd project-my-copy   $ (做了某些修改)   $ diff project-my-copy project.2010-06-01 > change.patch   $ (通过E-mail发送修改补丁)

以此方式,原先的开发者就能将其他人的改动应用到他的项目中去,其他开发者也能了解你做的变更。其实这便是许多开源项目采用过多年的协作方式。

这办法其实很好使,所以假设我们现在想要写个工具,让这个办法更快、更简单。 我们与其实现一个工具以记录每个文件的版本,可能不如去实现个工具以使创建、储存项目的快照更加方便,不用每次都去人肉作整个项目的拷贝。

这就是 Git 的精要所在。你通过 git commit告诉 Git 你想保存一份项目快照, Git 就会为你的项目中的各个文件的当前状态存一份记录。之后,绝大部分的 Git 命令都围绕这些记录展开。 比如查看它们的区别(diff),提取它们的内容,等等。

snapshots git
如果你将 Git 看作一个排序、对比以及合并项目更新的工具,那就容易理解状况和正确做事了。

一、获取与创建项目

你得先有一个 Git 仓库,才能用它进行操作。仓库是 Git 存放你要保存的快照的数据的地方。

拥有一个 Git 仓库的途径有两种。在已有的目录中,初始化一个新的,其一。 比如一个新的项目,或者一个已存在的项目,但该项目尚未有版本控制。如果你想要复制一份别人的项目, 或者与别人合作某个项目,也可以从一个公开的 Git 仓库克隆,其二。本章将对两者都做介绍。

Git使用前配置

如果设置了,在输入命令示界面可以很方便的使用复制和粘贴(用左键选取要复制的,点右键直接就可以复制,粘贴时只需点一下右键。)设置方法:Git Bash快捷图标(桌面图标)右键属性-选项,把快速编辑模式勾上就可以,如下图:

git快速编辑模式配置

 

设置Git本地项目开发库默认路径

如果设置了,就不用每次打开Git再cd打开目录了。方法:右键Git Bash快捷图标(桌面图标)属性,找到快捷方式-起始位置,把你的项目地址放在这里就可以了。如下图:

git默认项目开发库路径设置

配置本地用户和邮箱

用户名邮箱作用 : 我们需要设置一个用户名 和 邮箱, 这是用来上传本地仓库到GitHub中, 在GitHub中显示代码上传者;
使用命令 :

git config --global user.name "HanShuliang" //设置用户名   git config --global user.email "13241153187@163.com" //设置邮箱

git客户端版本控制软件

到此Git客户端已安装及GitHub配置完成,现在可以从GitHub传输代码了。

git init 将一个目录初始化为 Git 仓库

在目录中执行 git init,就可以创建一个 Git 仓库了。比如,我们恰好有个目录,里头有些许文件,如下:

$ cd konnichiwa $ ls README   hello.rb

在这个项目里头,我们会用各种编程语言写 “Hello World” 实例。 到目前为止,我们只有 Ruby 的,不过,这才刚上路嘛。为了开始用 Git 对这个项目作版本控制,我们执行一下 git init

$ git init Initialized empty Git repository in /opt/konnichiwa/.git/  # 在 /opt/konnichiwa/.git 目录初始化空 Git 仓库完毕。

现在你可以看到在你的项目目录中有个 .git 的子目录。 这就是你的 Git 仓库了,所有有关你的此项目的快照数据都存放在这里。

$ ls -a .        ..       .git     README   hello.rb

恭喜,现在你就有了一个 Git 仓库的架子,可以开始快照你的项目了。

简而言之,用 git init 来在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。

git clone 复制一个 Git 仓库,以上下其手

如果你需要与他人合作一个项目,或者想要复制一个项目,看看代码,你就可以克隆那个项目。 执行 git clone [url],[url] 为你想要复制的项目,就可以了。

$ git clone git://github.com/schacon/simplegit.git Initialized empty Git repository in /private/tmp/simplegit/.git/  remote: Counting objects: 100, done.  remote: Compressing objects: 100% (86/86), done.  remote: Total 100 (delta 35), reused 0 (delta 0)  Receiving objects: 100% (100/100), 9.51 KiB, done.  Resolving deltas: 100% (35/35), done.$ cd simplegit/ $ ls README   Rakefile lib 

上述操作将复制该项目的全部记录,让你本地拥有这些。并且该操作将拷贝该项目的主分支, 使你能够查看代码,或编辑、修改。进到该目录中,你会看到 .git 子目录。 所有的项目数据都存在那里。

$ ls -a .        ..       .git     README   Rakefile lib $ cd .git $ ls HEAD        description info        packed-refsbranches    hooks       logs        refs config      index       objects 

默认情况下,Git 会按照你提供的 URL 所指示的项目的名称创建你的本地项目目录。 通常就是该 URL 最后一个 / 之后的任何东西。如果你想要一个不一样的名字, 你可以在该命令后加上它,就在那个 URL 后面。

简而言之,使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

二、基本快照

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。本章将对有关创建与提交你的项目的快照的命令作介绍。

这里有个重要的概念,Git 有一个叫做“索引”的东东,有点像是你的快照的缓存区。这就使你能够从更改的文件中创建出一系列组织良好的快照,而不是一次提交所有的更改。

简而言之,使用 git add 添加需要追踪的新文件和待提交的更改, 然后使用 git status 和 git diff 查看有何改动, 最后用 git commit 将你的快照记录。这就是你要用的基本流程,绝大部分时候都是这样的。