介绍

  • 本文列举git命令常用的一些操作,用时查询即可

概念

本地仓库

通过git init命令初始化的仓库,会存在一个.git的隐藏目录,当前目录就可以理解为一个本地仓库

工作区

在本地仓库中直接看到的目录

暂存区

stage、index。一般在.git目录中的index文件中,也叫索引
git add操作会将工作区的内容添加到暂存区

版本库

.git目录就是版本库
git commit动作会将暂存区的内容提交到版本库

文件状态

  • 未跟踪 Untracked:新创建的还没有被本地仓库记录的文件
  • 已跟踪 Tracked:将未跟踪的文件通过git add添加到暂存区后的状态
  • 已修改 Modified:对已跟踪的文件修改过后的状态,这些修改还没有被添加到暂存区
  • 已暂存 Staged:将已修改的文件通过git add添加到暂存区后的状态
  • 已提交 Commited:用git commit将暂存区内的修改提交到本地仓库后的状态

命令

基本仓库操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 初始化一个本地仓库
git init .

# 拷贝一个远程仓库
git clone https://xxx
git clone --depth 1 https://xxx # 拷贝该远程仓库的最后一层,其他提交内容不会拷贝

# 查看当前仓库的状态
git status

# 查看当前仓库的所有文件的差异,暂存区和工作区的差别
git diff

# 将文件从暂存区和工作区中删除
git rm xxx

# 移动或者重命名工作区文件
git mv xxx

# 查看历史提交
git log
git log -p # 查看详细提交信息

仓库分支操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 修改当前分支的名字
git branch -M newname

# 创建并且切换到该分支
git checkout -b xxx

# 切换分支
git checkout xxx

# 查看所有分支
git branch
git branch -r # 查看远程分支
git branch -a # 所有的分支

# 将其他分支合并到当前分支
git merge xxx

# 删除本地分支
git branch -d xxx
git branch -D xxx # 强制删除

# 删除远程分支
git push origin --delete xxx

仓库查询操作

git log
常用参数:

  • -n 5:只显示最近5次的提交
  • -p:显示提交的补丁(具体更改内容)
  • –oneline:以简洁的一行格式显示提交信息
  • –graph:以图形化方式显示分支和合并历史
  • –decorate:显示分支和标签指向的提交
  • –author=<作者>:只显示特定作者的提交
  • –since=<时间>:只显示指定时间之后的提交
  • –until=<时间>:只显示指定时间之前的提交
  • –grep=<模式>:只显示包含指定模式的提交消息
  • –no-merges:不显示合并提交
  • –stat:显示简略统计信息,包括修改的文件和行数
  • –abbrev-commit:使用短提交哈希值
  • –pretty=<格式>:使用自定义的提交信息显示格式

提交和回退

1
2
3
4
5
6
7
8
9
# 添加指定文件到暂存区
git add xxx

# 提交暂存区到本地仓库
git commit
git commit -m "note" # -m可以添加提交记录信息

# 切换到特定提交
git checkout <commit>

Git配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看当前的所有配置
git config --list

# 编辑配置文件
git config --global --edit

# 设置用户名和邮箱
# global的含义是全局生效,该配置会被添加到 $HOME/.gitconfig 里面;否则是在对应仓库的 .git/.config 文件内
git config --global user.name "xxx"
git config --global user.email "xxx@xxx"

# 设置跳过ssl验证
git config --global http.sslVerify false

# 设置记住秘密,下次提交就不需要再次输入密码了
# 当然也可以全局,但是不推荐
git config credential.helper store

# 删除配置
git config --global --unset setname

参考