本系列基于Pro Git介绍如何使用Git进行源代码管理,以及后期如何使用Git进行项目管理。
系列初步目录如下:
1. Git基本概念
2. Git分支操作
后续待定。
Git的历史就不在这里进行介绍了,网上随处都可以找到,以下是在使用Git的时候的一些基本概念和方法
Git有三种状态,文件可能处于其中之一:已提交(Committed)、已修改(modified)和已暂存(staged).已提交表示数据已经安全的保存在本地数据库中。已修改表示已经修改了文件,但还没有保存在数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含现在下次提交的快照中。
由此引入Git项目的三个工作区域的概念:Git仓库、工作目录以及暂存区域
初次运行Git之前的配置
通过Git自带的git config命令来完成Git的初始化工作,配置主要存储在三个不同位置
/ect/gitconfig文件:包含系统上每一个用户及仓库的通用配置,如果使用--system选项时,就会从此文件读写配置变量
~/.gitcongig或~/.config/git/config文件:只针对当前用户,可以使用--global选项读写配置变量
当前使用仓库的Git目录中的config文件(就是.git/config文件):针对该仓库
配置用户信息
git config --global user.name "John Doe" git config --global user.email [email protected]
检查配置信息
git config --list查看GIt的所有配置信息或是使用git config <key>来查看特定的信息
初始化仓库
git init
向仓库中添加文件并提交
1 git add *.c 2 git add README 3 git commit -m "initial project"
记录更新到仓库
使用Git的时候文件的生命周期如下:
检查当前文件状态
1 git status
跟踪新文件
git add 文件名 此时文件处于stage状态
暂存已修改的文件
git add 已修改的文件, 此时文件处于stage状态
恢复处于Modified状态的文件
git checkout — <文件名> 会将已经修改的文件但是并没有提交到缓冲区的文件重置为原来的状态
将处于缓冲区的文件重置到工作区
git reset HEAD <文件名> 或是 git reset <文件名>
使用忽略文件 .gitignore,具体规则如下:
- 所有空行或者以#开头的行都会被Git忽略;
- 可以使用glob模式匹配;
- 匹配模式可以以(/)开头防止递归;
- 匹配模式可以以(/)结尾指定目录;
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
一个.gitignore文件的例子:
# no .a file *.a #but do track lib.a, even though you’re ignoring .a files above !lib.a # only ignore TODO file in the currency directory, not subdir /TODO /TODO #ignore all files in the build/ dictionary build/ #ignore doc/notes.txt, but not doc/server/arch.txt doc/*.txt #ignore all .pdf files in the doc/ directory dic/**/*.pdf
git diff命令比较的是工作目录中当前文件和暂存区域之间的差异,也就是修改之后还没有暂存起来的内容的变化。若要查看已暂存的将要添加到下次提交的内容,可以使用git diff--cached命令或是git diff —staged
跳过使用暂存区域
在使用git commit进行提交修改的时候,可以使用命令参数-a从而跳过将修改提交到暂存区,直接提交到版本库中,从而省略git add的过程
查看提交历史
通过使用git log命令可以查看之间提交的历史,使用-p参数显示每次提交的差异。另外一个常用的选项是git log —pretty=oneline将每个提交都在一行的形式进行显示。下面是git log的常用选项
选项 |
说明 |
-p |
按补丁形式显示每个更新之间的差异 |
--stat |
显示每次更新的文件修改统计信息 |
--shortstat | 只显—stat中最后的行数修改添加移除统计 |
--name-only |
仅在提交信息后显示已修改的文件清单 |
--name-status |
显示新增、修改、删除的文件清单 |
--abbrev-commit |
仅显示SHA-1的前几个字符,而非所有的40字符 |
--relative-date |
使用较短的相对时间显示 |
--graph |
显示ASCII图形便是德分支合并历史 |
--pretty | 使用其他格式显示历史提交信息。可用的选项包括online、short、full、fuller和format |
撤销操作
当提交完成之后发现漏掉文件没有提交或者提交信息写错了,可以使用git commit —amend选项的命令尝试重新提交
git commit -m “Init Repo” git add forgotten_file git commit —amend
最终只会有一个提交,第二次提交将替换第一次的提交
标签操作
列出现在已有的标签: git tag. 可以使用特定的模式来查看特定的标签,例如:git tag -l “v1.1”
Git使用两种主要标签:轻量标签(lightweight)和附注标签(annotated),一个轻量标签只是一次提交的引用,附注标签是存储在Git数据库中的一个对象,包含创建者,时间等信息,因此推荐使用附注标签。
使用git tag -a v1.4 -m “my version 1.4”来创建附注标签,使用命令git show来显示标签的相关信息。直接使用git tag v1.4来创建轻量标签。也可以对之前的某个提交打标签,使用命令git tag -a v1.4 9fceb02
检出标签
使用命令git checkout -b [branchname] [tagname]在特定的标签上创建一个新分支