Git⛏️
🕵️git命令速查表:

🎯学习目录:

💬git 简介:
- Git 是世界上最牛逼🐮的分布式版本控制系统
版本控制 是一个用来📝记录一个或多个文件📂内容变化,以便将来查阅🔍特定版本的修订情况的系统

- 工作区(Working Directory):程序员进行🛠️开发、改动、可视的目录📄或文件夹📁
- 平常我们开发就是拷贝远程仓库📭中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作
- 暂存区(Stage):💲 git add 添加文件的相关信息📃(文件名、大小、timestamp...),以 id 👉每个文件实体
- 💲 git status 🔎查看暂存区的状态,暂存区🚏标记了你当前工作区中,哪些内容是被git管理的
- 版本库(Repository):保存了📍对象被提交过的各个版本🏷️,比起工作区和暂存区的内容更旧一些
- 💲 git commit 🔀 index目录树📜到本地仓库,👉通过💲 git push 同步本地仓库与远程仓库
本章小结💭
- 任何对象都是在工作区👨💻中诞生和被修改;
- 任何修改都是从进入index区📥才开始被版本控制;
- 只有把修改提交到本地仓库📦,该修改才能在仓库中留下痕迹;
- 与协作者分享本地的修改,可以把它们push到📤远程仓库来共享
区域之间⛓️

操作命令💲
👉HEAD

HEAD : 始终指向👉当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变
➕ADD

ADD : 实现将工作区📁修改的内容提交到暂存区📥,交由git管理
#添加当前目录的所有文件到暂存区
> - 💲 git add .
#添加指定目录到暂存区,包括子目录
>- 💲 git add [dir]
#添加指定文件到暂存区
> - 💲 git add [file1]
💱COMMIT

COMMIT : 实现将暂存区📦的内容提交到本地仓库📂,并使得当前分支的HEAD👉向后移动一个提交点
#提交暂存区到本地仓库,💬message 代表说明信息📄
> - 💲 git commit -m [message]
#提交暂存区的指定文件到本地仓库🏳️
>- 💲 git commit [file1] -m [message]
#使用一次新的commit,🌌替代上一次提交
> - 💲 git commit --amend -m [message]
branch🗜️

#列出所有本地分支🕸️
> - 💲 git branch
#列出所有远程分支🔂
>- 💲 git branch -r
#❄️所有本地分支和远程分支
> - 💲 git commit --amend -m [message]
#⛏️新建一个分支,但依然停留在当前分支
> - 💲 git branch [branch-name]
#新建一个分支,并切换到🔀该分支
> - 💲 git checkout -b [branch-name]
#新建一个分支,与指定的远程分支建立⛓️追踪关系
> - 💲 git branch --track [branch][remote-branch]
#🔀切换到指定分支,并♻️更新工作区
> - 💲 git checkout [branch-name]
#✖️删除分支
> - 💲 git branch -d [branch-name]
#❎删除远程分支
> - 💲 git push origin --delete [branch-name]
merge😍

