我常用的 Git 命令速查表
这是我常用的git命令,其实对于git来说非常简单,但是不简单的是命令比较多,如果你用的少了,会忘记用法就会觉得特别难。我想写我常用的命令大全,顺便复习温故一下。但是不可否认的是,我对很多命令都做了最佳的取舍,并不想一股脑全部都展示出来,这样我还不如去git网站,菜鸟网站去找那种git教程、或者是命令大全。
所以我打算将git命令+我的笔记结合一下,我觉得这些命令是必须会的,如果你想学git命令的话。当然你也可以把它作为一个速查手册。后面我还会附上简易流程和一些基础必会的命令。
- 查看工作区状态
git status,git status -sb- 当前在哪个分支;
- 哪些文件被修改;
- 哪些文件已经暂存;
- 是否存在冲突;
- 当前是否正在合并或撤销。
查看提交历史
git log --oneline查看分支图
git log --oneline --graph --decorate --all设置别名字
git config --global alias.lg "log --oneline --graph --decorate --all"之后就可以
git lg
查看分支
git branch看本地分支及其跟踪关系:
git branch -vv查看所有分支:
git branch -a
创建并切换到新分支
git switch -c new-feature切换已有分支
git switch main返回上一个分支
git switch -例如从main切到new-feature后,可以执行就回到了main分支删除本地分支
- 已经合并后安全删除:
git branch -d new-feature - 强制删除尚未合并的分支:
git branch -D new-feature
- 已经合并后安全删除:
查看尚未暂存的修改
git diff:查看已经修改但尚未git add的内容。查看已经暂存的修改
git diff --cached或者git diff --staged暂存文件
git add main.go或者git add .创建提交
git commit -m "添加登录功能"修改最近一次提交
- 只修改提交说明:
git commit --amend -m "新的提交说明" - 补交遗漏文件,但不修改说明:
git add 漏掉的文件git commit --amend --no-edit
- 只修改提交说明:
撤销未暂存的文件修改
git restore main.go:将文件恢复到当前提交中的状态,未提交修改会消失。撤销所有未暂存修改:
git restore .取消暂存
git restore --staged main.go:文件修改仍然保留,只是从暂存区移回工作区。取消所有暂存:
git restore --staged .把文件恢复到某次提交
git restore --source=<commit-id> -- main.go然后检查并重新提交:git diffgit add main.gogit commit -m "恢复 main.go 的旧版本"
撤销最近一次提交,保留暂存
git reset --soft HEAD^撤销最近一次提交,保留为未暂存修改
git reset HEAD^等价于:git reset --mixed HEAD^整体回到指定提交
git reset --hard <commit-id>:会移动分支,并丢弃暂存区和工作区修改,风险较高。安全撤销某个历史提交
git revert <commit-id>情景:我已经进行了10次commit提交了,现在不需要第5次提交的功能,保留C1-C4,C6-C10
C1 → C2 → C3 → C4 → C5 → C6 → C7 → C8 → C9 → C10 ↑ 不想要这个功能找回误删或误回退的提交
git reflog情景:误执行了:
git reset --hard HEAD~3可以先通过reflog找到原来的提交 ID,然后恢复:git reset --hard <原提交ID>
合并分支
先切到接收代码的分支:
git switch maingit merge new-feature把 new-feature 合并到当前所在的 main 不打开提交信息编辑器:
git merge new-feature --no-edit查看冲突状态
git status解决冲突后:git add.git commit或者:git merge --continue放弃本次合并:git merge --abort
查看远程仓库
git remote -v获取远程信息但不自动合并
git fetch:只更新远程分支信息,不直接修改当前代码。 查看远程和本地差异:git log --oneline HEAD..origin/main拉取并合并
git pull通常相当于:git fetch、git merge推送当前分支
git push- 第一次推送新分支:
git push -u origin new-feature - 设置跟踪关系后,以后直接:
git pushgit pull
- 第一次推送新分支:
更安全地强制推送
git push --force-with-lease
临时保存当前修改
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