MENU

1994世界杯_1954年世界杯 - hengshuifu.com

Git 可以做的所有操作(完整分类)

Git 是一个功能极其强大的分布式版本控制系统,支持超过 150 种命令和无数种工作流组合。下面我将按照 操作目标 和 功能领域 为你详细列举 Git 能够完成的所有操作类别,每个类别下说明具体能做什么,并附上典型命令示例。

一、仓库生命周期管理

1. 创建仓库

在当前目录初始化一个新仓库:git init

在指定目录初始化:git init

初始化一个裸仓库(用作中央服务器):git init --bare

从远程克隆已有仓库:git clone

浅克隆(只拉取最近几次提交):git clone --depth 1

克隆指定分支:git clone -b

2. 仓库配置

设置用户名/邮箱(全局/仓库级):git config [--global] user.name/email

设置别名:git config --global alias.

设置默认编辑器:git config core.editor

查看所有配置:git config --list

设置 CRLF 换行符转换:git config core.autocrlf true

启用彩色输出:git config color.ui auto

设置差异工具:git config diff.tool

3. 仓库信息查看

查看仓库状态:git status(支持简洁模式 -s)

查看仓库摘要信息:git summary

查看 Git 版本:git --version

二、核心快照操作(日常提交)

1. 添加文件到暂存区

添加单个文件:git add

添加所有变更(包括新增、修改、删除):git add -A 或 git add .

只添加已跟踪文件的修改:git add -u

交互式添加(选择部分修改):git add -i

添加所有 *.js 文件:git add *.js

添加但忽略某些模式:git add --ignore-removal .

2. 提交到本地仓库

普通提交:git commit -m ""

跳过暂存区直接提交已跟踪文件:git commit -am ""

修改最近一次提交(信息或内容):git commit --amend

修改提交信息但不改内容:git commit --amend -m ""

向最近一次提交追加文件:git add + git commit --amend --no-edit

空提交(用于触发 CI):git commit --allow-empty -m "trigger CI"

3. 从版本库删除文件

删除文件并自动暂存删除操作:git rm

从暂存区删除但保留工作区文件(停止跟踪):git rm --cached

递归删除目录:git rm -r

强制删除(即使有本地修改):git rm -f

4. 移动/重命名文件

重命名文件并自动暂存:git mv

移动文件到子目录:git mv

/

三、分支管理

1. 分支创建与切换

查看本地分支:git branch

查看所有分支(含远程):git branch -a

查看远程分支:git branch -r

创建新分支:git branch

切换到已有分支:git checkout 或 git switch

创建并切换到新分支:git checkout -b 或 git switch -c

切换到上一个分支:git checkout - 或 git switch -

2. 分支合并

合并指定分支到当前分支:git merge

禁用快进合并(保留分支线):git merge --no-ff

压缩合并(将多个提交合并为一个):git merge --squash

合并但不要自动提交:git merge --no-commit

放弃正在进行的合并:git merge --abort

使用 --ff-only 只允许快进合并:git merge --ff-only

3. 分支删除

删除已合并的分支:git branch -d

强制删除未合并的分支:git branch -D

删除远程分支:git push origin --delete 或 git branch -dr

4. 分支重命名

重命名当前分支:git branch -m

重命名任意分支:git branch -m

5. 分支比较

查看两个分支的差异:git diff ..

查看两个分支的共同祖先:git merge-base

列出在 A 分支但不在 B 分支的提交:git log A ^B

6. 分支与远程同步

拉取远程分支并创建本地跟踪分支:git checkout -b origin/

设置上游分支:git branch -u origin/

查看跟踪关系:git branch -vv

四、远程仓库协作

1. 远程仓库管理

添加远程仓库:git remote add

查看远程仓库列表:git remote

查看远程仓库详细信息:git remote show

修改远程仓库地址:git remote set-url

删除远程仓库:git remote remove

重命名远程仓库:git remote rename

添加多个远程源(如同时 push 到 GitHub 和 GitLab):git remote set-url --add

2. 获取远程更新

获取远程所有分支更新(不合并):git fetch

获取特定分支:git fetch

获取并删除远程已不存在的引用:git fetch --prune

获取所有远程:git fetch --all

获取标签:git fetch --tags

3. 拉取并合并

拉取并合并远程分支:git pull

使用 rebase 代替 merge:git pull --rebase

拉取但不要自动提交:git pull --no-commit

拉取所有分支:git pull --all

4. 推送到远程

推送到同名远程分支:git push

首次推送并设置上游:git push -u

推送所有本地分支:git push --all

推送标签:git push

推送所有标签:git push --tags

删除远程分支:git push --delete

强制推送(覆盖远程历史):git push --force

更安全的强制推送:git push --force-with-lease

推送并设置上游:git push -u origin HEAD

