创建Git仓库

什么是仓库呢?仓库又叫版本库,英文名为repository,可以简单理解成一个目录,这个目录里的所有文件可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,任何时刻都可以追踪历史,或者在将来的某个时刻还可以还原。

在开始之前,先了解一些前置知识:

所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文件、网页、代码等,Git也不例外。对于图片、视频这些二进制文件,Git只能把二进制文件的每次改动串起来,也就是只知道图片从100kb改成了120kb,但是到底改了什么,Git不知道,也没法知道。但是二进制文件,同样是可以放入版本控制工具中进行管理的。

文本是有编码的,这里建议使用UTF-8编码。

如果使用过的是Windows系统,不建议使用记事本编辑文本文件,原因是记事本对UTF-8编码的文件支持度不是很好,容易出现奇葩问题。推荐使用Notepad++代替记事本,它不但功能强大,而且免费,使用时记得把Notepad++的默认编码设置为UTF-8 without BOM即可:

git 怎么建立局域网代码仓库 Windows_git 克隆

Notepad++下载地址:https://notepad-plus-plus.org/

创建git仓库的的方式有两种:

  1. 将尚未进行版本控制的本地目录转换为git仓库
  2. 从其它服务器克隆一个已存在的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 '初始化项目版本'

稍后我们再逐一解释这些指令的行为。

现在我们来实践一下:

  1. 新建一个文件夹:
# 新建learngit文件夹$ mkdir learngit# 进入learnGit文件夹$ cd learngit/# 查看当前所在的目录(文件夹)$ pwd/e/workspace/learngit # 表示当前在E盘的workspace文件夹下的learngit文件夹中

Tip:新建的目录最好不要使用中文,包括它的上级目录,最好也不要有中文,以免出现奇怪的问题。

  1. 通过git init命令把这个目录变成Git可以管理的仓库:
$ git initInitialized empty Git repository in E:/workspace/learngit/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository)。

  1. 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是找不到的,就不能进行版本管理。

把一个文件放到仓库只需要两步:

  1. git add命令,将文件放入暂存区:
$ git add readme.txt

执行完,没有任何消息,没有消息就是好消息,说明添加成功。

  1. 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 。比如,要克隆 github 上的某个库,可以用下面的命令:

git clone https://github.com/tiangoubot/learngit.git

这个操作会在当前目录下创建一个名为 gitTest 的目录,并在这个目录下初始化一个.git文件夹(改文件加为隐藏文件),从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。

如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以指定新的目录名:

git clone https://github.com/tiangoubot/learngit.git myTest

git 支持多种数据传输协议。上面的例子使用的是 https:// 协议。