Git⛏️

🕵️git命令速查表:


🎯学习目录:


💬git 简介:


  • Git 是世界上最牛逼🐮的分布式版本控制系统

版本控制 是一个用来📝记录一个或多个文件📂内容变化,以便将来查阅🔍特定版本的修订情况的系统

  • 工作区(Working Directory):程序员进行🛠️开发、改动、可视的目录📄或文件夹📁
  • 平常我们开发就是拷贝远程仓库📭中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作
  • 暂存区(Stage):💲 git add 添加文件的相关信息📃(文件名、大小、timestamp...),以 id 👉每个文件实体
  • 💲 git status 🔎查看暂存区的状态,暂存区🚏标记了你当前工作区中,哪些内容是被git管理的
  • 版本库(Repository):保存了📍对象被提交过的各个版本🏷️,比起工作区和暂存区的内容更旧一些
  • 💲 git commit 🔀 index目录树📜到本地仓库,👉通过💲 git push 同步本地仓库与远程仓库

本章小结💭

  • 任何对象都是在工作区👨‍💻中诞生和被修改;
  • 任何修改都是从进入index区📥才开始被版本控制;
  • 只有把修改提交到本地仓库📦,该修改才能在仓库中留下痕迹;
  • 与协作者分享本地的修改,可以把它们push到📤远程仓库来共享

区域之间⛓️

操作命令💲


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
posted @ 2019-10-16 20:55  Ly-Never  阅读(331)  评论(0)    收藏  举报