本地仓库
背景
创建工作目录
平时工作时我们习惯对文档分门别类进行管理,.doc
.txt
等文本类型的文件习惯存在 doc
文件下,开发java
js
等源代码文件存在在 src
目录下,这一点很好理解,那么讲解 git的项目我们也要创建一个文件夹,姑且新建一个demo
的文件夹吧!
# 在工作空间创建指定目录
mkdir demo
# 切换至工作目录
cd demo
复制代码
创建本地仓库
既然已经创建了工作文件夹,那么我们自然是希望该文件下的所有文件都能被 git
管理,也就是说在当前文件下的创建新文件,修改原文件内容或者删除文件等操作都能纳入版本控制中,不然为什么要用git
呢?
下面这个命令就是告诉git
这个 demo
目录要纳入版本控制了.
# 初始化本地仓库
git init
复制代码
一旦运行git init
命令,细心的读者可能会发现在原来的 demo
目录下多了.git
隐藏文件,正因如此,原来被我们称为工作目录的 demo
才能纳入版本控制,我们将.git
目录称之为版本库.
由于当前项目 demo
只在我们自己电脑上,其他人无法访问,所以我们称这种形式的版本库为本地仓库.
添加文件到版本库
首先明确的是,所有的版本控制系统只能追踪文本文件的改动,文本文件就是平常熟悉的.txt
.html
.js
.css
.java
.xml
等等文件,非文本文件的其他格式有哪些? 例如二进制文件,像我们平时听音乐的.mp3
,看视频的.mp4
,浏览图片的.png
等这些都是二进制文件,需要专门的软件才能正常打开,不信的话,你用记事本看看能不能打开视频?
了解文本文件和二进制文件的区别,那是不是说二进制文件没法进行版本控制了,刚才你不是还说demo
目录下的所有文件吗?这不是自相矛盾吗!
非也非也,git
当然也能够管理二进制文件,对于文本文件的追踪,可以细粒度到哪个文件在哪一行发生了哪些变化,而二进制文件只能粗粒度知道哪个文件变化了,并不知道具体变化.
不幸的是,Microsoft
的Word
格式是二进制格式,因此,版本控制系统是没法跟踪Word
文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件.
因为文本是有编码的,比如中文有常用的GBK
编码,日文有Shift_JIS
编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8
编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持.
言归正传,现在我们在demo
目录下创建一个test.txt
演示文件,内容如下git test
# 创建新文件
touch test.txt
# 编辑新文件,输入 git test
echo "git test" > test.txt
复制代码
接下来我们还需要两步操作才能将test.txt
纳入git
管理:
第一步,使用git add <file>
命令将文件添加到本地仓库:
# 添加到本地仓库: 第一步指定要添加的文件
git add test.txt
复制代码
第二步,使用git commit -m <message>
命令将文件提交到本地仓库:
# 添加到本地仓库: 第二步指定添加文件备注
git commit -m "add test.txt"
复制代码
经过上述两步操作,test.txt
文件已经纳入到版本控制中了,这里你可能会有疑问了为什么需要add
commit
两步呢? 因为commit
可以一次性提交很多文件,所以你可以多次add
不同的文件,比如:
# 创建三个文件file1.txt file2.txt file3.txt
touch file1.txt file2.txt file3.txt
# 添加一个文件file1.txt
git add file1.txt
# 添加两个文件file2.txt file3.txt
git add file2.txt file3.txt
# 一次性提交全部文件
git commit -m "add 3 files."
复制代码
小结
- 初始化本地仓库
git init
- 添加文件到本地仓库分两步
git add <file>
和git commit -m <message>
- 实际工作中,大致以下流程
# 在工作空间创建指定目录
mkdir demo
# 切换至工作目录
cd demo
# 初始化本地仓库
git init
# 创建新文件
touch test.txt
# 编辑新文件,输入 git test
echo "git test" > test.txt
# 添加到本地仓库: 第一步指定要添加的文件
git add test.txt
# 添加到本地仓库: 第二步指定添加文件备注
git commit -m "add test.txt"
...
# 继续编辑目标文件,追加 git init
echo "git init" >> test.txt
# 将目标文件添加到本地仓库
git add test.txt
# 添加本次新增文件的备注
git commit -m "add git init"
复制代码