什么是仓库呢?仓库又叫版本库,英文名为repository,可以简单理解成一个目录,这个目录里的所有文件可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,任何时刻都可以追踪历史,或者在将来的某个时刻还可以还原。
在开始之前,先了解一些前置知识:
所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文件、网页、代码等,Git也不例外。对于图片、视频这些二进制文件,Git只能把二进制文件的每次改动串起来,也就是只知道图片从100kb改成了120kb,但是到底改了什么,Git不知道,也没法知道。但是二进制文件,同样是可以放入版本控制工具中进行管理的。
文本是有编码的,这里建议使用UTF-8编码。
如果使用过得是Windows系统,不建议使用记事本编辑文本文件,原因是记事本对UTF-8编码的文件支持度不是很好,容易出现奇葩问题。推荐使用Notepad++代替记事本,它不但功能强大,而且免费,使用时记得把Notepad++的默认编码设置为UTF-8 without BOM即可:
image-20200923150813612.pngNotepad++下载地址:https://notepad-plus-plus.org/
创建git仓库的的方式有两种:
- 将尚未进行版本控制的本地目录转换为git仓库
- 从其它服务器克隆一个已存在的git仓库
两种方式都会在你的本地机器上得到一个 git 仓库。
在任意目录中初始化仓库
如果你有一个尚未进行版本控制的项目目录,想要用 git 来管理它,那么首先需要进入该项目目录中。
进入目录中,执行:
git init
# 或者 对指定的目录进行版本控制
git init newrepo
该命令将创建一个名为 .git
的子目录,这个子目录含有你初始化的 git 仓库中所有的必须文件。但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。
可以通过 git add
命令来指定所需的文件来进行追踪,然后执行 git commit
进行提交:
# 对所有文件扩展名为.c的文件进行跟踪
git add *.c
# 未指定扩展名,则表示这是一个文件夹
git add test
# -m 对该次提交的说明
git commit -m '初始化项目版本'
稍后我们再逐一解释这些指令的行为。
现在我们来实践一下:
-
新建一个文件夹:
# 新建learngit文件夹 $ mkdir learngit # 进入learnGit文件夹 $ cd learngit/ # 查看当前所在的目录(文件夹) $ pwd /e/workspace/learngit # 表示当前在E盘的workspace文件夹下的learngit文件夹中
Tip:新建的目录最好不要使用中文,包括它的上级目录,最好也不要有中文,以免出现奇怪的问题。
-
通过
git init
命令把这个目录变成Git可以管理的仓库:$ git init Initialized empty Git repository in E:/workspace/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository)。
-
git创建好仓库之后,会生成一个
.git
文件夹,它是个隐藏文件夹,主要是git用来跟踪管理版本库的,没事千万不要手动修改里面的文件,不然会多git仓库造成破坏。隐藏文件默认是不可见的,使用ls -a
命令就可以看见它了:$ ls -a ./ ../ .git/ # ./ 表示当前目录 ../表示上一层目录
不一定必须在空目录下创建Git仓库,也可以选择一个已经有东西的目录。不过,不建议在公司使用自己正在开发的项目来学习Git,造成的后果,我可不负责任哦。
git仓库创建好了,现在使用Notepad++新建一个readme.txt文件,内容如下:
Git is a version control system.
Git is free software.
将这个文件放在learngit
目录下,子目录也是可以的,如果放在learngit目录外面,那Git是找不到的,进不能进行版本管理。
把一个文件放到仓库只需要两步:
-
用
git add
命令,将文件放入暂存区:$ git add readme.txt
执行完,没有任何消息,没有消息就是好消息,说明添加成功。
-
用
git commit
命令,把文件提交到本地仓库$ git commit -m 'write a readme file' [master (root-commit) d1bdde3] write a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
此时readme.txt就被提交到了git仓库。
克隆现有的仓库
如果你想获得一份已经存在了的 git 仓库的拷贝,就要用到git clone
命令(类似SVN的checkout命令)。git 克隆的是该 git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone
命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。 事实上,如果你的服务器的磁盘坏掉了,你通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库 (虽然可能会丢失某些服务器端的钩子(hook)设置,但是所有版本的数据仍在)。
克隆仓库的命令是 git clone <url>
。 比如,要克隆 github 上的某个库,可以用下面的命令:
git clone https://github.com/tiangoubot/learngit.git
这个操作会在当前目录下创建一个名为 gitTest 的目录,并在这个目录下初始化一个.git
文件夹(改文件加为隐藏文件),从远程仓库拉取下所有数据放入 .git
文件夹,然后从中读取最新版本的文件的拷贝。
如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以指定新的目录名:
git clone https://github.com/tiangoubot/learngit.git myTest
git 支持多种数据传输协议。 上面的例子使用的是 https://
协议。
网友评论