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 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 6. Git进阶之撤销与修改 -> 正文阅读

[开发工具]6. Git进阶之撤销与修改

# 关于撤销

1. 本地修改,未git add

可以使用git checkout命令:

git checkout -- [file]

作用:让这个文件回到最近一次git commitgit add时的状态

2. 修改完git add,未git commit

可以使用git reset命令,该命令不止可以用在版本回退,也可以用来撤销暂存区。用法:

git reset HEAD [file]

作用:把暂存区的修改撤销掉(unstage),重新放回工作区。

随后使用git status查看,其状态与情况1一样,此时可以再使用git checkout命令撤销工作区的修改。

另一种情况是要把git add进暂存区的文件移出暂存区,使其变成未跟踪状态,可以使用git rm命令。用法:

git rm --cached [file]	#移出暂存区

作用:把暂存区的文件移出,使其变成未跟踪状态。

3. 修改完git commit,未git push

到这一步进行撤销就是常提到的:版本回退

有三种回退方式:

  1. git reset --hard HEAD^
    

    往前回退一个版本,回退完了后工作区就是上一个版本的代码了,并且是clean的。连工作区也一起回退

  2. git reset --soft HEAD^
    

    往前回退一个版本,并且将这次错误的提交的代码改动,放在暂存区里。回退到git commit之前,修改保留到git add。

  3. git reset --mixed HEAD^ #(和不带参数是一样的)
    

    往前回退一个版本,并且将这次错误的提交的代码改动,放在工作区里。回退到git add之前,修改保留在工作区
    ?

# 关于改动

1. 使用git status

最常用的一个命令

最常用的命令,功能十分强大,可以列出工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)加上远程的git仓库(Remote Directory)四个工作区域之间的差异状态。

  1. 查看工作区哪些文件未被跟踪
  2. 查看工作区哪些文件被修改且未使用git add添加到暂存区Stage
  3. 查看暂存区Stage哪些文件未使用git commit提交到本地仓库
  4. 查看本地仓库有多少提交commit未使用git push推送到远程仓库

如果改动的文件过多,可以使用简短表示:

git status -s

最左边的红色字母表示文件状态,对应的状态有:

状态含义
‘’unmodified
Mmodified
Aadded
Ddeleted
Rrenamed
Ccopied
Uupdated but unmerged
??untracked
!!ignored

关于撤销可以看撤销栏目。

2. 使用git diff

也是很常用的命令,需要了解几个扩展用法,用到再查也可以。

作用:查看工作区和暂存区的文件差异。

在改动工作区的文件后,尚未执行git add命令,则会与暂存区的内容产生差异,使用

git diff [file]

可以查看该文件与上次git add的内容上的差异。

特殊情况:如果上一次刚使用完git commit提交到本地仓库(版本库),此时暂存区的内容为空,那么这个时候如果改动工作区上的文件,使用git diff则查看的是工作区与最后一次commit的差异。

从原理上看,当我们在做了一次commit之后,工作区 、暂存区,和版本库三个区域的sha-1版本号是同步的,sha-1号相同表示为同一份内容

因此本质上还是查看工作区和暂存区的差异。

扩展用法

2.1 暂存区和版本库的文件差异
git diff --cached
git diff --staged
git diff --cached [path/file]	#指定文件
git diff --cached [commid-id] [path/file]

显示【暂存区(已add但未commit文件)】和【最后一次commit(HEAD)】之间的所有不相同文件的增删改

上面这两个命令作用相同。

2.2 (工作区&暂存区)和版本库的差异
git diff HEAD
git diff HEAD^ #上一个版本
git diff HEAD~ #上一个版本

显示【工作目录(已track但未add文件)和暂存区(已add但未commit文件) 】与【最后一次commit】之间的的所有不相同文件的增删改。

2.3 两个分支最新commit内容的差异
git diff branch1 branch2
git diff branch1 branch2 --stat #简单显示,不显示具体的内容
git diff branch1 branch2 [path/file] #指定文件
2.4 两个commit的差异
git diff [commid-id1] [commit-id2]
2.5 打补丁

通过对上面的各种git diff用法后面添加> [patch]表示将差异做成补丁。

git diff > [patch]
git diff --cached > [patch] #将暂存区与版本库的差异做成补丁
git diff --HEAD > [patch]	#将工作区与版本库的差异做成补丁
git diff [file] > [patch]	#将文件的差异做成一个单独的补丁

做成补丁后,在其他机器上对应目录下使用:

git apply [patch]
git apply --reject [patch]	#将能打的补丁打上,有冲突的会生成.rej文件,手动解决

可以将补丁打上。

在应用补丁之前,可以先检验一下补丁能否应用:

git apply --check [patch]	#没有输出则表示可以顺利接受补丁

3. 使用git log

git log可以查看历史提交信息。

直接使用git log会列出所有的commit信息。如果版本库的提交比较多,可以使用

git log --oneline

作用:把所有历史提交以一行一提交的形式列出。

还有常用的,指定列出多少个历史提交

git log -2

作用:列出前2次历史提交。

当然可以结合起来用

git log -2 --oneline

即以一行一个提交的形式列出前两次提交。

还有一个可以查看log并且同时显示出改动的代码,相当于结合git diff使用

git log -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-03-16 22:41:58  更:2022-03-16 22:42:49 
 
开发: 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年11日历 -2024/11/26 6:49:40-

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