git学习之二:文件控制基础

Posted 「临江仙」

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git学习之二:文件控制基础相关的知识,希望对你有一定的参考价值。

本文介绍git使用的相关基础.

注:本文git操作都是在git bash下操作

1.仓库

在一个目录下使用git init命令可以创建一个git仓库,该目录就成为了我们的工作目录。对于多人共同开发的项目,我们需要对项目进行统一管理,就需要建立公共仓库(也就是远程仓库-remote ),对于git管理员老说,需要架设一个git服务器,在该服务器上初始化一个git仓库给其他开发人员使用,进行统一化管理,开发人员自己的仓库我们称为本地仓库。如何架设一个git服务器,不在本文的讨论范围内,有需要的读者,请阅读相关文章

现在假设已经存在一个远程仓库,作为开发人员,首先需要获取git服务器的使用权限,在本地任意一个目录下使用git clone [url],

url是我们的git服务器的资源地址,对于clone,就是把远程服务器的所有文件拷贝一份到本地,从而建立与远程服务器一样的git仓库,这样我们不同人员可以在本地仓库进行开发,然后利用远程仓库统一管理。

例如git clone git://github.com/shacon/grit/git就从github服务器上克隆了一份仓库过来。

这样我们本地就有了一份仓库,内容与远程仓库一致,我们在本地进行开发,然后提交到远程仓库,由远程仓库进行统一管理


2.git文件状态

首先使用git init初始化一个本地仓库,只存在一个.git的隐藏文件夹,里面是git管理的相关文件。
根据我的个人观点的文件状态:ignore(忽略状态)、untrack(未跟踪)、track(跟踪)三种状态。

ignore(忽略状态):版本控制中不需要管理的文件,比如开发c++项目,编译生成的obj文,对于这些文件是对管理空间的负担和

浪费。在.git目录下创建一个.gitignore的文件,在该文件内添加文件名和文件夹名,它支持通配符,比如*.obj,那么所有的obj文件都会

被忽略

untrack(未跟踪):和忽略状态类似,git不会进行版本控制管理,但是git status命令对列出untrack的文件,可以使用git add [文件名]

来将其变成跟踪的文件。对于新加入的文件都是untrack状态,我们往工作目录加入一个名为1.txt的文件,使用git status查看状态。

现在只存在一个未跟踪的文件,用红色的字体标明,这时git不会对其进行管理。

track(跟踪):使用 git add [文件名] 之后,就变成了跟踪状态,这是就是我们的重点,被跟踪之后就会被git管理起来。 可以使用

git status看看目前状况

我们进行第一次commit,产生第一次提交,也就是有了第一个版本,这个版本只存在一个1.txt的文件。

跟踪之后就是git的管理文件,下面我们重点分析跟踪下的三种管理状态:未修改,修改,暂存。我们在工作目录创建一个2.txt,同时使用修改一下1.txt的内容。使用git status看看现在的状态

这里会列出修改的文件和未跟踪的文件,未跟踪的文件不会影响提交,修改过的文件会阻止提交。使用add可以将修改的文件和未跟踪的文件加入暂存区,这时文件进入暂存状态(在上一篇文章中,提到过会根据暂存区的信息生成tree对象,加入暂存区,git会对文件生成blob对象)。我们现在使用git add 1.txt命名,再看看状态

这时1.txt文件已经进入暂存状态,.git目录下的index文件会更新。这时进行提交,就会产生第二本版本这个版本里也只有一个1.txt文件(由于两个版

本的1.txt文件内容不同,git管理器会生成两个blob对象)。commit之后产生新版本,这时被跟踪的文件全变为未修改状态,我们的git status如下:

只存在为跟踪的文件信息,所有跟踪的文件全部变为未修改状态(为修改的文件不会显示)。

用一个图来表示:


3.git基础操作命令

git init初始化一个仓库,里面只有一个.git的隐藏文件夹

git clone 将远程仓库克隆一份到本地

git status 查看当前git仓库文件状态

git add [文件名] 1.将修改的文件加入暂存区 2.将为跟踪的文件变为跟踪状态,同时加入暂存区

git commit 提交本次修改,生成新版本

git checkout [文件名] 将修改过的文件还原

git reset [文件名] 将暂存的文件还原之前的状态(修改,为跟踪)


小结:本文介绍了一些git使用的基础知识,包括仓库,文件状态,和一些基本命令。下一节将介绍一个重量级的内容 git分支,合作开发的利器


以上是关于git学习之二:文件控制基础的主要内容,如果未能解决你的问题,请参考以下文章

git 学习之基础知识

Git 学习之Git 基础

git学习之三:分支管理

git学习之三:分支管理

Git 基础再学习之:git checkout -- file

Git 学习之关于版本库