IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Java第四十六天,Git系列,Git中级 -> 正文阅读

[开发工具]Java第四十六天,Git系列,Git中级

一、Git 基础命令

1. 查看远程分支地址

git remote -v

2. 更新远程所有分支

git remote update origin --prune

3. 查看所有历史版本信息

git reflog

4. 更新上一次 commit 信息

# 如果需要在原有的 commit 中新增提交文件,则需要执行以下命令,否则不需要执行
git add [待提交文件]

# 更新 commit 注释信息
git commit --amend

5. 删除本地分支

# 普通删除
git branch -d [本地分支名]

# 强制删除
git branch -D [本地分支名]

6. 删除远程分支

git push origin --delete [远程分支名]

7. 配置 gitk 客户端 utf-8 编码(防止中文乱码)

git config --global gui.encoding utf-8

二、git stash 命令

1 用途

将当前未提交的修改暂存,去别的分支修改代码

2 步骤

# 将当前分支未提交的代码暂存
git stash
git stash save "注释信息"

# 切换的别的分支
git switch/checkout [其他分支名]

# 在别的分支修改代码

# 回到自己的分支
git switch/checkout [自己的分支名]

# 将之前暂存的代码恢复
git stash apply

# 将恢复的暂存从队列中删除
git stash drop

3 常用命令

# 查询所有的 stash 记录
git stash list

# 将最近的一次暂存恢复,并且从队列中删除
git stash pop = git stash apply + git stash drop

# 将指定序号 x 的 stash 恢复
git stash apply stash@{x}

# 将指定序号 x 的 stash 删除
git stash drop stash@{x}

# 清空所有的 stash 记录
git stash clear

# 查看堆栈中最新保存的 stash 和当前版本的目录差异
git stash show

# 查看堆栈中最新保存的 stash 和当前版本的详细差异
git stash show -p

# 查看指定的 stash x 版本和当前版本的目录的差异
git stash show stash@{x}

# 查看指定的 stash x 版本和当前版本的详细差异
git stash show stash@{x} -p

4 细节描述

git stash 命令会把以下修改存储到一个新的堆栈中(堆栈中的内容(stash)可以被所有的分支访问)

  • 暂存区的修改
  • 工作区中已经存在的文件的修改

git stash 命令不会存储下列文件

  • 工作区中新增的文件(untracked files)
  • 被版本库忽略的文件(.gitignore 中定义的忽略文件)

5 基础概念

工作区:项目所在目录(除 .git 文件夹外的其余目录和文件)

暂存区:也称索引(index),英文叫做 stash 或 index,一般存在于 .git 目录下的 index 文件;当执行 git commit 操作时,暂存区的目录树会写到版本库中,所以也可以理解为 git commit 提交的是暂存区中的内容

git stash -u

git stash -u 命令会存储以下文件

  • 工作区中新增的文件(untracked files)

git stash -a

git stash -a 命令会存储以下两种文件

  • 工作区中新增的文件(untracked files)
  • 被版本库忽略的文件(.gitignore 中定义的忽略文件)

三、git reset 命令

1 使用背景

在开发过程中,有时候可能在执行完 git commit 之后发现代码有问题,需要撤销提交,或回滚回之前的任意版本,这时候就需要使用 git reset 命令了

2 命令详解

git reset [参数] [commit id / head]

参数:
--mixed    重置 HEAD,INDEX;保留 工作区;默认参数
--soft     重置 HEAD;保留 INDEX,工作区;让仓库恢复到 git commit 之前的状态
--hard     重置 HEAD,INDEX,工作区

3. 关键词详解

工作区:项目所在目录,即 .git 目录的同级目录(不包括 .git 目录);也可以理解为项目根目录下除 .git 目录的所有目录及文件

INDEX:也称暂存区,英文叫做 stage 或 index;一般存在于 .git 目录下的 index 文件;当执行 git commit? 操作时,暂存区的目录树会被写到版本库中,所以也可以理解为 git commit 提交的是暂存区中的内容

HEAD:HEAD就是 ./git/HEAD 文件,它存储着当前工作目录所处的某次 commit;HEAD 是对 commit 的引用,默认是上一次的 commit(提交的 commit,切换仓库,回滚版本,切换 tag 会改变 HEAD)

版本库:项目根目录下的 .git 目录就是版本库