5. 远程分支同步

修剪远程跟踪分支(删除本地已不存在的远程分支引用):git remote prune

同步所有远程分支状态:git remote update

五、撤销与恢复操作

1. 工作区撤销(未暂存)

丢弃单个文件的修改:git restore 或 git checkout --

丢弃所有工作区修改:git restore .

删除未跟踪的文件/目录:git clean -fd

预览将被删除的未跟踪文件:git clean -n

删除被 .gitignore 忽略的文件:git clean -fx

2. 暂存区撤销(已 add 但未 commit)

将文件从暂存区移回工作区:git restore --staged 或 git reset HEAD

撤销所有暂存区的修改:git reset

取消跟踪文件但保留内容:git rm --cached

3. 提交撤销(已 commit)

软撤销 (保留修改在暂存区):git reset --soft HEAD~1

混合撤销 (保留修改在工作区):git reset --mixed HEAD~1 或 git reset HEAD~1

硬撤销 (彻底删除提交和修改):git reset --hard HEAD~1

撤销到任意提交:git reset --hard

安全撤销(生成反向提交):git revert

撤销最近一次提交并生成 revert 提交:git revert HEAD

撤销一个区间内的提交:git revert ..

修改最近一次提交:git commit --amend

4. Stash 暂存(临时保存)

暂存当前所有修改:git stash

暂存并添加说明:git stash push -m "message"

暂存未跟踪的文件:git stash -u

查看 stash 列表:git stash list

应用最近的 stash(保留 stash):git stash apply

应用并删除 stash:git stash pop

应用指定的 stash:git stash apply stash@{2}

删除指定的 stash:git stash drop stash@{1}

删除所有 stash:git stash clear

从 stash 创建新分支:git stash branch

5. 引用日志恢复(救急)

查看所有 HEAD 移动记录:git reflog

查看特定分支的 reflog:git reflog show

通过 reflog 找回丢失的提交:git checkout 或 git reset --hard

清理 reflog 中过期的记录:git reflog expire --expire=now --all

六、查看与比较

1. 查看提交历史

完整历史:git log

一行简洁显示:git log --oneline

图形化显示:git log --graph --all --oneline

查看最近 n 次提交:git log -n 5

按作者过滤:git log --author="name"

按提交信息过滤:git log --grep="fix"

按时间过滤:git log --since="2 weeks ago" 或 --until

查看某个文件的修改历史:git log --follow

查看每次提交的差异:git log -p

查看简洁统计:git log --stat

查看某个分支独有的提交:git log ^

2. 查看差异

工作区 vs 暂存区:git diff

暂存区 vs 版本库:git diff --staged 或 git diff --cached

工作区 vs 最新提交:git diff HEAD

比较两个提交:git diff

比较两个分支:git diff ..

查看某个文件的差异:git diff

仅显示文件名:git diff --name-only

忽略空白差异:git diff -w

查看两个分支的共同祖先之后的差异:git diff ...(三点语法)

3. 查看提交详情

查看最新提交详情:git show

查看指定提交详情:git show

查看提交中某个文件的内容:git show :

查看提交的简洁统计:git show --stat

4. 查看文件归属

查看文件每行最后修改信息:git blame

查看指定行范围:git blame -L 10,20

忽略空白改动:git blame -w

显示作者邮箱:git blame -e

5. 搜索

在版本库中搜索文本:git grep ""

搜索并显示行号:git grep -n ""

搜索并显示文件名和匹配数:git grep -c ""

在指定分支搜索:git grep ""

搜索提交历史中的字符串:git log -S ""(pickaxe)

6. 统计信息

查看提交统计(按作者):git shortlog -sn

查看代码行数统计:git ls-files | xargs wc -l

查看仓库总提交数:git rev-list --count HEAD

查看贡献者列表:git log --format='%aN' | sort -u

七、高级操作

1. 变基(Rebase)

将当前分支变基到目标分支:git rebase

交互式变基:git rebase -i HEAD~n

继续变基(解决冲突后):git rebase --continue

跳过当前提交:git rebase --skip

放弃变基:git rebase --abort

变基时自动整理:git rebase --autosquash

2. 挑选提交(Cherry-pick)

应用一个提交到当前分支:git cherry-pick

应用多个提交:git cherry-pick

应用区间提交:git cherry-pick ..

不自动提交:git cherry-pick -n

继续/放弃:git cherry-pick --continue/--abort

3. 二分查找定位 bug

开始二分查找:git bisect start

标记当前版本为坏:git bisect bad

标记已知好版本:git bisect good

标记测试结果后 Git 自动切换:git bisect good/bad

结束二分查找:git bisect reset

自动化二分查找:git bisect run

Copyright © 2022 1994世界杯_1954年世界杯 - hengshuifu.com All Rights Reserved.