【Git】实用教程
参考网站
参考视频(B站)
【Git教程】《极客Python之Git实用教程》(小甲鱼)
Git实用教程1:世界上最先进的分布式版本控制系统简介
Git的功能:
- 代码管理
- 版本迭代
- 方便多人合作
Git的诞生主要是当年Linux开发时,众多人一起开发,不好管理,当时候的BitKeeper(当时候代码管理的一个版本控制系统),其商业公司(BitMover)商量合作进行代码管理。但是最终因有人想破解其BitKeeper,导致谈判决裂导致逼着Linus Torvalds自己用了十几天时间开发了Git。
- 2005年4月3日:Linus 开始开发 Git
- 2005年4月6日:Git 项目对外发布
- 2005年4月7日:Git 实现作为自身的版本控制工具
- 2005年4月18日:实现多分支合并
- 2005年6月16日:Linux 内核 2.6.12 发布,Git 已经可以用于维护 Linux 核心源码
- 2005年7月26日:Linus 功成身退,将 Git 的维护工作交给另一名 Git 的主要贡献者 Junio C Hamano
以上就是诞生的原因了。
Git实用教程2:安装Git
一、安装:请看上面链接
二、配置相应的 用户名 以及 e-mail
Git实用教程3:理论基础
SVN 作为一个集中式的版本管理系统,每次版本更新都是只改动一小部分,最后装订成册。
但是与之相对的Git版本管理系统,改动就是先是整个复制一份,再把对应的位置改一下。
工作区域(Working Directory)就是你平时存放项目代码的地方。
暂存区域(Stage)用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息。
Git 仓库(Repository)就是安全存放数据的位置,这里边有你提交的所有版本的数据。其中,HEAD 指向最新放入仓库的版本(这第三棵树,确切的说,应该是 Git 仓库中 HEAD 指向的版本)。
Git 的工作流程一般是酱紫:
1. 在工作目录中添加、修改文件;
2. 将需要进行版本管理的文件放入暂存区域;
3. 将暂存区域的文件提交到 Git 仓库。
Git 管理的文件有三种状态:
1. 已修改(modified)
2. 已暂存(staged)
3. 已提交(committed)
实战测试
1、新建一个大本营:桌面上创建 Git_Test
2、进入命令行模式
cd Git_Test
git init
3、观察其文件内的隐藏文件.git ( Mac 需要 Command + shift + ">" )
4、在文件内新建一个 Readme.md 文件
git add README.md
git commit -m "add a README file"
效果图:
总结
将工作目录的文件放到Git仓库只需要两步:
1、git add “文件名”
2、git commit -m "你干了啥"
Git实用教程 《查看状态》
主要命令:
git status
git reset HEAD
实操演练:
1、在工作目录下添加文件“LICENSE”:
2、然后,查看当前状态,利用 git status 命令;
解析:由于工作目录下的“文件”增加,以至于git 的状态下,发现有一个未被跟踪的文件,并提醒着用户,建议用"git add <file>" 把文件给加入到暂存区域内。
3、添加到暂存区,并查看当前状态
git add LICENSE
git status
解析:一旦添加到暂存区就会被跟踪,已经被跟踪的文件颜色变了(所以就被 绿了 ),
但同时可以提醒你,可以用"git reset HEAD"来
4、利用reset命令,再次观察其状态;
git reset HEAD
git status
解析:就是撤回刚才的操作,把缓存区的内容清除,最后回到刚才的状态,LICENSE还是未被标识。
5、如果直接 add 到暂存区,再直接commit后效果如下图:
git add LICENSE git commit -m "add a LICENSE file"
以上5个操作都是对于工作目录下,整一个文件添加的情况进行讨论的。
以下是对文本内容上进行修改
再对查看状态进行实操演练
1、修改文本内容
2、查看当前状态
git status
解析:
1、提醒“LICENSE”文件已被修改,"modified"
2、给出两条建议:
git add <file>
git checkout
第一个建议是,把修改过后的 LICENSE 啥都不管往第二棵树(暂存区)放git add file
第二个建议是,把之前修改前的LICENSE 恢复回来,即工作目录下的LICENSE可能会被修改。
3、尝试使用checkout演示其效果
所以说这个命令一定要慎重,慎重!!!
4、尝试使用git add <file>观察其效果
再观察其状态:发现又被绿了。说明这个修改也已经放到暂存区里。
5、再次修改LICENSE内容,观察其状态。
解析:
一定需要区分开,这两个LICENSE是不一样的,前者是在暂存树上的LINCENSE的,即没有最后一行"add the second line",后者则在工作目录下,有最后一行的LICENSE。所以遇到这种情况说明有两个不同版本,通常都是根据工作目录版本为准,所以下一步是进行覆盖。
6、覆盖暂存树上的LICENSE
直接使用命令: git add LICENSE 即可
7、将暂存树的LICENSE,commit到第三棵树(git 仓库)
查看历史记录
主要命令:
git log
具体效果:
解析:
校验码:唯一标识,通过刚才的内容进行hash之后的结果
作者,邮箱:之前git 配置时的用户名以及邮箱
时间
时间顺序:从近到远
还有commit时的提示词。
Git实用教程 回到过去
三棵树的情况
Repository(仓库内的情况)
当前三棵树,以及对应的内容和版本号 如下图:
快照:即Git仓库中的版本号
主要命令
git reset HEAD~
#返回到第N个之前的版本
git reset HEAD~n
#版本号显示
git reflog
#回滚三部曲
git reset --soft HEAD~
git reset [--mixed] HEAD~
git reset --hard HEAD~
#回滚制定快照
git reset [版本快照,即hash后的标识码,例如:bd2ab20]
#回滚个别文件(不会改变HEAD指针的指向)
git reset [版本快照] [文件名/路径]
#往前滚就是指定快照进行reset
git reset [版本快照]
操作演练
1、当执行完git reset HEAD~后的显示图如下
reset命令回滚快照三部曲:
-
1、移动HEAD的指向
git reset --soft HEAD~ -
2、将快照移动到暂存区域 (mixed,默认)
git reset [--mixed] HEAD~ -
3、将暂存区域还原工作目录
git reset --hard HEAD~
回滚制定快照
git reset [版本快照,即hash后的标识码,例如:bd2ab20]
回滚个别文件(不会改变HEAD指针的指向)
git reset [版本快照] [文件名/路径]
往前滚就是指定快照进行reset
git reset [版本快照]