四、git revert 命令

  • reset 命令是回溯到指定的d commit 版本,指定的 commit 版本之后的操作会被删除,并且不会产生新的 commit 记录,如果要推送到远程服务器,需要用 -f 强制推送;
  • revert 是在当前 head 的基础上,反向修改成目标 commit 版本,将修改结果作为一个新的 commit 提交,版本会递增,不会影响之前提交的内容

1 常用命令

# 回退到目标 commit id 时的状态
git revert [commit id]

# 回退到 head 指针指向的提交
git revert HEAD

# 回退到 HEAD 指针 n 次之前的提交
git revert HEAD~n

# 不产生新的提交
git revert -n

# 当回滚记录是由多个分支 merge 产生时,需要指定回滚的父节点
git revert -m [指定回滚的父节点]

五、git restore 命令

  • git restore --staged [文件路径]? ? ? ? 撤销在暂存区提交的文件,将文件状态改为不受版本库控制
  • git restore [文件路径]? ? ? ? 使在工作区但不在暂存区的文件撤销更改(内容恢复到没修改之前的状态);如果文件还在暂存区,该命令无效,需要使用 git restore --staged 命令将文件从暂存区移至工作区
  • git rm -r --cached [. | 文件 | 目录]? ? ? ? 清除 git 缓存区的缓存数据,不改动工作区的文件内容;但是本操作(删除操作;即工作区不删除,但是版本库会删除,并且停止版本控制)会随着 commit,push, merge request 被带到本地版本库、远程版本库

六、 git diff 命令保留

  • git diff? ? ? ? 比较的是工作区和暂存区的差异;即尚未缓存的改动
  • git diff --cached? ? ? ? 比较的是暂存区和最新本地版本库的差异;即已被缓存的改动;也可写作 git diff --staged
  • git diff --HEAD? ? ? ? 比较的是工作区和最新本地版本库中 HEAD 指针指向的 分支/commit id/tag/... 的差异

七、git commit 命令

  • git commit -a? ? ? ? 相当于 git add + git commit
  • git commit --amend? ? ? ? 撤销上一次提交,并将暂存区文件重新提交,编辑器会弹出上一次提交的信息,可以修改你想要提交的注释信息
  • git commit --amend -m? ? ? ? 撤销上一次提交,同时 -m 指定修改的提交信息
  • git add [文件] + git commit --amend? ? ? ? 不仅修改提交信息,并且更改提交文件

八、git 查找、阅读任意分支、版本的文件

1 显示任意分支下的指定目录

git show [分支名]:[目录路径]

2 阅读任意分支下的指定文件

git show [分支名]:[目录路径]

git show [40 位对象名]

3 检索、查找包含指定内容文件所在分支及其具体路径

git grep [options] "关键字" [分支名 | commit id | tag | <tree> | <pathspec>]

<tree>    分支、commit id、tag、及其完整路径
<pathspec>    路径


# options 可选参数

--cached    搜索暂存区中的文件,而不是搜索已经在版本库并被跟踪的文件

--no-index    搜索当前目录中不被 git 版本控制的文件
--exclude-standard    不支持搜索忽略文件,仅在 --untracked 存在时生效

--full-name    显示目标文件的完整路径

--heading    按文件分行显示匹配内容

--break    在不同的文件之间加空白行来隔开

-i
--ignore-case    忽略大小写

-w
--word-regexp    只匹配字符边界

-E
--extended-regexp    匹配正则表达式

-F
--fixed-string    使用固定字符串模式,禁用正则表达式

-v
--invert-match    取反,显示不匹配的行

-q
--quit    不输出匹配的行

-n    显示行数

-c    列出匹配的文件,并统计有多少个匹配

-h
-H    每个匹配结果均显示文件名

--and    与

--or    或

--not    非    

4 阅读指定文件

对象名

在 git 中任何一个文件的任何版本,都有一个对象名,即一个文件有几个版本,就有几个对象名;每一个对象名都是对象做 SHA1 哈希计算得来的

对象

每个对象包括三个部分:

类型 ==> blob(用来存储文件数据,通常是一个文件)、tree(用来管理? tree 或 blob)、commit、tag

大小

内容

1 常用命令

  • git ls-files-s [目录]? ? ? ? 显示指定目录下所有对象的 sha1 哈希对象名
  • git hash-object [文件]? ? ? ? 显示指定文件的 sha1 哈希对象名
  • git cat-file -t [对象名]? ? ? ? 显示对象的类型
  • git cat-file -s [对象名]? ? ? ? 显示对象的大小
  • git cat-file -p [对象名]? ? ? ? 显示对象的内容

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:32:17  更:2022-09-04 01:33:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 11:42:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码