课程地址:【【git&github】入门教程,必学!】 https://www.bilibili.com/video/BV1cE411G7yc/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155
目录
1 Git基础
1.1 版本管理
1.1.1 版本管理
版本管理是一种记录文件变化的方式,以便将来查阅特定版本的文件内容。
1.1.2 人为维护文档版本的问题
1 文档数量多且命名不清晰导致文档版本混乱。
2 每次编辑文档都要复制,不方便。
3 多人同时编辑同一个文档,容易产生覆盖。
1.2 Git是什么
Git是一个版本管理控制系统(VCS),他可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复。
文档状态:实际就是指文档内容。
1.3 Git下载和安装
1.3.1 Git下载
1.3.2 Git安装
默认安装就行,不需要修改任何配置。
安装成功后,鼠标右键有Git Bash here命令,可以打开git的操作环境。
1.3.3 查看Git版本
$ git --version
git version 2.44.0.windows.1
1.4 Git基本工作流程
Gi仓库 | 暂存区 | 工作目录 |
用于存放提交记录 | 临时存放被修改文件 | 给Git管理的项目目录(平时写代码的地方) |
暂存区:在git中,每次存储项目状态,不是简单粗暴地将项目的所有文件复制然后存储起来。这样做是有问题的,当项目状态被多次存储时,Git仓库的文件就会越来越多。又因为是复制全部文件,每次存储项目状态需要耗费的时间也是比较多的。所以实际项目状态的存储不是这样做的。
而是在每次存储项目状态时,只存储被修改过的文件,没有被修改的文件是不存储的。这样就极大减少了冗余文件,减少了保存项目状态的时间。
如果这样的话,问题又来了,Git怎么知道哪些文件被修改过,哪些文件需要保存呢?此时需要开发者告诉Git。因此在git中增加了暂存区的概念。开发者将修改过需要提交的文件先通过工作目录添加到暂存区。如此暂存区中的文件就是被修改过的文件,接下来需要将暂存区的文件提交到git仓库就行了。
实际流程如下图所示。
1.5 Git使用
1.5.1 Git使用前配置
使用git前,需要告诉git你是谁,在向git仓库提交时需要用到。
如果不进行配置,则无法向git仓库提交状态。
为什么存储项目状态同时还要存储提交人信息?使用git实现多人协作同时开发一个项目,如果配置了提交人的信息,就可以知道当前这次提交是谁进行操作的,如果项目出现问题,就可以追溯到提交人。
1 配置提交人姓名
git config --global user.name 提交人姓名
2 配置提交人邮箱(联系方式)
git config --global user.email 提交人邮箱
3 查看git配置信息
global表示全局配置,以后做其他项目,也可以使用当前配置的信息。
注意:
1 如果要对配置信息进行修改,重复上述命令即可。
2 配置只需要执行一次。
也可以去配置文件修改配置信息。
1.5.2 提交步骤
1 git init 初始化git仓库。表示在项目文件夹下初始化一个空的git仓库。
2 git status 查看文件状态。git管理的文件有被管理文件和未被管理的文件两种状态。
3 git add 文件列表 追踪文件。追踪需要管理的文件,将工作目录中需要被git管理的文件添加到暂存区中。
4 git commit -m 提交信息 向仓库提交代码
向git提交代码原则:每次只包含1个功能,不要包含多个功能,或者功能中还包含bug的修改。(这样不利于后期恢复项目状态)
每次提交都要写提交说明(即提交信息),否则提交无法成功。
5 git log 查看提交记录
实践
1 git init
执行git init命令(在git-demo文件夹下执行此命令),会生成.git的隐藏文件夹(半透明状态)。
2 git status
3 git add 将文件添加到暂存区中,就表示文件被git管理了
4 git commit -m 提交信息
将git暂存区的文件提交到git仓库。
5 git log
1.5.3 撤销
- 用暂存区中的文件覆盖工作目录中的文件:git checkout 文件
- 将文件从暂存区中删除: git rm --cached 文件
- 将git仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录: git reset --hard commitID
实践
1 git checkout 文件
场景:功能开发一半时,将工作目录中的文件添加到暂存区,然后回到工作目录中继续开发。过了一会发现需要将代码恢复到功能开发一半时的状态。——用暂存区中的文件覆盖工作目录中的文件
用暂存区的文件覆盖工作目录中的文件
2 git rm --cached 文件名
场景:工作目录中有一些测试文件,不需要加到git仓库中,但是有时会不小心加到暂存区中。此时应该将它从暂存区中删除。git rm --cached 文件名。
注意:执行命令后,暂存区就不存在该文件,该文件也不被git所管理,但是工作目录中仍存在此文件。
rm就是remove的简写。--cached,表示从暂存区中删除文件。
实践
②表示text.html已经从暂存区中删除掉。
注意此时工作目录还是有这个文件。
3 git reset --hard commitID
场景:将git仓库中的项目状态恢复出来,并且覆盖暂存区和工作目录。git reset --hard commitID
git仓库分别有A B C 和D这几次提交。
现在将B项目状态恢复,同时此命令在git仓库中删除了C和D两次提交的项目状态。
使用场景:工作目录中的代码存在问题,git仓库中的提交记录也存在问题,希望将更早的提交记录恢复出来,并且删除那些存在问题的提交记录。
实践
① 表示工作目录和暂存区都没有要提交的文件,工作目录是干净的。说明此时已经将text和list两个文件都提交到了git仓库中。
此时查看提交记录
现在要做的是,将第一次提交恢复出来,用第一次提交的文件覆盖暂存区和工作目录中的文件。
命令:git reset --hard commitID
这里的commitID就是提交ID
执行命令
此时工作目录只有1个index.html文件,说明此时已经将第一次提交的文件恢复出来了。
此时历史提交记录只剩下第一次提交了。因为刚才将第一次提交恢复出来了,因此第一次提交后面的所有提交都被git删除掉了。