目录
- 介绍
- 暂存区
- 安装
- 创建仓库
- 提交文件
- 查看当前是否还有文件未提交
- 查看提交历史
- 版本回退
- 恢复版本回退
介绍
git是一个分布式的代码版本管理工具(区别于集中式管理的svn),分布式的意思是对于同一个项目可以有多个仓库存储,分布在不同的用户或者代码托管平台上(远程仓库),每一个仓库都有自己的一套完整管理系统,包括工作区,暂存区,仓库区,提交到仓库区的代码可以再次提交到远程仓库(Remote)中。
暂存区
暂存区是用来存储修改好的代码,但还未提交到仓库区的一个区域,在工作区中修改完成代码后,可以将代码先提交到暂存区。暂存区有如下作用:
- 提供了一个临时存储更改的地方:当你在工作目录中修改了文件后,可以使用git
add命令将这些修改添加到暂存区。这样做可以把相关修改保存在一个临时区域中,而不会立即将其提交到代码仓库。 - 控制提交的内容:通过将修改添加到暂存区,你可以选择性地将不同的文件或变更单独提交。例如,你可以将实现某个特性的代码和修改文档的更新同时添加到暂存区,然后分别进行提交,而不必将这些修改混合在一起。
- 检查更改内容:通过将修改添加到暂存区,你可以使用git diff
–staged命令查看将被提交的更改内容,以确保准备提交的版本是你所期望的。 - 回滚修改:如果你对某个文件的修改出现了问题,你可以使用git restore --staged
命令将该文件从暂存区中移除,以撤销对该文件的修改。
暂存区的存在使得Git具有更强大的版本控制能力,可以更加精细地控制修改的提交,提供了更灵活的工作流程。
安装
这个很简单,按照步骤即可完成安装
创建仓库
使用 git init 命令在本地创建一个包含三个区的完整仓库
提交文件
新建一个readme.txt文件,我们首先将他提交到缓存区中,使用git add readme.txt中
接下来可以提交到仓库中,使用git commit -m "readme.txt submit"指令,-m 后是本次提交的注解
查看当前是否还有文件未提交
git status
刚刚已经提交过了 因此显示没有未提交的
重新修改readme.txt中,此时还未提交到暂存区,显示如下:
此时可以使用git diff readme.txt来查看修改了哪些
使用git add readme.txt 加入到暂存区,再次使用git status
此时git追踪到了readme文件的变化,显示可以再次提交到仓库,但是此时再次使用diff指令却没有变化
git diff命令通常用于查看未暂存的更改或与最新提交之间的差异。它可以帮助开发人员了解文件的变动情况,包括添加、修改和删除的内容。
使用 git diff --staged指令便可以查看
git diff --staged命令用于比较暂存区(也称为索引)与最新提交之间的差异。–staged选项与–cached选项是等效的,它们都用于指定比较暂存区与最新提交之间的差异。
查看提交历史
使用git log会显示从近到远的三个提交历史,也可以使用git log -–pretty=oneline 一行显示
版本回退
我们现在新增一个提交
现在想要回到上一个版本,该如何操作
使用git reset --hard HEAD^指令
使用git reset --hard HEAD~
使用^无法完成回退,使用 ~则可以
HEAD^和HEAD~的区别,可以参考这篇文章https://blog.csdn.net/u012745499/article/details/114212461
git reset 命令有不同的用法,最常见的包括以下几种:
撤销提交(Undo Commit):通过将分支指针移动到之前的提交,你可以撤销最新的提交并将代码回退到上一个状态。常用的选项包括:
git reset HEAD~:将当前分支指向上一个提交,并保留之前的更改作为未暂存的更改。
git reset --hard HEAD~:将当前分支指向上一个提交,并丢弃之前的所有更改。
取消暂存(Unstage):如果你已经使用 git add 将文件添加到暂存区,但想要撤销这些更改,可以使用以下命令:
git reset:将当前分支的 HEAD 移动到上一个提交,同时保留工作目录中的更改。
移动分支指针(Move Branch Pointer):通过将分支指针移动到另一个提交,你可以更新分支的位置,将其指向不同的提交。常用的选项包括:
git reset :将当前分支指向指定的提交,并保留之前的更改作为未暂存的更改。
git reset --hard :将当前分支指向指定的提交,并丢弃之前的所有更改。
需要注意的是,git reset 是一个强大且潜在有风险的命令,它会修改提交历史和分支指针位置。因此,在使用 git reset 前,请确保理解其影响,并确保你的操作不会导致不可逆的数据丢失。
恢复版本回退
此时查看git 历史
之前的提交已经没有了。如何可以查看刚刚那个版本的提交呢,可以使用git reflog来进行查看
git reflog用于查看本地仓库中的引用日志(reference logs)。引用日志记录了本地仓库中的引用(分支、标签等)的变动历史,包括分支的创建、删除、合并以及提交的移动等操作。它可以帮助你追踪和恢复意外删除或移动的提交、分支或标签。
使用git reflog命令可以列出引用日志的信息,显示了每个引用的操作记录和相应的提交哈希值。
此时我们可以拿到“版本回退”的提交哈希值,通过使用哈希值便可以恢复了
我们使用git reset --hard fedab1b 便可以恢复了