Git基础教程详解

1.安装Git

选择命令行,可以从Git网站下载Git的安装程序并安装。

若使用Mac,也可以使用套件管理工具MacPorts或Homebrew来安装。

工作树和索引

在Git管理下,大家实际操作的目录被称为工作树。

数据库和工作树之间有索引,索引是为了向数据库提交作准备的区域。

Git在执行提交的时候,不是直接将工作树的状态保存到数据库,而是将设置在中间索引区域的状态保存到数据库。因此,要提交文件,首先需要把文件加入到索引区域中。

所以,凭借中间的索引,可以避免工作树中不必要的文件提交,还可以将文件修改内容的一部分加入索引区域并提交。

2.初期设定

安装Git之后,输入用户名和电子邮件地址。该设置操作在安装Git后进行一次就够了。这些信息将作为提交者信息显示在更新历史中。

Git的设定被存放在用户本地目录的.gitconfig里。虽然可以直接编辑配置文件,此外我们也可以使用config命令。

$ git config --global user.name "<用户名>"
$ git config --global user.email "<电子邮件>"

以下命令能让Git以彩色显示。

$ git config --global color.ui auto

您可以为Git命令设定别名。例如:把「checkout」缩略为「co」,然后就使用「co」来执行命令。

$ git config --global alias.co checkout

3.新建数据库

3.1 初始化数据库

在本地新建数据库,创建一个名称为「tutorial」的空目录,并把它放在Git管理之下。

首先在任意一个地方创建tutorial目录。然后使用init命令把该tutorial目录移动到本地Git数据库。

$ git init

按照以下步骤把新创建的tutorial目录设置到Git数据库。

$ mkdir tutorial
$ cd tutorial
$ git init

3.2 确认状态

请使用status命令确认工作树和索引的状态。

$ git status

3.3 添加文件至索引

将文件加入到索引,要使用add命令。在指定加入索引的文件。用空格分割可以指定多个文件。

$ git add <file>..

Tips

指定参数「.」,可以把所有的文件加入到索引。

$ git add .

3.4 提交文件(commit)

已加入到索引,我们就可以提交文件了。请执行如下显示的commit命令。

$ git commit -m ""

执行commit命令之后确认状态。

$ git commit -m "first commit"

从status响应我们可以看到没有新的变更要提交。

3.5 查看记录

使用log命令,我们可以在数据库的提交记录看到新的提交。

$ git log

4.push到远程数据库

向远程数据库推送本地数据库的修改记录

4.1 给数据库起别名

给远程数据库取一个别名。这样,下次推送的时候就不需要输入长串的远程数据库地址了。

请使用remote指令添加远程数据库。在处输入远程数据库名称,在处指定远程数据库的URL。

$ git remote add <name> <url>

eg.

$ git remote add origin https://XXX.git

执行推送或者拉取的时候,若省略了远程数据库的名称,则默认使用名为”origin“的远程数据库。因此一般都会把远程数据库命名为origin。

4.2 push到远程数据库

$ git push <repository> <refspec>...

运行push可向远程数据库‘origin’进行推送。

  • 当执行命令时,如果指定了-u选项,那么下一次推送时就可以省略分支名称。
  • 注意:首次运行指令向空的远程数据库推送时,必须指定远程数据库名称和分支名称。
$ git push -u origin master

5.clone克隆远程数据库

使用clone指令可以复制数据库,在指定远程数据库的URL,在指定新目录的名称。

$ git clone <repository> <directory>

执行以下指令后,会在目录(tutorial2) 复制远程数据库。

$ git clone https://XXX.git tutorial2

6.从克隆的数据库进行push

修改后的文件进行推送,更新远程数据库。当在克隆的数据库目录执行推送时,可以省略数据库和分支名称。

$ git push

7.从远程数据库pull

  • 进行拉取(Pull) 操作就可以把远程数据库的内容更新到本地数据库。
  • 进行拉取(Pull) 操作,就是从远程数据库下载最近的变更日志,并覆盖自己本地数据库的相关内容。

我们把在上一页面中从“tutorial2”推送到远程数据库的内容拉取到数据库目录“tutorial”吧。

使用pull指令进行拉取操作。省略数据库名称的话,会在名为origin的数据库进行pull。

$ git pull <repository> <refspec>...

用tutorial进行的操作
请执行以下指令。

$ git pull origin master

我们使用log指令来确认历史记录是否已更新。

$ git log

8.合并修改记录

在执行pull之后,进行下一次push之前,如果其他人进行了推送内容到远程数据库的话,那么你的push将被拒绝。

这种情况下,在读取别人push的变更并进行合并操作之前,你的push都将被拒绝。这是因为,如果不进行合并就试图覆盖已有的变更记录的话,其他人push的变更就会丢失。

合并的时候,Git会自动合并已有的变更点!也存在不能自动合并的情况,这时需要我们手动合并!

Git基础教程详解

==分割线上方是本地数据库的内容,下方是远程数据库的编辑内容。

再次重复add,commit操作。

用log命令来确认数据库的历史记录是否准确。指定--graph选项,能以文本形式显示更新记录的流程图。指定--oneline选项,能在一行中显示提交的信息。

$ git log --graph --oneline