git学习笔记(3)

git学习笔记之版本管理

查看修改

当我们对已经提交到git上的文件做修改时,比如原文件内容是这样的:
在这里插入图片描述
增加两行内容,现在变成这样:
在这里插入图片描述
git status–可以让我们随时掌握仓库此时的状态,比如:
在这里插入图片描述
上面的输出告诉我们readme.txt文件被修改了,但还没有提交。
git diff “file name”–如果我们搞忘了我们修改的内容,别慌,该命令可以查看修改前后的内容
在这里插入图片描述
上图绿色的部分就是修改的内容很直观有没有。接着就可以使用git add 和**git commit -m “file name” ** 来提交文件了。

版本回退

我们如果不断对文件进行修改,比较简单的修改我们可以记住,但是如果在工作中,不太可能记住一个几百上千行的文件修改了什么内容,所以Git给我们提供了一个方便查看历史记录的命令
git log – 比如:
在这里插入图片描述
这样我们可以一目了然的看到从最近到最远我们提交的日志。(黄色的那一行是 commi id,后面有用),好了,既然已经知道了历史记录,我们就可以在回退到我们想要的版本中去,就好像瑞克手中的空间穿越枪一样,具体命令:
git reset --hard comnit id – 现在我想回到第二个版本 – git reset – hard 2fb4c227(commit id 可以不用写全,git会自动去找)
在这里插入图片描述
HEAD 表示当前版本
在来康康readme.txt文件中的内容:
在这里插入图片描述噔噔,果然被还原了,开心吗?
我们 git log 看看版本库的状态
在这里插入图片描述
我一脸黑人问号,我的那个“增加了三行废话”版本Git给我吃啦?可是我想反悔,觉得"三行废话"其实也不错,怎么办呀?
不慌,现实中没有后悔药,可是在Git中,后悔药可是随便吃的。这里有两种情况可以改变:

  1. 如果你的命令行窗口没有关闭,或者没有clear,你就顺着网线,不是,顺着往上找,找到"三行废话"版本的 commit id,于是就可以回到这个版本了。同样的使用 git reset --hard b9bfb524403dee60173
    在这里插入图片描述
    我胡汉三又回来啦
  2. 如果我退到某个版本,并且关掉了电脑,国庆节浪了一圈回来,然后后悔了。但是现在找不到commit id了,怎么办?在线等,挺急的!
    git reflog – Git提供这条命令用来记录你的每次命令,用了这条命令,他好你也好!那我们来看看:
    在这里插入图片描述
    从输出可以看到三个版本号的id,以及我们进行的两次版本改变的记录,所以,这次我想回到第一个人版本中去,就可以根据上面的输出内容查到commit id,乘坐时光机回到过去,装个x又回来,真好!

小结

在版本回退中:

  1. HEAD指向的版本就是我们当前的版本
  2. 使用 commit reset --hard commit_id 在版本历史之间穿梭
  3. 在穿梭前,使用git log查看提交历史,方便定位版本id,然后穿越
  4. 要重返未来版本,使用git reflog来查看命令历史,以便确定要回到未来的哪个版

管理修改

在git中,对文件内容增加,删除,删一些又增加一些,又或者是创建了一个新文件,都算是一个修改。在对git对修改的管理进行阐述之前,需要提到工作区暂存区这个概念

工作区和暂存区

在这里插入图片描述

  1. 工作区:电脑里能看到的目录,比如一个文件夹。
  2. 暂存区:英文叫stage, 或index。一般存放在"git目录"下的index文件(.git/index)中。
  3. 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
    上图展示了三个区之间的关系。
    前面把文件往Git的版本库里添加的时候,分两步进行,以我的理解是这样的:
  4. git add – 把文件添加到暂存区,
  5. git commit– 把暂存区中的内容提交到当前分支。

修改的管理

在理解了暂存区的概念后,就可以阐述Git对修改的管理了。

  1. 对readme.txt 文件增加两行内容:

