我常用的 Git 命令速查表

  这是我常用的git命令,其实对于git来说非常简单,但是不简单的是命令比较多,如果你用的少了,会忘记用法就会觉得特别难。我想写我常用的命令大全,顺便复习温故一下。但是不可否认的是,我对很多命令都做了最佳的取舍,并不想一股脑全部都展示出来,这样我还不如去git网站,菜鸟网站去找那种git教程、或者是命令大全。

所以我打算将git命令+我的笔记结合一下,我觉得这些命令是必须会的,如果你想学git命令的话。当然你也可以把它作为一个速查手册。后面我还会附上简易流程和一些基础必会的命令。

查看状态

  1. 查看工作区状态 git status, git status -sb
    • 当前在哪个分支;
    • 哪些文件被修改;
    • 哪些文件已经暂存;
    • 是否存在冲突;
    • 当前是否正在合并或撤销。

查看提交历史

  1. 查看提交历史

    git log --oneline

  2. 查看分支图

    git log --oneline --graph --decorate --all

    设置别名字 git config --global alias.lg "log --oneline --graph --decorate --all"

    之后就可以 git lg

查看分支

  1. 查看分支

    git branch

  2. 看本地分支及其跟踪关系:

    git branch -vv

  3. 查看所有分支:

    git branch -a

创建与切换分支

  1. 创建并切换到新分支

    git switch -c new-feature

  2. 切换已有分支

    git switch main

  3. 返回上一个分支

    git switch - 例如从 main 切到 new-feature 后,可以执行就回到了main分支

  4. 删除本地分支

    • 已经合并后安全删除: git branch -d new-feature
    • 强制删除尚未合并的分支: git branch -D new-feature

修改、暂存和提交

  1. 查看尚未暂存的修改

    git diff :查看已经修改但尚未 git add 的内容。

  2. 查看已经暂存的修改

    git diff --cached 或者 git diff --staged

  3. 暂存文件

    git add main.go 或者 git add .

  4. 创建提交

    git commit -m "添加登录功能"

  5. 修改最近一次提交

    • 只修改提交说明: git commit --amend -m "新的提交说明"
    • 补交遗漏文件,但不修改说明: git add 漏掉的文件 git commit --amend --no-edit

撤销文件修改

  1. 撤销未暂存的文件修改

    git restore main.go :将文件恢复到当前提交中的状态,未提交修改会消失。

  2. 撤销所有未暂存修改:

    git restore .

  3. 取消暂存

    git restore --staged main.go :文件修改仍然保留,只是从暂存区移回工作区。

  4. 取消所有暂存:

    git restore --staged .

  5. 把文件恢复到某次提交

    git restore --source=<commit-id> -- main.go 然后检查并重新提交: git diff git add main.go git commit -m "恢复 main.go 的旧版本"

撤销提交

  1. 撤销最近一次提交,保留暂存

    git reset --soft HEAD^

  2. 撤销最近一次提交,保留为未暂存修改

    git reset HEAD^ 等价于: git reset --mixed HEAD^

  3. 整体回到指定提交

    git reset --hard <commit-id> :会移动分支,并丢弃暂存区和工作区修改,风险较高。

  4. 安全撤销某个历史提交

    git revert <commit-id>

    情景:我已经进行了10次commit提交了,现在不需要第5次提交的功能,保留C1-C4,C6-C10

    C1 → C2 → C3 → C4 → C5 → C6 → C7 → C8 → C9 → C10
                        ↑
                   不想要这个功能
    
  5. 找回误删或误回退的提交

    git reflog

    情景:误执行了:git reset --hard HEAD~3 可以先通过 reflog 找到原来的提交 ID,然后恢复:git reset --hard <原提交ID>

合并分支

  1. 合并分支

    先切到接收代码的分支:

    git switch main git merge new-feature

    把 new-feature 合并到当前所在的 main 不打开提交信息编辑器:git merge new-feature --no-edit

  2. 查看冲突状态 git status 解决冲突后:

    • git add.
    • git commit 或者:
    • git merge --continue 放弃本次合并:
    • git merge --abort

远程仓库

  1. 查看远程仓库

    git remote -v

  2. 获取远程信息但不自动合并

    git fetch :只更新远程分支信息,不直接修改当前代码。 查看远程和本地差异: git log --oneline HEAD..origin/main

  3. 拉取并合并

    git pull 通常相当于:git fetch、git merge

  4. 推送当前分支

    git push

    • 第一次推送新分支:git push -u origin new-feature
    • 设置跟踪关系后,以后直接:git push git pull
  5. 更安全地强制推送

    git push --force-with-lease

临时保存修改

  1. 临时保存当前修改

    git stash

    恢复:git stash pop

    查看保存列表:git stash list

    保存时写说明:git stash push -m "登录页面做到一半"

    情景:当前功能还没写完 但需要临时切换到另一个分支修复问题

最常用的组合

 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
# 查看当前状态
git status

# 从主分支创建功能分支
git switch main
git switch -c feature-login

# 开发后查看修改
git diff

# 暂存和提交
git add .
git diff --cached
git commit -m "添加登录功能"

# 查看分支图
git log --oneline --graph --decorate --all

# 回到主分支并合并
git switch main
git merge feature-login

# 删除已经合并的分支
git branch -d feature-login

# 推送
git push

其实就5类

1
2
3
4
5
看状态:status、diff、log
管分支:branch、switch
做提交:add、commit
做撤销:restore、reset、revert、reflog
连远程:fetch、pull、push

最基础

 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
git status
git status -sb

git log --oneline
git log --oneline --graph --decorate --all

git branch
git branch -vv

git switch <分支名>
git switch -c <新分支名>

git diff
git diff --cached

git add .
git commit -m "提交说明"

git merge <分支名>
git revert <commit-id>
git reflog

git fetch
git pull
git push