写了好多年代码了,工作中大多使用Git进行代码版本管理。但是提交代码的时候经常遇到一些Git问题,而需要去百度/google 对应的命令!今天就顺手总结一份最常用到的Git命令清单吧🎃 点击查看Git思维导图
一. 起源
- 通过文件夹进行版本管理
- 集中式版本控制系统-SVN
- 分布式版本控制系统-Git
二. 配置(git config)
2.1 --local
git config --local user.name '账户名'git config --local user.email'邮箱'git config --local --list
2.2 --global
git config --global user.name '账户名'git config --global user.email '邮箱'git config --global --list
三. .git 文件夹
3.1 HEAD 文件
- HEAD 是一个引用,指向的是当前工作分支
- 当处于"分离头指针"的状态时,HEAD 只想某一个具体的 commit
3.2 config 文件
存放与本地仓库相关的配置信息
- user.name
- user.email
- 远程的 url
- ................
3.3 refs 文件夹
3.3.1 heads
存储了当前 git 项目的所有本地分支
- master/main
- 本地分支名称 1
- 本地分支名称 2
- .........
3.3.2 tags 文件夹
存放所有标签
3.3.3 objects 文件夹
如果文件发生了变化, git 将对其进行压缩并将其存储在 object 文件夹
objects:存放对象
.git/objects/ 文件夹中的子文件夹都是以哈希值的前两位字符命名 每个 object 由 40 位字符组成,前两位字符用来当文件夹,后 38 位做文件。
- commit 对象
- tree 对象
- blob 对象
四. 操作
4.1 关联 Git 仓库
- 关联远程仓库:
git add remote add origin git 地址 - 修改远程仓库地址:
git remote set-url origin git 地址
4.2 配置公私钥
4.3 指定不需要 Git 管理的文件---.gitignore
4.4 最常用的操作
4.5 提交文件
- 工作区(即本地代码)
- git add(提交文件到暂存区)
git add .git add -ugit add-A
git commit -m '备注'(提交文件到 git 版本历史中去)
4.6 分支管理
4.6.1 查看分支
- 查看本地分支:
git branch - 查看远程分支:
git branch -r - 查看本地和远程分支:
git branch -a
4.6.2 删除分支
- 删除本地分支:
git branch -D 分支名称 - 删除远程分支:
git push origin -d 远程分支名称
4.6.3 创建分支
- 基于当前分支创建新分支,并切换到新分支:
git checkout -b 新分支名称 - 切换分支:
git checkout 分支名称
4.6.4 合并分支
- 将远程分支与本地当前分支合并:
git merge origin/远程分支名称 - 本地其他分支与本地当前分支合并:
git merge 其他分支名称
4.7 git fetch
4.8 git status
4.9 git push
4.10 git pull
4.11 文件重命名
git mv 旧文件名 新文件名git commit -m '重命名了什么文件'
4.12 查看变更历史
git log --onelinegit log --graphgit log -1git log -n4 --onelinegit log --graph --pretty=oneline --abbrev-commitgit log --oneline -n4 分支名称- .......
4.13 查看 commit 记录的类型
git cat-file -t 提交记录哈希值
4.14 查看 commit 记录的内容
git cat-file -p 提交记录哈希值
4.15 修改 commit 记录
- 修改最新 commit 的 message:
git commit --amend git rebase -i commit记录号- 修改老旧 commit 的 message
- 合并多个连续的 commit
- 合并间隔的几个 commit
4.16 比较差异
- 比较 HEAD 与历史 HEAD:
git diff HEAD HEAD^1 - 比较暂存区和 HEAD:
git diff --cached - 比较工作区域暂存区:
git diff - 比较工作区和 HEAD:
git diff HEAD - 比较两个分支:
git diff 分支名 1 分支名 2- 比较具体文件 如:
git diff master develop index.html
- 比较具体文件 如:
- 比较两个 commit 历史:
git diff 哈希值 1 哈希值 2- 比较具体文件 如:
git diff 哈希值 1 哈希值 2 index.html
- 比较具体文件 如:
4.17 文件恢复
- 暂存区恢复成与 HEAD 一样:
git reset HEAD 或 git restore --staged - 工作区恢复成与暂存区一样:
git restore - 取消暂存部分文件:
git restore --staged 文件名 - 取消某些已提交的记录(恢复到某一个具体 commit)--慎用:
git reset --hard commit 版本号
4.18 删除文件
git rm 文件名git commit -m '删除了什么文件'
4.19 加塞临时任务的处理
git stashgit stash list- 在当前分支或切换分支开始临时任务,做完后切换回当前分支
git stash pop- 重新开始之前的任务