Git 命令简记

Git 命令简记
chify虽然现在各种 Git 可视化工具都很好用,但是常用命令能熟练使用还是比较好的。好记性不如烂笔头,这里记下 git 命令,方便日后快速翻阅。
Git 工作流程
graph LR
A[工作区
Working Directory] -->|git add| B[暂存区
Staging Area]
B -->|git commit| C[本地仓库
Local Repository]
C -->|git push| D[远程仓库
Remote Repository]
D -->|git pull| C
C -->|git checkout| A
初始配置
1. 初始化目录
进入相应目录,使用命令 git init,会在目录下生成 .git 目录,里面都是 git 的记录信息,切不可乱删除。
2. 设置库级别签名
仅在当前本地库有效:
1 | git config user.name ChiFuYong |
详细信息保存于当前库目录的 .git/config 中,使用 cat conf 即可查看。
3. 设置全局级签名
对登录系统的当前用户全局有效:
1 | git config --global user.name ChiFuYong |
详细信息保存于 ~/.gitconfig 中,使用 cat ~/.gitconfig 可看到如下信息。
注:库级别优先于全局级别,二者都有时采用库级别。签名用于区分不同开发人员身份,与远程 Git 服务器上的账号密码无关。
4. .gitconfig 中配置忽略文件(java.gitignore)
编辑 vim ~/.gitconfig,所有 git 库都会忽略相应文件,添加内容如下:
1 | [core] |
java.gitignore 内容如下(详细可参考 Github 项目):
1 | # Compiled class file |
常用命令速查表
| 命令 | 说明 | 示例 |
|---|---|---|
git init | 初始化仓库 | git init |
git status | 查看工作区、暂存区状态 | git status |
git add [file] | 添加文件到暂存区 | git add . |
git commit -m "msg" | 提交暂存区到本地库 | git commit -m "feat: add login" |
git log | 查看提交历史 | git log --oneline |
git diff | 比较工作区与暂存区 | git diff file.txt |
git reset | 版本回退/前进 | git reset --hard HEAD^ |
git branch | 分支操作 | git branch dev |
git checkout | 切换分支 | git checkout dev |
git merge | 合并分支 | git merge dev |
git pull | 拉取远程代码 | git pull origin master |
git push | 推送代码到远程 | git push origin master |
基本操作命令
版本管理
git init:初始化仓库git status:查看工作区、暂存区状态git add [file name]:将工作区的文件(新建或修改)添加到暂存区,git add .表示添加所有修改过的文件到暂存区git commit -m "commit message" [file name]:将暂存区的文件提交到本地库,-m表示此次提交的修改概述
查看历史
git log:查看 commit 的详细历史记录,其他常用命令参数如下:
1 | git log --pretty=oneline |
三者区别如下图:
比较差异
git diff [file name]:比较工作区中文件和暂存区差别git diff [版本号] [file name]:工作区文件和本地库历史版本比较
版本回退
git reset:版本回退/前进,有三种方式,参数作用如下:
1 | --soft # 仅仅在本地库移动 HEAD 指针 |
git reset --hard [局部版本索引] 可直接恢复到相应版本,git reset --hard HEAD^ 表示回退到上个版本(多少个 ^ 代表回退多少个版本),git reset --hard HEAD~n 表示后退 n 步。
分支管理命令
| 命令 | 说明 |
|---|---|
git branch -v | 查看全部分支 |
git branch [branch name] | 创建分支 |
git branch -d [branch name] | 删除分支 |
git checkout [branch name] | 切换分支 |
git merge [branch name] | 把指定分支合并到当前分支 |
git rebase [branch name] | 变基合并,保持线性历史 |
gitGraph
commit id: "init"
branch develop
checkout develop
commit id: "feat-1"
checkout main
commit id: "hotfix"
checkout develop
commit id: "feat-2"
checkout main
merge develop
git rebase 与 merge 的区别:rebase 会把 commit 内容暂存起来然后再合并,合并后不会导致分叉,保持线性历史。
暂存操作命令
| 命令 | 说明 |
|---|---|
git stash save "info" | 暂存当前工作区和暂存区内容 |
git stash list | 显示暂存过的所有列表 |
git stash pop | 恢复最新暂存数据并删除记录 |
git stash apply | 恢复暂存数据但保留记录 |
git stash drop stash@{X} | 删除指定暂存记录 |
git stash clear | 删除所有暂存记录 |
开发时在需要排查其他分支的 bug 问题时常用。
远程相关命令
| 命令 | 说明 |
|---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add [origin] [url] | 添加远程服务器关联地址 |
git remote remove [origin] | 删除远程关联地址 |
git clone [url] | 克隆远程仓库代码 |
git fetch | 更新本地的远程跟踪分支 |
git pull | 相当于 fetch + merge |
git push [alias] [branch] | 推送代码到远程服务器 |
sequenceDiagram
participant L as 本地仓库
participant R as 远程仓库
L->>R: git push
R-->>L: 推送成功
R->>L: git fetch
L->>L: git merge
R->>L: git pull (= fetch + merge)
git clone:克隆远程服务器仓库代码(默认拉取 master 分支),加上 -b [branch name] 参数可以拉取指定分支。
git pull:相当于 fetch + merge,先更新远程跟踪分支(例如 origin/master),再合并到本地分支,有冲突需要解决冲突。
git push:推送代码到远程服务器,有冲突需要 pull 解决代码冲突后再 push 到远程服务器。