merge : 把不同的分支合并起来
#merge之前先拉一下远程仓库最新代码
> - 💲 git fetch [remote]
#合并指定分支到当前分支
>- 💲 git merge [branch]
Git Cheat Sheet
初始化仓库
- 初始化仓库
💲 git init
- 初始化裸仓库
💲 git init --bare
- 克隆仓库
💲 git clone <git-repo>
配置
- 编辑配置文件
💲 git config [--global] -e
- 列出配置信息
💲 git config -l
- 获取相应的配置
💲 git config --get core.editor
- 配置用户邮箱
💲 git config --global user.email <mail>
- 配置用户名
💲 git config --global user.name <name>
- 输出彩色信息
💲 git config color.ui true
- 设置文件名大小写敏感
💲 git config core.ignoreCase false
- 设置推送策略为 simple
💲 git config push.default simple
- 设置 git 的编辑器是 vim
💲 git config --global core.editor vim
- 设置命令别名
💲 git config --global alias.co checkout
忽略文件
- 添加本项目的忽略文件
💲 vim .gitignore
- 添加本项目的忽略文件并不把此文件纳入版本管理
💲 vim .git/info/exclude
- 设置全局忽略文件
💲 git config --global core.excludesfile ~/.gitignore
- 对已加入版本管理的文件不做更改检查
💲 git update-index --assume-unchanged <file>
- 对已加入版本管理的文件做更改检查
💲 git update-index --no-assume-unchanged <file>
添加删除移动文件
- 添加所有文件到暂存区,包括未追踪文件
💲 git add -A
- 更新暂存区文件
💲 git add -u
- 交互式添加文件到暂存区
💲 git add -p
- 工作区与暂存区删除文件
💲 git rm <file>
- 仅暂存区删除文件
💲 git rm --cached <file>
- 重命名暂存区文件
💲 git mv <file> <file1>
工作区状态
- 查看工作区的信息
💲 git status
- 查看工作区信息并显示分支及追踪信息
💲 git status -sb
- 并查看忽略文件的信息
💲 git status --ignored
- 列出忽略文件
💲 git check-ignore *
显示更改
- 显示工作区与暂存区的不同
💲 git diff
- 显示暂存区与本地仓库的不同
💲 git diff --cached
- 显示工作区,暂存区与本地仓库的不同
💲 git diff HEAD
- 仅显示改变的文件
💲 git diff --name-only
- 比较两次提交的差异
💲 git diff <commit> <commit>
- 显示某次 commit 所做的更改
💲 git show <commit>
列出文件信息
- 列出暂存区文件
💲 git ls-files
- 列出忽略文件与未追踪文件
💲 git ls-files -o
- 子目录中显示所在位置
💲 git ls-files --full-name
储藏与恢复
- 储藏(stash)工作区相对暂存区更改的文件
💲 git stash
- 储藏文件并添加描述信息
💲 git stash save <message>
- 恢复最后一次储藏的文件
💲 git stash apply
- 恢复最后一次储藏的文件并删除此次储存记录
💲 git stash pop
- 查看储藏列表
💲 git stash list
恢复工作区
- 重置工作区某文件
💲 git checkout -- <file>
- 重置工作区
💲 git checkout .
- 列出将要清除的未追踪文件
💲 git clean -n
- 清除未追踪文件
💲 git clean -f
- 清除忽略文件
💲 git clean -Xf
- 清除未追踪目录及文件
💲 git clean -df
回退版本
- 重置暂存区
💲 git reset
- 重置工作区和暂存区
💲 git reset --hard
- 恢复本分支到某次提交,重置工作区与暂存区
💲 git reset --hard <commit-ish>
- 恢复本分支到某次提交
💲 git reset --soft <commit-ish>
- 恢复本分支到某次提交,重置暂存区
💲 git reset --mixed <commit-ish>
- 反向恢复一个提交并生成新的提交
💲 git revert <commit>
分支
- 列出本地分支
💲 git branch
- 列出本地分支与追踪关系
💲 git branch -vv
- 列出远程分支
💲 git branch -r
- 列出所有分支
💲 git branch -a
- 建立分支不切换工作区
💲 git branch <branch>
- 删除已被合并的分支
💲 git branch -d <branch>
- 强制删除未被合并的分支
💲 git branch -D <branch>
- 更改分支名字
💲 git branch -m <newbranch>
- 设置追踪分支
💲 git branch -u <upstream>
切换分支
- 切换分支
💲 git checkout <branch>
- 建立分支并切换工作区
💲 git checkout -b <branch>
- 切换到最近一次分支
💲 git checkout -
- 建立无任何提交历史的分支
💲 git checkout --orphan <branch>
合并分支
- 合并 develop 分支到本分支
💲 git merge develop
- 强制合并分支后生成 merge commit
💲 git merge -no-ff develop
- 合并最近切换分支
💲 git merge -
- 变基合并 develop 分支
💲 git rebase develop
- 变基进入交互式界面
💲 git rebase -i
远程仓库
- 添加远程仓库并命名为 origin
💲 git remote add origin <git-repo>
- 修改远程仓库的地址
💲 git remote set-url origin <git-repo>
- 列出所有的远程仓库
💲 git remote -v
- 列出远程仓库 origin 的详细信息
💲 git remote show origin
- 推送与拉取
💲 git config push.default simple
设置默认推送策略为 simple
- 推送 master 到远程仓库
💲 git push origin master
- 推送到远程仓库并建立追踪关系
💲 git push -u origin master
- 推送时忽略 pre-push hook
💲 git push -n
- 从远程仓库拉取文件
💲 git pull origin master
- 设置 rebase 模式拉取代码
💲 git pull --rebase origin master
提交
- 提交
💲 git commit -m <message>
- 追加提交重置提交信息
💲 git commit --amend -m <message>
- 重置作者
💲 git commit --amend --author=<mail>
- 允许空提交
💲 git commit --allow-empty
- 提交时跳过 pre-commit hook
💲 git commit -n
日志
- 显示提交日志
💲 git log
- 显示某文件的提交日志
💲 git log -p <file>
- 以图表形式显示提交日志
💲 git log --graph --all --oneline --decorate
- 显示每次提交的对象信息
💲 git log --pretty=raw
- 显示某个时间段的提交信息
💲 git log --since '2 days ago'
- 显示指定作者的提交信息
💲 git log --author=<author>
- 根据提交信息中的关键字查找
💲 git log --grep=<keyword>
- 根据提交源码中的关键字查找
💲 git log -S <keyword>
- 列出二者特有的提交
💲 git log master...develop
- 列出 branch 有而 branch2 没有的提交
💲 git log branch2..branch
- 仅显示 merge commit
💲 git log --merges
- 统计每个作者的提交情况
💲 git shortlog
- 统计每个作者的提交个数
💲 git shortlog -sn
标签
- 列出所有标签并显示标签信息
💲 git tag -ln
- 添加一个标签
💲 git tag -a v1.0.0 -m <message>
- 在某个 commit 上添加一个标签
💲 git tag v0.9.0 <commit>
- 删除一个标签
💲 git tag -d v1.0.0
- 查看某个标签信息
💲 git show v1.0.0
- 推送所有标签到远程仓库
💲 git push --tags
- 使用最近的标签描述本次提交
💲 git describe
追责(甩锅)
- 找到最后一次提交的作者
💲 git blame <file>
- 找到具体某一段的最后一次提交
💲 git blame -L 10,18 <file>
- 查找文件的修改历史及明细
💲 git log -p <file>
确认坏的提交
- 二分查找坏的提交
💲 git bisect start <br> git checkout HEAD~20 <br> git bisect good <br> git bisect bad <br> git bisect reset
git对象
- 获取改摘要信息的类型
💲 git cat-file -t <hash>
- 获取改摘要信息的内容
💲 git cat-file -p <hash>
查找
- 在已追踪文件中查找关键字并指明行号
💲 git grep -n hello
打包
- 打包
💲 git archive -o arch.zip HEAD

浙公网安备 33010602011771号