【git | 01】 git add、git commit
git的基本介绍
Git是分布式版本控制系统,所以需要绑定一个用户名和邮箱;以后我们每次提交代码都是用自己的用户提交的,这样就达到了在公司中,分辨多个开发人员提交的代码。
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
git本地仓库的使用教程
1. 下载git,使用命令:
sudo yum install -y git
2. 配置git:
git config --global user.name "Your Name" git config --global user.email "email@example.com" #查看配置是否生效 git config --list
3. 使用git创建本地仓库
#创建目录
mkdir gitspace
cd gitspace
git init
4. 使用命令 git add readme.txt 将文件加入到暂存区,然后使用 git commit -m "first commit readme.txt" 从暂存区提交到版本库。
注意:
提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。然后把当前分支指向新的提交节点。下图中,当前分支是main。 在运行命令之前,main指向ed489,提交后,main指向新的节点f0cec并以ed489作为父节点。
git commit系列命令
git reset系列命令
1. 通过命令 git status 查看当前仓库的状态。
3.对 readme.txt 总共进行了修改提交,想要查看一下历史该怎么查找呢?
- 使用 git log 查看历史版本
还可以按照每一次版本变更为一行内容显示,使用 git log --pretty=oneline 命令。
现在我需要版本回退,想把当前的版本回退到上一个版本,可以使用如下两种命令:
① git reset --hard HEAD^ 回到上一个版本, git reset --hard HEAD^^ 回退到上上一个版本,以此类推;
② 如果回退到前50个版本的话,使用方法①就显得不太明智了,我们可以使用简便命令操作: git reset --hard HEAD~50 就可以了。
HEAD 说明:
-
HEAD 表示当前版本
-
HEAD^ 上一个版本
-
HEAD^^ 上上一个版本
-
HEAD^^^ 上上上一个版本
-
以此类推...
可以使用 ~数字表示
-
HEAD~0 表示当前版本
-
HEAD~1 上一个版本
-
HEAD^2 上上一个版本
-
HEAD^3 上上上一个版本
-
以此类推...
当前readme.txt文件内容如下:(使用Linux中的cat方法可以查看)
如果现在又想回到刚才回退之前的最新版本,但是使用 git log --pretty=oneline 查看的是比当前老的版本,我们只能通过 git reflog 来查看比当前新的版本, 这时候我们看每一行都有一串黄色的字符,这个是每次的版本号。
实质上,reset 这个指令虽然可以用来撤销 commit ,但它的实质行为并不是撤销,而是移动 HEAD ,并且「捎带」上 HEAD 所指向的 branch(如果有的话)。也就是说,reset 这个指令的行为其实和它的字面意思 "reset"(重置)十分相符:它是用来重置 HEAD 以及它所指向的 branch 的位置的。
而 reset --hard HEAD^ 之所以起到了撤销 commit 的效果,是因为它把 HEAD 和它所指向的 branch 一起移动到了当前 commit 的父 commit 上,从而起到了「撤销」的效果:
所以同理,reset --hard 不仅可以撤销提交,还可以用来把 HEAD 和 branch 移动到其他的任何地方。
| 1 |
|
撤销操作
撤销操作包括两类:
git checkout -- <file> :撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区。
git reset HEAD -- <file> : 清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何改变。
参考资料
1. git详解使用教程
2. git reset命令
3. github学习
4. 图解git
5. Git Reset 三种模式