September 3, 2016

Git详细教程

创建版本库和基本使用

创建一个本地版本库。

git init

添加文件到暂存区。

git add 1.text  // 添加指定的修改文件到暂存区
git add *       // 添加所有修改文件到暂存区

将暂存区的文件添加至本地版本库,并添加说明信息。

git commit -m "说明信息"

commit可以一次提交很多文件,add可以多次不同的文件。

查看版本库库状态与文件对比

git status命令,查看当前版本库的一些信息,包括那些文件被修改,是否准备提交。

git diff命令,查看文件具体的修改信息,示例:

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.

版本回滚

git log命令,查看版本库历史版本的版本号、作者、提交时间、说明信息。

版本号是SHA1计算出来的一个非常大的数字,用十六进制表示,Git就会把它们自动串成一条时间线。

git reset命令,回滚到指定的版本,示例:

git reset --hard 版本号

git的版本号不必写全,可以使用前7位或更多,git会自动查到对应的版本。

在Git工具中,有个HEAD指针指向当前版本,即使退回到之前的版本,之后保存的版本实际上还是存在的。使用git reflog查看每一次的操作记录,找到想要的版本ID,接着使用git reset切换版本。

工作区和暂存区

在电脑里能看到的项目文件夹就是一个工作区,暂存区、分支、HEAD指针在项目文件夹中的.git中。

git add是将文件放入暂存区,git commit是将暂存区的文件添加到版本库中。

管理修改

git commit只将暂存区的文件放入版本库

撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

在工作区删除文件,版本库会提示是否删除。

确定删除,用命令git rm 文件名删掉,并且git commit提交到版本库。

误删除,使用git checkout -- 文件名恢复。

分支管理

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

——廖雪峰

创建与合并分支

查看分支:git branch,使用*号标出当前分支。

创建分支:git branch <name>

切换分支:git checkout <name>

创建并切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>