在这里插入图片描述
2. 添加到暂存区中:
在这里插入图片描述
3. 再次修改readme.txt中的内容:
在这里插入图片描述
4. 提交
在这里插入图片描述
5. 查看状态
在这里插入图片描述
可以看到第二次的修改并没有提交到版本库中去,那么这是怎么一回事呢?
我们看看上面的步骤是这样的:
第一次修改 --> git add --> 第二次修改 --> git commit
前面我们知道了使用git add是把第一次修改的内容添加进了暂存区,等待提交,而第二次修改并没有添加进暂存区,第二次修改后使用了git commit命令,这是把暂存区中的第一次修改提交到了版本库中,而第二次修改在哪呢?它还在工作区中睡觉呢。
所以呢,git commit命令只负责暂存区中的修改的提交。
6. 提交后,我们可以使用命令查看工作区和版本库里面最新版本的区别。命令如下:
git diff HEAD – readme.txt
在这里插入图片描述
可见第二次的修改没有提交上来
7. 怎么提交第二次修改呢?
(1)继续git addgit commit
(2)当git add第一次修改时,不用急着提交,先git add第二次修改,再git commt。
第一次修改–>git add–>第二次修改–>git add–>git commit
8. 小结
Git管理和追踪修改是在暂存区中进行的。每次的修改,如果不用git add,那该次修改就不会commit到版本库中。

撤销修改

当我在readme.txt中添加了一行:
在这里插入图片描述
当然,我是在想屁吃…
git status查看一下:
在这里插入图片描述
Git告诉我使用
git restore filename可以丢弃工作区的修改:
在这里插入图片描述
我的老婆没有了…
git restore filename命令是最新版Git添加进来的命令。还有其他命令可以撤销修改:
git checkout – filename
上面的命令的意思是将工作区中的修改全部撤销,这里又有两种情况:

  1. readme.txt修改后还没有放到暂存区,撤销修改后就回到和版本库一样的状态了。
  2. readme.txt已经添加到暂存区了。然后又在工作区做了修改,撤销修改后就回到添加到暂存区后的状态了。

还有一种情况就是我在readme.txt中修改了内容,还特么git add 到暂存区了:
在这里插入图片描述
我忽然发现,我的女盆友可能会看到,幸好还没有commit,还有办法补救,git status
在这里插入图片描述
同样,Git告诉我说可以用命令:
git restore – staged filename把暂存区的修改撤销掉,重新放回到工作区:
在这里插入图片描述
也可以使用
git reset HEAD filename
在这里插入图片描述
再用git status查看一下
在这里插入图片描述
可以看到暂存区是干净的,工作区有修改。接下来就是撤销工作区的修改了,使用
git restore file name或者是git checkout – filename都可以。
在这里插入图片描述
对,老婆又没有了。

小结

  1. 当你修改了工作区的某个文件的内容,想直接撤销工作区的修改,使用
    git restore filename
    git checkout – filename

  2. 如果你不但修改了工作区的内容,还手欠添加到了暂存区,要想撤销修改,分两步走:
    第一步:使用git restore --staged filena或者是git reset HEAD filename回退到工作区
    第二步:按照第一点的内容操作

  3. 如果已经将修改的内容提交到了版本库中时,想要撤销本次提交,参考 版本回退,坐上时空穿梭机,直接回到最近的提交版本。

  4. 如果已经推送到远程库中,呵呵,那就祈祷女盆友不会上GitHub。

删除文件

向Git中添加一个文件kk.txt,提交到版本库中
在这里插入图片描述
一般情况下,使用rm命令可以删除工作区的文件,rm filename在这里插入图片描述
这时候,版本库中的文件和工作区中的就不一致了,使用git status会告诉你哪些文件被删除了,如上图所示。现在你有两种选择
第一:你确实要删除版本库中的文件,那就可以使用:
git rm filename
然后git commit -m "message"
在这里插入图片描述
w文件就从版本库中删除了
第二:手欠删除了,但是版本库中还有,所以可以恢复最新版本
git checkout – filename
在这里插入图片描述
好了,版本管理的内容大概就那么多,下次笔记内容是分支管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值