# Git 备忘清单
当你忘记命令或不想在 CLI 中使用帮助时,你可以在这里快速参考常用的命令。
如果要在本地使用 Git,但不想使用命令行,你可以下载并安装 GitHub Desktop 客户端 (opens new window)。
# 配置工具
对你的 commit 操作设置关联的用户名:
git config --global user.name "[name]"
对你的 commit 操作设置关联的邮箱地址:
git config --global user.email "[email address]"
启用有帮助的彩色命令行输出:
git config --global color.ui auto
# 分支管理
分支是使用 Git 工作的一个重要部分,你做的任何提交都会发生在当前 “checked out” 到的分支上。使用 git status
查看那是哪个分支。
创建一个新分支:
git branch [branch-name]
切换到指定分支并更新工作目录:
git checkout [branch-name]
将指定分支的历史合并到当前分支:
git merge [branch]
删除指定分支:
git branch -d [branch-name]
# 进行更改
列出当前分支的版本历史:
git log
列出文件的版本历史,包括重命名:
git log --follow [file]
展示两个分支之间的内容差异:
git diff [first-branch]...[second-branch]
输出指定commit的元数据和内容变化:
git show [commit]
将文件进行快照处理用于版本控制:
git add [file]
将文件快照永久地记录在版本历史中:
git commit -m "[descriptive message]"
# 重做提交
撤销所有 [commit]
后的的提交,在本地保存更改:
git reset [commit]
放弃所有历史,改回指定提交:
git reset --hard [commit]
更改历史可能带来不良后果。如果你需要更改已有的提交,请谨慎操作。
# 创建仓库
在本地创建一个新仓库:
git init
在使用过 git init
命令后,使用以下命令将本地仓库与一个 GitHub/GitLab 上的空仓库连接起来:
git remote add origin [url]
克隆(clone)一个已存在于 GitHub/GitLab 上的仓库,包括所有的文件、分支和提交:
git clone [url]
# 忽略文件
有时一些文件最好不要用 Git 跟踪,这通常在名为 .gitignore
的特殊文件中完成。你可以在 github.com/github/gitignore (opens new window) 找到有用的 .gitignore
文件模板。
.DS_Store
# 依赖目录
node_modules
# 构建文件
.vuepress/dist
/dist
# 包管理器日志文件
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# 本地环境变量文件
.env.local
.env.*.local
# 编辑器目录和文件
.idea
.vscode
.history
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# 同步更改
下载远端跟踪分支的所有历史:
git fetch
将远端跟踪分支合并到当前本地分支:
git merge
将所有本地分支提交上传到 GitHub/GitLab:
git push
使用来自 GitHub/GitLab 的对应远端分支的所有新提交更新你当前的本地工作分支:
git pull
使用
git pull
相当于git fetch
和git merge
的组合。
# 术语定义
- git: 一个开源的分布式版本控制系统
- GitHub/GitLab: 一个托管和协作管理 Git 仓库的平台
- commit 提交: 一个 Git 对象,是你整个仓库的快照的哈希值
- branch 分支: 一个轻型可移动的 commit 指针
- clone 克隆: 一个仓库的本地版本,包含所有提交和分支
- remote 远端: 一个 GitHub/GitLab 上的公共仓库,所有小组成员通过它来交换修改
- fork 复刻: 一个属于另一用户的 GitHub/GitLab 上的仓库的副本
- pull request 拉取请求: 一处用于比较和讨论分支上引入的差异,且具有评审、评论、集成测试等功能的地方
- HEAD: 代表你当前的工作目录。使用
git checkout
可移动HEAD
指针到不同的分支、标记或提交