Git之旅(3):仓库

栏目: 编程工具 · 发布时间: 5年前

内容简介:所属分类:Git
  • A+

所属分类:Git 运维技术

博主会将与Git有关的知识点总结到"通俗易懂Git入门系列"文章中,如果你对Git不是特别了解,请 按照顺序 阅读"Git系列",以便站在前文的基础上理解新的知识点。

当我们需要使用git进行版本管理时,要接触的第一个概念就是"仓库",你可以把"仓库"理解成一个目录,只有这个目录中的文件才能被git管理,换句话说就是,如果你想要对某个文件进行版本管理,你就需要把这个文件放入到一个带有git功能的目录中,这个带有git功能的目录就是所谓的git仓库,git仓库的英文为"git repository",后文中所提到"仓库"、"版本库"、"repository"、"repo"其实都是一种东西,我们会不加区分的使用这些名词,它们都表示"仓库",当你把一个文件加入到某个git仓库以后,你对这个文件的所有操作都可以被git记录,从而实现版本管理的目的。

所以,为了使用git进行版本管理,我们首先要做的,就是创建一个git repository。

我们可以直接创建一个空的git仓库,也可以将一个已经存在目录转化成git仓库,我们先来看看怎样创建一个全新的、空的git仓库(操作系统为win10)。

假设,我想要在"D:\workspace\git"目录中创建一个名为git_test的版本库,该怎么办呢?

首先,我们需要进入到"D:\workspace\git"目录中,你可以打开"Git Bash",然后输入如下命令进入目录

$ cd /d/workspace/git
注:在windows的git bash中,D盘对应的路径为/d/

你也可以在windows的资源管理器中打开"D:\workspace\git"目录,然后在目录的空白处单击鼠标右键,然后单击右键菜单中的"Git Bash Here",通过这种方式打开的git bash终端默认就在对应的目录中。

注:在后文中,我们输入的所有命令都是在git bash中执行的,如有特殊情况,则会说明,之后不再赘述。

当进入到对应目录后,执行如下命令即可创建git_test仓库:

$ git init git_test
Initialized empty Git repository in D:/workspace/git/git_test/.git/

没错,非常简单,执行完上述命令后,"D:\workspace\git"目录中会多出一个名为"git_test"的目录,这个目录就是一个git仓库,你可以将需要进行版本管理的文件放入到"git_test"目录中,从上述命令的返回值也可以看出,我们已经成功的初始化了一个空的git仓库。

进入刚才创建的git仓库,也就是"/d/workspace/git/git_test"这个目录,你会发现一个名为".git"的隐藏目录

$ pwd
/d/workspace/git/git_test
 
$ ls -a
./  ../  .git/

这个目录非常重要,git会依靠这个目录进行版本管理的工作,git会将版本管理所需的相关信息转化成git对象存放到这个目录中,其实,这个".git"目录才是真正的git仓库,这个仓库是针对git_test目录的,我们依靠它对git_test目录中的文件和目录结构进行版本管理,".git"目录赋予了git_test目录进行版本管理的能力,我们在之后的文章中会使用到这个目录,以便更加深入的理解git的运行原理,但是,需要注意,在任何时候都不要手动的修改或删除".git"目录中的文件,因为这样会破坏仓库,仓库被破坏以后,就无法进行版本管理了。

上述步骤描述了怎样创建一个新的、空的版本库,那么我们能不能把一个已经存在的目录变成一个git仓库呢?当然可以,而且更加简单,我们只需要进入到对应目录,然后执行"git init"命令即可,示例如下:

假设,我想要将"/d/workspace/git/code_test"目录变成一个git仓库,只需执行如下命令

$ cd /d/workspace/git/code_test
$ git init

执行完上述命令以后,code_test目录中就会多出一个".git"隐藏目录,此时,code_test目录就是一个可以利用git进行版本管理的目录了。

无论之前code_test目录中是否包含其他文件,我们都能够使用"git init"命令将code_test目录变为一个git仓库,即使code_test目录中原来就包含其他文件,当我们执行"git init"命令以后,code_test目录中的原有文件也不会被git管理,因为如果想要管理这些文件,我们还需要一些其他操作,才能将它们纳入到git的追踪范围以内,也就是说,git init命令只是让code_test目录拥有了版本管理的能力,无论code_test目录中原来是否存在文件,".git"目录都是新创建出来的,从git仓库的角度来说,这就是一个新的仓库,还没有任何文件被这个仓库所管理。

小结一下

git init命令是把当前目录转化成git repo

git init repo_name 命令是在当前目录中创建一个以repo_name命名的新目录,新目录是一个git repo

了解了仓库的概念以后,我们再来回顾一下上一篇文章中的知识点,我们已经说过,如果想要使用git进行版本管理,必须先提供我们用户名和电子邮箱,因为这些信息需要被记录到仓库中,我们可以使用如下命令设置用户名和邮箱

$ git config --global user.name "zsythink"
$ git config --global user.email "zsy@zsythink.net"

我们解释过上述两条命令的作用,但是并没有解释上述命令的"--global"选项是什么意思,现在,我们就来聊聊这个选项是什么意思。

从字面上看,"--global"的意思是"全局的",也就是说,如果我们在设置用户名和用户邮箱的时候,使用了这个选项,那么,当前系统用户(windows系统用户)创建的所有Git仓库都会使用这个用户名和邮箱,除了"--global"选项,还有"--local"选项和"--system"选项,没错,聪明如你一定想到了,我们可以通过这三个选项控制设置作用域的范围,这三个选项的作用域如下:

git config --system:使对应配置针对系统内所有的用户有效
git config --global:使对应配置针对当前系统用户的所有仓库生效
git config --local:使对应配置只针对当前仓库有效
local选项设置的优先级最高。

如果想要查看对应作用域的设置,可以使用如下命令

git config --system --list
git config --global --list
git config --local --list

我们在设置用户名和邮箱时,通常会使用"--global"选项,因为这样我们只需要设置一次,当前用户的所有仓库都会使用这些用户名和邮箱信息,即使是当前用户新创建的仓库,也会使用同样的配置,如果使用"--system"选项,可能会影响到系统中的其他系统用户,如果使用"--local"选项,当信息不需要变化时,每次创建新仓库时又都需要重复的为新仓库设置一次,所以,当设置用户名和邮箱时,"--global"选项最常用。

好了,这篇文章介绍了git版本库的概念,并且回顾了之前的知识点,但是还是没有开始真正的使用git进行版本管理的工作,唉......,我都有点等着急了,争取下一篇文章中用上git吧。

我的微信公众号

关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~


以上所述就是小编给大家介绍的《Git之旅(3):仓库》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Uberland

Uberland

Alex Rosenblat / University of California Press / 2018-11-19 / GBP 21.00

Silicon Valley technology is transforming the way we work, and Uber is leading the charge. An American startup that promised to deliver entrepreneurship for the masses through its technology, Uber ins......一起来看看 《Uberland》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具