在Git中,可以使用差异比较命令和版本回退命令来查看文件之间的差异并回退到早期的版本。
以下是对这些操作的简要解释:
差异比较:你可以使用git diff
命令来比较工作区中的文件与暂存区或已提交版本之间的差异。执行以下命令可以查看文件的差异:
git diff
这将显示工作区与暂存区之间的差异。如果要比较工作区与最新提交版本之间的差异,可以添加参数:
git diff HEAD
此命令将显示工作区与HEAD(最新提交)之间的差异。
版本回退:当你需要回退到早期的版本时,可以使用git checkout
或git reset
命令来实现。
使用git checkout
命令可以将指定版本的文件内容还原到工作区。执行以下命令:
git checkout <commit号> <文件名>
<commit号>是要回退到的具体提交的标识符,可以通过git log命令查看。<文件名>是要回退的文件名。
使用git reset命令可以撤销某次提交及之后的所有提交,并将代码库恢复到指定版本。执行以下命令:
git reset <commit号>
<commit号>是要回退到的具体提交的标识符。
注意:使用git reset命令回退版本将会删除撤销的提交及其后的提交记录,且无法恢复。建议在本地开发环境中使用该命令,避免对公共代码库产生不可逆的影响。
补充说明:在进行版本回退操作前,建议先创建一个分支并切换到该分支上,以保留当前版本的稳定状态。可以使用以下命令创建和切换分支:
git branch <分支名>
git checkout <分支名>
这样你就可以在新的分支上进行版本回退操作,而不会影响主分支或其他工作进展。
06.GIT本地操作-差异比较
目标
使用 git diff来比较暂存区、本地库与工作区的内容
内容
使用vim命令,对readme.txt文件进行编辑,添加我是第二行代码,使用wq退出
-
工作区暂存区比较
命令:git diff readme.txt
-
工作区本地库比较
命令:git diff HEAD readme.txt
-
暂存区本地库比较
命令:git diff --cached readme.txt
这里缓存区和本地库没有不同所以没有内容
- 补充:可以第二次提交到暂存区和本地仓库
小结
-
工作区与暂存区如何比较
git diff 文件名
-
工作区与本地库如何比较
git diff head 文件名
-
暂存区与本地库如何比较
git diff --cached 文件名
07.GIT本地操作-版本回退
目标
掌握 git log、git reflog、git reset 作用
内容
当我们从暂存区提交到本地仓库时,发现当前的提交的版本有问题,希望回退到指定版本如何操作呢?
使用vim命令编辑readme.txt,添加“我是第三行代码”
命令:git add readme.txt 提交到暂存区
命令:git commit -m '第三次提交' 提交到本地仓库
我们可以通过git提供的查看日志命令来查看提交的日志
命令:git log 查看当前提交日志
可以发现,目前为止,我们已经在本地仓库中提交了3次,也就是说有3个不同版本。其中,最近的这个版本有一个标示:HEAD-> master 这就是标记当前分支的当前版本所在位置,如果没有显示当前所在位置可以使用下面命令查看:
命令:git log --decorate 查看当前提交日志,且显示当前分支的当前版本所在位置
在log中,每一个版本的前面,都有一长串随即数字: b44a10787c2b2bcc7ceb9c39cf06309065518d4b ,这是每次提交的commit id ,这是通过SHA1算法得到的值,Git通过这个唯一的id来区分每次提交
-
回退到之前版本
命令:git reset --hard HEAD^ 回归到上一个版本,Git通过HEAD来判断当前所在的版本位置。那么上一个版本,就用HEAD^标示,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
这时我们可以在查看一下日志 git log
发现只有两个版本,我们在查看一下文件内容
-
回退到指定版本
首先们使用
命令: git reflog 查看所有操作
找到之后可以使用如下命令进行回退到指定版本
命令:git reset --hard 版本号 回退到指定版本
我们回到第三次提交,这时我们在查看文件
小结
-
如何查看当前日志
git log 只能看到当前操作
-
如何查看所有操作日志
git reflog 查看所有操作日志
-
如何回退到上一个版本
git reset --hard head^
-
如何回退到指定版本
git reset --hard 版本号