这份速查表总结了常用的 Git 命令行指令,以便快速参考。
创建一个新的本地仓库
$ git init [项目名称]
克隆一个仓库
$ git clone git_url
将仓库克隆到指定目录
$ git clone git_url my_directory
显示工作目录中已修改的文件,这些文件已暂存,准备进行下一次提交
$ git status
暂存文件,准备提交
$ git add [file]
暂存所有已更改的文件,准备提交
$ git add .
将所有暂存的文件提交到版本历史
$ git commit -m "提交信息"
将所有已跟踪的文件提交到版本历史
$ git commit -am "提交信息"
丢弃工作目录中未暂存的更改
$ git restore [file]
取消暂存一个已暂存的文件
$ git restore --staged [file]
取消暂存文件,保留文件更改
$ git reset [file]
将所有内容还原到最后一次提交
$ git reset --hard
显示已更改但未暂存的内容的差异
$ git diff
显示已暂存但尚未提交的内容的差异
$ git diff --staged
应用当前分支中领先于指定分支的任何提交
$ git rebase [branch]
设置将附加到您的提交和标签的名称
$ git config --global user.name "名称"
设置将附加到您的提交和标签的电子邮件地址
$ git config --global user.email "邮箱"
启用 Git 输出的一些颜色化
$ git config --global color.ui auto
在文本编辑器中编辑全局配置文件
$ git config --global --edit
列出所有本地分支
$ git branch
列出所有分支,包括本地和远程
$ git branch -av
切换到 my_branch 分支,并更新工作目录
$ git checkout my_branch
创建一个名为 new_branch 的新分支
$ git checkout -b new_branch
删除名为 my_branch 的分支
$ git branch -d my_branch
将 branchA 合并到 branchB
$ git checkout branchB
$ git merge branchA
标记当前提交
$ git tag my_tag
显示当前活动分支的提交历史
$ git log
显示 branchA 上但不在 branchB 上的提交
$ git log branchB..branchA
显示更改了文件的提交,即使文件被重命名
$ git log --follow [file]
显示 branchA 中存在但 branchB 中不存在的内容的差异
$ git diff branchB...branchA
以人类可读的格式显示 Git 中的任何对象
$ git show [SHA]
从该 Git 远程仓库获取所有分支
$ git fetch [alias]
将远程分支合并到当前分支以使其保持最新
$ git merge [alias]/[branch]
# 不快进合并
$ git merge --no-ff [alias]/[branch]
# 仅快进合并
$ git merge --ff-only [alias]/[branch]
将本地分支的提交传输到远程仓库分支
$ git push [alias] [branch]
从跟踪的远程分支获取并合并任何提交
$ git pull
仅将另一个分支的特定提交合并到当前分支
$ git cherry-pick [commit_id]
添加一个 git URL 作为别名
$ git remote add [alias] [url]
显示您已设置的远程仓库的名称
$ git remote
显示远程仓库的名称和 URL
$ git remote -v
移除一个远程仓库
$ git remote rm [remote repo name]
更改 git 仓库的 URL
$ git remote set-url origin [git_url]
保存已修改和已暂存的更改
$ git stash
列出已储藏文件更改的堆栈顺序
$ git stash list
从储藏堆栈顶部恢复工作
$ git stash pop
丢弃储藏堆栈顶部的更改
$ git stash drop
从项目中删除文件并将删除操作暂存以供提交
$ git rm [file]
更改现有文件路径并将移动操作暂存
$ git mv [existing-path] [new-path]
显示所有提交日志,并指示任何已移动的路径
$ git log --stat -M
/logs/*
# "!" 表示不要忽略
!logs/.gitkeep
/# 忽略 Mac 系统文件
.DS_store
# 忽略 node_modules 文件夹
node_modules
# 忽略 SASS 配置文件
.sass-cache
.gitignore
文件指定了 Git 应该忽略的、有意不跟踪的文件。
在您的仓库中创建一个新的子模块:
$ git submodule add <repository_url> <path>
克隆一个仓库并初始化其子模块:
$ git clone --recursive <repository_url>
将仓库中的所有子模块更新到其各自自分支的最新提交:
$ git submodule update
从子模块的远程仓库拉取最新更改并在主仓库中更新它们:
$ git submodule update --remote
从您的仓库中移除一个子模块:
$ git submodule deinit <path>
$ git rm <path>
$ git commit -m "移除了子模块"
遴选允许您将一个分支的特定提交应用到另一个分支。
$ git cherry-pick <commit_hash>
显示 reflog,展示 HEAD 和分支移动的历史记录:
$ git reflog
使用 reflog 找到丢失的提交或分支的哈希值,然后检出到该哈希值以恢复它:
$ git checkout <commit_or_branch_hash>