Git教程

Git教程

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仓库的方式:

  1. 本地初始化Git仓库
  2. 从远程仓库克隆

2.1 本地初始化Git仓库

初始化命令

1
git init

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 add helloworld.txt

将已跟踪的文件变成未跟踪文件

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 回滚了一些前面的代码

删除文件

1
git rm helloworld.txt

将文件添加至忽略列表

一般我们总会有些文件无需纳入Git管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以在工作目录中创建一个名为.gitignore的文件(文件名称固定),列出要忽略的文件模式。

以斜杠/开头表示目录;
以星号*通配多个字符;
以问号?通配单个字符
以方括号[]包含单个字符的匹配列表;
以叹号!表示不忽略(跟踪)匹配到的文件或目录;

1
2
3
4
/res/ 过滤整个文件夹
*.a 过滤所有.a文件
/res/a.c 过滤某个具体文件
!b.a 不过滤b.a文件

查看日志记录

1
2
git log
输入q退出界面

5. 远程仓库操作

  1. 查看远程仓库
  2. 添加远程仓库
  3. 从远程仓库克隆
  4. 移除无效的远程仓库
  5. 从远程仓库抓取与拉取
  6. 推送到远程仓库

查看远程仓库

1
2
3
git remote
git remote -v
git remote show origin origin是git remote的name

添加远程仓库

1
git remote [shortname] [url]

从远程仓库克隆

1
git clone [url]

移除远程仓库

1
git remote rm [name]

从远程仓库抓取与拉取

1
2
git fetch  抓取不merge
git pull 抓取并merge

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal:refusing to merge unrelated histories),解决此问题可以在git pull命令后面加上参数--allow-unrelated-histories

推送到远程仓库

1
git push

6. Git分支

  1. 查看分支
  2. 创建分支
  3. 切换分支
  4. 推送至远程仓库分支
  5. 合并分支
  6. 删除分支

查看分支

1
2
3
git branch	列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支

创建分支

1
git branch [branch name]

切换分支

1
git checkout [name]

推送至远程仓库分支

1
git push origin [branch name]

合并分支

1
git merge [branch name]