3个概念
- 工作区
- 暂存区
- 仓库

git获取帮助
命令格式:git help <verb> ;
例如,通过 git help commit 可以获得与提交相关的帮助;
git的配置
git config
配置3种参数代表的作用域
git config --system: 全系统配置,对所有用户的所有仓库有效,配置信息写在etc/gitconfig中;git config --global: 单用户配置,对当前用户的所有仓库有效,配置信息写在~/.gitconfig中;git config --local: 默认配置方式,--local可省略,表示本仓库适用,配置信息写在./.git/config中;
配置内容
git config user.name xxx: 设置用户名;git config user.email xxx@xx.com: 设置电子邮件;
以上两条必须配置,每次commit时需要;
git config core.editor vim: 设置git默认使用的文本编辑器;git config merge.tool kdiff3: 设置归并发生冲突时,默认使用kdiff3编辑并解决冲突;
查看配置内容
git config <key>: 查看指定项目的内容,如git config user.name查看配置的user.name;git config --list: 查看所有的配置信息;
Git 得到一个仓库
初始化一个空的仓库
git init: 将当前目录初始化为一个仓库;git init [目录名]: 将指定目录初始化为一个仓库;
从现有仓库中克隆
-
git clone <url>: 从指定的url仓库克隆到本地;
Git 文件操作
常用命令
| 命令 | 含义 |
|---|---|
git status |
查看仓库文件状态 |
git add <文件名> |
将指定文件加入暂存区, 文件名为 . 时表示当前目录都加入 |
git commit -m '提交说明' |
将暂存区内容提交到仓库 |
git commit -a -m '提交说明' |
直接将工作区的所有修改提交到仓库,不经过暂存区 |
git rm <文件名> |
删除文件,并提交至暂存区 |
git rm --cache <文件名> |
将文件从跟踪名单中删除,而不真的删除文件 |
git mv file_from file_to |
将文件进行重命名并提交至暂存区 |
git reset HEAD <文件名> |
将指定文件从暂存区放回工作区,与git add作用相反 |
git checkout -- <文件名> |
取消指定文件在工作区的修改(不可恢复) |
git commit --amend -m '新提交说明' |
提交暂存区文件到最近一次提交,并修改该次提交的说明 |
git commit --amend |
提交暂存区文件到最近一次提交,不修改提交说明 |
设置忽略的文件
在仓库目录下创建.gitignore 文件,其编写方式为:
# 忽略所有 .a 结尾的文件
*.a
# 不忽略文件 lib.a
!lib.a
# 忽略 build/ 目录下的所有文件
build/
说明:
-
#在.gitconfig中表示注释; - 可以使用glob匹配(简化版正则表达)
- 以反斜杠结尾表示匹配一个目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上
!取反。 - .gitignore对状态为
untracked的文件或目录有效,已经通过git add加入跟踪列表的保持跟踪,除非使用git rm进行删除,否则保持跟踪; - 在
.gitignore中若存在两行是冲突的,以后者的定义为主,例如:
# 不忽略文本1.txt
!1.txt
# 忽略所有后缀为txt的文件
*.txt
则若目录下有一个文件名为 1.txt 的文件,git将会忽略该文件;
要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件
glob语法
| 符号 | 意义 |
|---|---|
* |
匹配0个或多个任意字符 |
? |
匹配0个或1个任意字符 |
[ ] |
匹配中括号中的任意一个字符 如 [abc]表示匹配a或b或c |
[起始符号-终止符号] |
例如[0-9]表示匹配0、1、...、9任意一个字符 |
查看提交历史
git log: 查看项目提交的历史,将会列出每次提交详细的SHA-1值,用户,邮件号,提交信息;git log --pretty=oneline: 以单行形式显示项目历史,包含SHA-1值和提交信息;git log --graph: 通过ASCII字符串表示简单图形,显示仓库的分化、衍合,不过比较丑,建议使用下一条命令;gitk: 图形化显示仓库分化衍合,比较美观,能用这个就别将就用git log --graph;
总结
所有之前提到的命令汇总如下,供回忆:
git help <verb>git config user.name <用户名>git config user.email <电子邮件>git config core.editor <编辑器>git config merge.tool <合并工具>git config <项目名>git config --listgit initgit init [目录名]git clone <url>git statusgit add <文件名>git commit -m ‘提交说明’git commit -a -m '提交说明'git rm <文件名>git rm --cache <文件名>git mv file_from file_togit reset HEAD <文件名>git checkout -- <文件名>git commit --amend -m '新提交说明'git commit --amendgit loggit log --pretty=onelinegit log --graphgitk