Git教程
常用 Git 命令清单
1. 环境配置
设置用户信息
1 2
| git config --global user.name "Olvi73" git config --global user.email "Olvi73@gmail.com"
|
查看配置信息
1 2
| git config --list git config user.name
|
上述命令设置的信息会保存在~/.gitconfig
中
2.本地初始化Git仓库
获取Git仓库的方式:
- 本地初始化Git仓库
- 从远程仓库克隆
2.1 本地初始化Git仓库
初始化命令
2.2 从远程仓库克隆
克隆命令
1 2 3
| git clone 远程仓库地址 例如 git clone https://github.com/torvalds/linux.git
|
3. 工作目录、暂存区及版本库
版本库:.git
隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等。
工作目录(工作区):包含.git
文件夹的目录就是工作目录,主要用于存放开发的代码。
暂存区:.git
文件夹中有很多文件,其中有一个index
文件就是暂存区,也可以叫做stage
。暂存区是一个临时保存修改文件的地方。
工作区->git add
->暂存区->git commit
->版本库
3.1 Git工作目录下文件的两种状态
- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
4. 本地仓库操作
查看文件状态
1 2
| git status git status -s //输出更加简洁
|
将未跟踪(untracked)的文件加入暂存区
将已跟踪的文件变成未跟踪文件
1
| git reset helloworld.txt
|
将暂存区的文件修改提交到本地仓库
1
| git commit -m "init repo"
|
commit 内容
Leading active verb |
Explanation |
解释 |
Add |
Create a capability e.g. feature, test, dependency. |
添加功能 |
Cut |
Remove a capability e.g. feature, test, dependency. |
移除功能 |
Fix |
Fix an issue e.g. bug, typo, accident, misstatement. |
解决问题 |
Bump |
Increase the version of something e.g. dependency. |
版本升级 |
Make |
Change the build process, or tooling, or infra. |
改变工具 |
Start |
Begin doing something; e.g. create a feature flag. |
开始 |
Stop |
End doing something; e.g. remove a feature flag. |
停止 |
Refactor |
A code change that MUST be just a refactoring. |
必须重构 |
Reformat |
Refactor of formatting, e.g. omit whitespace. |
格式化 |
Optimize |
Refactor of performance, e.g. speed up code. |
优化 |
Document |
Refactor of documentation, e.g. help files. |
重构文档 |
commit
feat
功能feature的意思,也是最常用的。当你的功能有变更的时候,都可以采用这种类型的type
fix
当然指的是bug修复
docs
更新了文档,或者更新了注释
style
代码格式调整,比如执行了format、更改了tab显示等
refactor
重构代码。指的是代码结构的调整,比如使用了一些设计模式重新组织了代码
perf
对项目或者模块进行了性能优化。比如一些jvm的参数改动,把stringbuffer改为stringbuilder等
test
这个简单,就是增加了单元测试和自动化相关的代码
build
影响编译的一些更改,比如更改了maven插件、增加了npm的过程等
ci
持续集成方面的更改。现在有些build系统喜欢把ci功能使用yml描述。如有这种更改,建议使用ci
chore
其他改动。比如一些注释修改或者文件清理。不影响src和test代码文件的,都可以放在这里
revert
回滚了一些前面的代码
删除文件
将文件添加至忽略列表
一般我们总会有些文件无需纳入Git管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以在工作目录中创建一个名为.gitignore
的文件(文件名称固定),列出要忽略的文件模式。
以斜杠/
开头表示目录;
以星号*
通配多个字符;
以问号?
通配单个字符
以方括号[]
包含单个字符的匹配列表;
以叹号!
表示不忽略(跟踪)匹配到的文件或目录;
1 2 3 4
| /res/ 过滤整个文件夹 *.a 过滤所有.a文件 /res/a.c 过滤某个具体文件 !b.a 不过滤b.a文件
|
查看日志记录
5. 远程仓库操作
- 查看远程仓库
- 添加远程仓库
- 从远程仓库克隆
- 移除无效的远程仓库
- 从远程仓库抓取与拉取
- 推送到远程仓库
查看远程仓库
1 2 3
| git remote git remote -v git remote show origin origin是git remote的name
|
添加远程仓库
1
| git remote [shortname] [url]
|
从远程仓库克隆
移除远程仓库
从远程仓库抓取与拉取
1 2
| git fetch 抓取不merge git pull 抓取并merge
|
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal:refusing to merge unrelated histories),解决此问题可以在git pull
命令后面加上参数--allow-unrelated-histories
推送到远程仓库
6. Git分支
- 查看分支
- 创建分支
- 切换分支
- 推送至远程仓库分支
- 合并分支
- 删除分支
查看分支
1 2 3
| git branch 列出所有本地分支 git branch -r 列出所有远程分支 git branch -a 列出所有本地分支和远程分支
|
创建分支
1
| git branch [branch name]
|
切换分支
推送至远程仓库分支
1
| git push origin [branch name]
|
合并分支