//加了下面的代码,博客会禁止复制(代码还可以复制) // document.body.onselectstart = document.body.ondrag = function(){return false;}

git的基本原理和应用(1)

git 常用指令

设置git的用户名和邮箱,引号中输入自己的即可

git config --global user.name " "
git config --global user.email " "

创建版本库

版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

1.首先在终端中定位或创建所要管理的目录

2.通过git init命令把该目录变成git可以管理的仓库,可以发现当前目录下多了一个.git目录,这个目录是Git来跟踪管理版本库的。

提交文件

使用git status命令可以让我们时刻掌握仓库当前的状态。

如果想要知道具体修改了什么内容,需要使用指令git diff + 文件名来进行查看

提交修改和提交新文件是一样的两步

第一步是git add + 文件
git add .是提交所有文件

第二步执行git commit操作,这时候会打开vim编辑器,可以在当中输入提交说明。

如果想要跳过vim编辑器这一步,可以直接使用命令git commit -m "提交说明"

提交后,再用git status命令查看仓库的当前状态,git会告诉我们当前没有需要提交的修改,而且,工作目录(working tree clean)是干净的。

同时,可以用git log命令来查看提交日志。

版本回退

每当你将文件修改到一定程度上时,可以保存当前状态,即保存一个快照,这个快照在git中被称为commit。一旦文件发生了乱改或者误删,可以从之前的commit恢复,然后继续工作,而不是把之前的工作成果全部丢失。

使用git log来查看历史记录,git log命令显示从最近到最远的提交日志。

显示的一大串字母和数字的组合是commit id(版本号),commit id不是1,2,3……递增的序列,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

每提交一个新版本,实际上git就会把它们自动串成一条时间线。

在git中, 用HEAD表示当前版本,也就是最新提交的那一串ID,上一个版本就是HEAD,上上一个版本就是HEAD^,往上100个版本可以写成HEAD~100。
如果要把当前版本回退到上一版本,就可以使用\(git reset\)命令:

git reset --hard HEAD^

如果想要回退到某一个版本,只要用以下指令:
git reset --hard 9adb... hard 后面跟上想要回到的版本id即可,可以只给出前几位,git 会自动去找,只要保证能够唯一识别即可。
--hard参数的意义在后面会讲。

再次使用git log进行查看,会发现最新的那个版本已经不见了。

现在,你回退到了某个版本,但是后来又后悔了,想要恢复到新版本,找不到最新的commit id 怎么办, git 提供了一个命令git reflog用来记录你的每一次命令。
于是,你就有可以回到未来了。

工作区和暂存区

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

工作区:就是在电脑里能看到的目录,比如说某某文件夹就是一个工作区。

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master(main),以及指向master的一个指针叫HEAD。

分支和HEAD的概念之后会做介绍。

把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区。

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
avater

撤销修改

在对工作区的文件进行修改时,如果你发现修改错了,想要恢复原状,可以使用
git checkout -- file

命令git checkout -- readme.txt的意思就是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

如果你改错了一些文件,还git add到暂存区了,用命令git reset HEAD <file>可以把暂存区的修改撤销掉,重新放回工作区。

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

之后继续撤销工作区的修改即可。

小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

方法一:在工作区种用rm指令删除文件后,再提交到版本库:

rm test.txt
git add test.txt
git commit -m "delete test"

方法二:使用git rm命令

作用: 删除工作区文件,并且将这次删除放入暂存区。再commit即可

git rm test.txt
git commit -m "delete test"

如果在工作区种误删了一个文件,如果该文件之前已经提交到版本库,那么你不需要担心误删,只要使用git checkout -- 文件名就可以把误删的文件恢复到最新版本。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

posted @ 2023-08-11 20:04  龙鳞墨客  阅读(30)  评论(0)    收藏  举报