Git的Index索引和文件4状态
Posted HexThinking
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git的Index索引和文件4状态相关的知识,希望对你有一定的参考价值。
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命令。在<file>指定加入索引的文件。用空格分割可以指定多个文件。
$ 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指令添加远程数据库。在<name>处输入远程数据库名称,在<url>处指定远程数据库的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指令可以复制数据库,在<repository>指定远程数据库的URL,在<directory>指定新目录的名称。
$ 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会自动合并已有的变更点!也存在不能自动合并的情况,这时需要我们手动合并!
==分割线上方是本地数据库的内容,下方是远程数据库的编辑内容。
再次重复add,commit操作。
用log命令来确认数据库的历史记录是否准确。指定--graph选项,能以文本形式显示更新记录的流程图。指定--oneline选项,能在一行中显示提交的信息。
$ git log --graph --oneline
以上是关于Git的Index索引和文件4状态的主要内容,如果未能解决你的问题,请参考以下文章