乐趣区

git 入门教程之本地仓库

本地仓库
背景
创建工作目录
平时工作时我们习惯对文档分门别类进行管理,.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”

退出移动版