zhen's blog

编译思想,编译人生

Git常用命令参考手册

Git常用命令参考手册

基本git命令


目录

基础

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看配置列表
git config -l

# 查看已设置的用户名
git config --global --get user.name

# 设置用户名
git config --global user.name ${username}

# 查看已设置的邮箱
git config --global --get user.email

# 设置邮箱
git config --global user.email "[email protected]"

# 上述配置均可在用户目录下的.gitconfig文件中进行查看配置

初始化本地仓库

1
2
# 会在当前目录生成.git
git init

文件状态

1
git status

日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看完整历史提交记录
git log

# 查看前2次提交记录 commit message
git log -2

# 查看前2次提交记录,包括diff
git log -p -2

# 搜索关键词
git log -S 你好

# 列出提交者贡献数量
git shortlog -sn

# 单行简要显示内容
git log --oneline

克隆

1
2
3
4
5
6
7
8
9
10
11
# https 协议
git clone https://github.com/${username}/${git-repo}.git

# SSH协议
git clone [email protected]:${username}/${git-repo}.git

# 克隆某个分支, -b 后面分支名字
git clone -b ${branch-name} https://github.com/${username}/${git-repo}.git

# 递归克隆,适用于项目中包含子模块
git clone --recursive ${username}@github.com/${username}/${git-repo}.git

分支操作

查看分支

1
2
3
4
5
6
7
8
9
10
11
# 查看所有分支
git branch --all

# 查看本地分支
git branch

# 查看远程仓库地址
git remote -v

# 查看远端分支
git branch -r

切换分支

1
2
3
4
5
6
# 2种方法,切换到master分支
git checkout master
git switch master

# 切换上一个分支
git checkout -

创建分支

1
2
3
4
5
6
7
8
# 创建dev分支
git branch dev

# 创建develop分支并切换
git checkout -b dev

# 切换远端分支
git checkout -t origin/dev

删除分支

1
2
3
4
5
6
# 删除本地分支
git branch -d ${branchName}

# 删除远程分支
git branch -d -r origin/${branchName}
git push origin :${branchName}

重命名分支

1
2
# 重命名当前分支
git branch -m ${branchName}

代码合并

1
2
3
4
5
6
7
8
# 两步法, 将feature分支代码合并到dev
# 1、切换到dev分支
git checkout dev
# 2、将feature合并到当前dev分支
git merge feature

# 同上效果
git merge feature dev

内容操作

暂存

1
2
3
4
5
6
7
8
9
10
11
# 暂存所有
git add -A

# 暂存某个文件
git add ./README.md

# 添加当前目录所有改动文件
git add .

# 暂存一系列文件
git add 1.txt 2.txt ...

删除

git add 的反向操作

1
2
# 删除1.txt 文件
git rm 1.txt

提交

1
2
3
4
5
# -m 提交的信息
git commit -m "changes log"

# 提交显示diff变化
git commit -v

推送

1
2
3
4
5
6
7
8
9
10
11
# 推送内容到主分支
git push -u origin master

# 本地分支推送到远程, 本地分支:远程分支
git push origin ${localBranchName}:${remoteBranchName}

# 简写,默认推送当前分支
git push

# 强制推送, -f => --force
git push -f

拉取、获取内容

1
2
3
4
5
6
7
8
9
10
11
# 获取远端名为master的分支,但不会进行自动合并,需要手动merge
git fetch origin master

# 等同于git fetch 然后 git merge
git pull

# 拉去远端分支master到本地分支master
git pull origin master:master

# 拉取远端分支master到本地【当前】分支
git pull origin master

查看文件的改动

1
2
3
4
5
6
7
8
9
10
11
12
# 查看所有文件改动
git diff

# 查看具体文件的改动
git diff README.md

# 查看某个版本的改动, 后面那一窜是commitId, git log后就能看到
git diff ${commitId}

# 查看某个文件的历史修改记录
git log README.md
git show ${commitId} README.md

回滚版本

1
2
3
4
5
6
7
8
9
10
11
# 回滚上一个版本
git reset --hard HEAD^

# 回滚上两个版本
git reset --hard HEAD^^

# 回退到指定版本,git log 就能看到commit id了
git reset --hard '${commitId}'

# 回滚版本是不保存在 git log,如果想查看使用
git reflog

撤销

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 撤销当前目录下所有文件的改动
git checkout -- .

# 撤销指定文件修改
git checkout -- README.md

# 暂存区回到工作区, 指定 ./README.md 文件从暂存区回到工作区
git reset HEAD ./README.md

# 撤销commit, 回到工作区, 一般commitId是前一个
git reset ${commitId}

# 撤销commit, 并且把修改同时撤销
git reset --hard ${commitId}

其他

标签

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 列出本地所有标签
git tag

# 列出远程所有标签
git ls-remote --tags origin

# 按照特定模式查找标签, `*` 模板搜索
git tag -l "v1.0.0*"

# 创建带有附注标签
git tag -a v1.1.0 -m "标签描述"

# 创建轻量标签, 不需要带任何参数
git tag v1.1.0

# 后期打标签, 假设之前忘记打标签了,可以通过git log查看commit id
git log
git tag -a v1.1.0 ${commitId}

# 推送到远程,默认只是本地创建
git push origin v1.1.0

# 一次性推送所有标签到远程
git push origin --tags

# 删除标签, 你需要再次运行 git push origin v1.1.0 才能删除远程标签
git tag -d v1.1.0

# 删除远程标签
git push origin --delete v1.1.0

# 检查标签
git checkout v1.1.0

# 查看本地某个标签详细信息
git show v1.1.0

密码配置

1
2
3
4
5
6
7
8
# 记住提交账号密码
git config --global credential.helper store

# 清除git已保存的用户名和密码
# windows
git credential-manager uninstall
# mac linux
git config --global credential.helper store

License

MIT