Git 常用命令与工作流笔记
1
git init
初始化仓库
1
2
git config --global user.name "..."
git config --global user.email ...
配置 git 的名称和邮箱
1
git add <file>
暂存,一键全部暂存时用 .(不推荐)
1
git commit -m "message"
提交,message 可以规范格式如
[类型] 简短描述
[Feature]:新功能[Fix]:修补 Bug[Docs]:仅修改文档/注释[Refactor]:代码重构(无新功能)[Art]:美术资源更新
1
git commit --amend
可以用于修改上一次的 commit
1
git commit --amend -m ""
写错 message 时可以修改
1
2
git add <file>
git commit --amend
1
git status
查看哪些文件被修改,可以看到工作区修改,也可以看到未提交的暂存区
1
2
3
工作区&暂存区 git diff <file>
工作区&版本库 git diff HEAD <file>
暂存区&版本库 git diff --cached <file>
查看修改的位置
1
git log (--pretty=oneline)
查看最近三次提交, oneline 简化输出信息
1
git reflog
可以记录每一次命令及其哈希值
1
git reset (--hard) (...)
回退版本
--hard:回退到上个版本的已提交状态--soft:回退到上个版本的未提交状态--mixed:回退到上个版本的未添加状态- 缺省 +
<file>:把文件的暂存状态去除
... 可以为哈希值,也可以为 HEAD 的相对地址
HEAD^ 为上一个版本
HEAD~n 为前 n 个版本
1
git checkout <file>
取消工作区的修改,不论之前是暂存区还是版本库
如果要撤销已暂存的更改可以使用
1
2
git checkout <file>
git reset <file>
1
2
git checkout -b <branch>
git switch -c <branch>
创建并切换分支
1
2
git checkout <branch>
git switch <branch>
切换分支
1
git branch
查看所有分支
1
git branch -d(-D) <branch>
删除分支,-D 强制删除,用于删除还没合并的分支
1
git merge (--no-ff -m "message") <branch>
把 <branch> 分支合并到当前分支,若发生冲突就修改后 add 再 commit
不使用 fastforward 可以使工作流更清晰(推荐)
merge 后可以生成新的 commit,-m 输入信息
1
git log --graph --pretty=oneline --abbrev-commit
可以可视化分支的提交与合并
1
git stash
当出现发现前面出现 bug 但当前不方便提交时,可以暂存当前记录
1
git stash list
可以查看之前暂存的记录
1
git stash apply stash@{number}
可以恢复该记录
1
git stash drop stash@{number}
可以删除该暂存记录
1
git stash pop stash@{number}
上面二者合一,即恢复与删除
1
git cherry-pick <hash>
可以把某个哈希值做的小修改拿来
1
git rebase <branch>
使合成到 <branch> 时保持线形
1
git remote add origin <ssh>
本地关联远程 repo
1
git clone <ssh>
克隆远程仓库
1
git fetch
抓取远程分支决定是否合并,可以后面接 rebase
1
git pull (--rebase)
抓取远程分支,产生 merge 记录
有 rebase 会把提交“放置”在远程拉取的提交之后
解决冲突后需要 git rebase --continue
1
git push -u origin <branch>
本地库的内容推送到远程,建立新分支,后面只需
1
git push origin <branch>
1
git remote -v
查看远程库信息
1
git remote rm <branch>
可以删除绑定的远程库的分支
[!TIP]
冲突暂停时:
- –continue:继续
- –abort:放弃整个操作
- –skip:跳过有问题的,继续工作
ssh
先在Git Bash / VS Code 终端页面输入指令设置密钥
1
ssh-keygen -t rsa -b 4096 -C "~~"
绑定到 GitHub 账户 - Settings - ssh
输入
ssh -T git@github.com查看是否连接上若连接上即已完成
选择一个合适的文件夹存放远程仓库
远程仓库克隆(clone)
1
git clone git@gitee.com:username/repositoryname.git [--depth 10] # 巨型仓库可加深度参数

clone 成功后可以选择需要的分支
设定个人的 email & name
1
2
git config --global user.email "~~"
git config --global user.name "~~"
在某个分支上创造新的分支(checkout)并命名
1
git checkout -b ~~
修改源代码可看到更改

点击暂存
输入消息名称后提交(commit)
发送到云端(push)

回退上次提交代码
1
git reset --soft HEAD^
强制提交
1
git push -f
查看当前仓库
1
git remote -v
添加远程仓库并查看目前所有可用库
1
2
git remote add branchname git@gitee.com:username/repositoryname.git # 建立名为 branchname 的远程别名
git remote -v
提取添加的库
1
git fetch branchname
git merge 和 git rebase 的区别
| 场景 | 推荐命令 |
|---|---|
| 自己开发的本地分支想和主分支同步 | git rebase main |
| 团队多人协作的公共分支 | git merge |
| 准备提交 PR 前想让历史干净 | git rebase |
| 保留合并痕迹、完整历史 | git merge |
| 项目 | cherry-pick |
squash |
|---|---|---|
| 作用 | 挑出某个提交到当前分支 | 压缩多个提交为一个 |
| 影响范围 | 跨分支复制提交 | 当前分支的提交 |
| 是否创建新 commit | ✅ 是 | ✅ 是(旧的被合并) |
| 常见用途 | 热修复、移植单个功能 | 整理历史、减少提交数 |
| 是否保留历史 | 部分保留(复制) | 不保留(被合并) |
评论