初始化仓库

基础

在当前目录创建一个新的Git仓库

git init

克隆仓库

基础

从远程仓库克隆项目到本地

git clone <url>
<url>远程仓库地址

查看状态

基础

查看工作区和暂存区的状态

git status

添加文件到暂存区

基础

将文件添加到暂存区,准备提交

git add <file>
<file>文件路径,使用 . 添加所有文件

添加所有文件

基础

将所有修改的文件添加到暂存区

git add .

提交更改

基础

将暂存区的更改提交到本地仓库

git commit -m "<message>"
<message>提交信息

添加并提交

基础

添加已跟踪文件并提交(跳过git add)

git commit -am "<message>"
<message>提交信息

查看分支

分支

列出所有本地分支

git branch

查看所有分支

分支

列出所有本地和远程分支

git branch -a

创建分支

分支

创建一个新分支

git branch <branch-name>
<branch-name>新分支名称

切换分支

分支

切换到指定分支

git checkout <branch-name>
<branch-name>目标分支名称

创建并切换分支

分支

创建新分支并立即切换到该分支

git checkout -b <branch-name>
<branch-name>新分支名称

合并分支

分支

将指定分支合并到当前分支

git merge <branch-name>
<branch-name>要合并的分支名称

删除分支

分支

删除已合并的分支

git branch -d <branch-name>
<branch-name>要删除的分支名称

强制删除分支

分支

强制删除分支(即使未合并)

git branch -D <branch-name>
<branch-name>要删除的分支名称

查看远程仓库

远程

查看所有远程仓库的详细信息

git remote -v

添加远程仓库

远程

添加一个新的远程仓库

git remote add <name> <url>
<name>远程仓库名称(通常为origin)
<url>远程仓库地址

拉取远程更新

远程

从远程仓库拉取并合并更新

git pull <remote> <branch>
<remote>远程仓库名称
<branch>分支名称

推送到远程

远程

将本地提交推送到远程仓库

git push <remote> <branch>
<remote>远程仓库名称
<branch>分支名称

推送新分支到远程

远程

推送新分支并设置上游跟踪

git push -u <remote> <branch>
<remote>远程仓库名称
<branch>分支名称

删除远程分支

远程

删除远程仓库的分支

git push <remote> --delete <branch>
<remote>远程仓库名称
<branch>要删除的分支名称

查看提交历史

历史

查看完整的提交历史

git log

简洁历史

历史

以简洁的单行格式显示提交历史

git log --oneline

图形化历史

历史

以图形方式显示所有分支的提交历史

git log --oneline --graph --all

查看文件历史

历史

查看指定文件的修改历史

git log -p <file>
<file>文件路径

查看差异

历史

查看工作区与暂存区的差异

git diff

查看暂存差异

历史

查看暂存区与最新提交的差异

git diff --staged

查看提交间差异

历史

查看两个提交之间的差异

git diff <commit1> <commit2>
<commit1>起始提交
<commit2>结束提交

暂存当前更改

暂存

将当前工作区的更改暂存起来

git stash

暂存并添加备注

暂存

暂存更改并添加描述信息

git stash save "<message>"
<message>暂存描述

查看暂存列表

暂存

查看所有暂存的更改

git stash list

应用暂存

暂存

应用最近的暂存并从列表中删除

git stash pop

应用指定暂存

暂存

应用指定的暂存(保留在列表中)

git stash apply stash@{<n>}
<n>暂存序号

删除暂存

暂存

删除指定的暂存

git stash drop stash@{<n>}
<n>暂存序号

清空所有暂存

暂存

删除所有暂存的更改

git stash clear

查看标签

标签

列出所有标签

git tag

创建轻量标签

标签

创建一个轻量标签

git tag <tag-name>
<tag-name>标签名称

创建附注标签

标签

创建一个带注释的标签

git tag -a <tag-name> -m "<message>"
<tag-name>标签名称
<message>标签注释

推送标签到远程

标签

将标签推送到远程仓库

git push <remote> <tag-name>
<remote>远程仓库名称
<tag-name>标签名称

推送所有标签

标签

推送所有标签到远程仓库

git push <remote> --tags
<remote>远程仓库名称

删除标签

标签

删除本地标签

git tag -d <tag-name>
<tag-name>标签名称

撤销工作区修改

撤销

撤销工作区文件的修改

git checkout -- <file>
<file>文件路径

撤销暂存

撤销

将文件从暂存区移出

git reset HEAD <file>
<file>文件路径

软重置

撤销

重置到指定提交,保留更改在暂存区

git reset --soft <commit>
<commit>提交哈希或引用

混合重置

撤销

重置到指定提交,保留更改在工作区

git reset --mixed <commit>
<commit>提交哈希或引用

硬重置

撤销

重置到指定提交,丢弃所有更改

git reset --hard <commit>
<commit>提交哈希或引用

撤销提交

撤销

创建一个新提交来撤销指定提交

git revert <commit>
<commit>要撤销的提交哈希

变基

高级

将当前分支变基到指定分支

git rebase <branch>
<branch>目标分支名称

交互式变基

高级

交互式变基,可编辑、合并提交

git rebase -i <commit>
<commit>起始提交

挑选提交

高级

将指定提交应用到当前分支

git cherry-pick <commit>
<commit>提交哈希

清理未跟踪文件

高级

删除未跟踪的文件和目录

git clean -fd

二分查找

高级

开始二分查找定位问题提交

git bisect start

查看引用日志

高级

查看HEAD的移动历史

git reflog