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 --list
git init
git init [目录名]
git clone <url>
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 checkout -- <文件名>
git commit --amend -m '新提交说明'
git commit --amend
git log
git log --pretty=oneline
git log --graph
gitk