赞
踩
目录
Git分为工作目录、暂存区、本地历史仓库这几个区域
工作目录:工作目录是代码的存放位置。由于写代码是经常需要新增和修改的,所以工作目录的代码是经常发生变动的,所以就需要对其进行版本控制,那如何控制呢,就引入了专门的区域进行控制——本地历史仓库。
本地历史仓库:存放不同版本的代码。例如,存放了项目10%的代码,还存放了20%的代码,那么此时这里就存放了两个版本的代码。这个代码是直接存放到本地历史仓库吗?并不是,还需要一个暂存区。
暂存区:这是代码提交到仓库之前的临时存储空间。工作目录中的代码必须先添加到暂存区,由暂存区提交到本地历史仓库中。添加和提交操作都是通过git命令实现
命令 | 作用 |
---|---|
git init | 初始化,创建git库 |
git status | 查看git状态(文件是否进行了添加、提交操作) |
git add | 添加,将指定文件添加到暂存区 |
git commit | 提交,将暂存区代码提交到历史仓库 |
git log | 查看日志(git提交的历史日志) |
1.创建工作目录、初始化本地git仓库
新建一个文件夹;
打开文件夹,鼠标右键选择git hash here;
输入命令git init ,初始化完成
点击查看,勾选隐藏的项目,这时我们就可以看到.git的文件夹,说明当前文件夹已经是一个本地仓库了。
2.新建一个test.txt文件(暂不执行添加操作)
3.使用Status命令,查看状态
创建一个test.txt文件,命令窗口输入git status,查看状态,发现出现红色这样的情况,说明这个test.txt未执行添加操作
4.使用添加命令添加,并查看状态
这时test文件就出现了+符号,需要了解的是,第一次安装不会出现,需要重启才会显示。
这样就添加完毕了,之后在查看它看看什么样,发现这回没有红色提示了
5.使用提交命令,提交到本地历史仓库
需要加上-m,‘ ’内放提交的信息
提交后文件出现了绿色的对勾,说明已经提交到本地仓库了。
6.使用日志命令,查看日志
commit后面的6815cf……是这个文件的唯一索引标识
7.修改test.txt文件
随便编辑一下文档的内容,保存,发现文件变成了红色的感叹号
8.添加并提交,查看日志
再次添加提交,看看是否多了新的日志
这次发现日志中有两条黄色字体的标识信息
创建仓库文件夹
鼠标右键,找到“Git在这里创建版本库”
之后弹出这样的弹窗,这里不建议勾选制作纯版本库,点确定
之后就弹出创建成功的页面,点击进入发现.git文件即创建成功。
创建个测试的文件,右键,找到TortoiseGit,选择添加。
弹出添加成功,文件也出现了加号
添加完成后,右键有个提交
输入提交信息,点击提交
进度条结束,提交成功,关闭即可
这样就表明成功提交
给它随意编辑一下,变成这样
这次右键直接选择提交就可以,不用再添加。输入提交信息,提交。
接下来查看这两次的提交日志,选择右键,TortoiseGit,显示日志
这里可以选择查看提交的版本,以及唯一标识
当我们遇到这种情况,我们在一周前开发的程序,当时只有一个bug,然而,经过这一周不懈努力,我们的bug增加到了10个!而这种情况很常见滴,明显我们更愿意面对一周前的版本,那我们就需要回退到一周前的版本。
这里再介绍一个命令git reflog,它可以查看所有分支的所有操作记录(包括已经被删除的commit记录的操作),并且它的唯一标识更简短。
那如何切换到历史版本呢?这里用到一个命令,git reset --hard (加上版本的唯一索引值)就切换成功了。
- $ git reflog //查看历史版本
- 361e86e (HEAD -> master) HEAD@{0}: commit: commit second file
- 6815cf2 HEAD@{1}: commit (initial): commit first file //假如我们想切换到这个版本
-
- Administrator@DESKTOP-SG1RG4O MINGW64 /d/Documents/Documents/Repository/my_project (master)
- $ git reset --hard 6815cf2 //切换历史版本 后面6815cf2为版本标识符
- HEAD is now at 6815cf2 commit first file //这里提示切换成功
当然,我们也可以再回到比较新的版本,只要是日志上有的,都可以切换。
什么是分支呢?那个例子来说,比如你需要去甲地区拉矿石,还需要去乙地拉石油,你原本只有一辆车,但后来你又顾了一车,然后两辆车可以分开同时去拉货,可能有的快,有的慢,但是最后都拉回来了,最后的结果是你获得了矿石和石油。
总结有这样的规律,多条时间线并行工作,互不打扰,多条时间线可以合并
分支:由每次提交的代码串成一条时间线
分支应用场景
1.周期较长的模块开发
假设你准备开发一个新功能,但是需要一个月才能完成。第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug,那现在就需要放下手中的新功能,去修复Bug。但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。
2.尝试性的模块开发
业务人员给我们提出了一个需求,经过我们的思考和分析该需求应该可以使用技术手段进行实现。但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
分支工作流程
分支是由每次提交的代码串成一条时间线。每次产生新的一个版本,由Master控制,这些版本串成一条线,也就是时间线,而Master指向的是最新的一个版本,当前的时间线就是主线。当我们需要尝试得开发一个项目,假如项目名字叫Dev,Head指向的是当前所使用的分支,这个分支不会影响主线的开发。
那如何合并呢?开发完后我们将Master指向开发完的Dev,这时这个版本就在主线上了,这时,再使Head指向Master,分支也就合并了
对于合并后旧的分支,也没有存在的必要,可以给删掉。
总结下来工作流程就是创建新分支、切换分支、合并分支、删除分支
创建分支git branch + 分支名
通过git branch ……这个命令创建一个名为fenzhi1的分支;界面显示的蓝色字体master就是当前的处于的分支,也可以通过git status命令查看当前处于的分支;那如何查看有哪些分支呢,直接git branch命令,不要加名称,就显示出来已创建的分支。
切换分支git checkout + 分支名
创建了分支后,如何切换到分支呢?输入git checkout + 分支名就切换了
现在处于新建的分支fenzhi1,那么在这个分支下操作文件,主线(master)是否会发生改变呢?我们再创建个test2,添加并提交,然后用 ls 命令查看当前分支有哪些文件。
发现分支下有test.txt和test2.txt文件。再切换到master下,用ls命令查看有哪些文件。
发线主线下文件并没有发生改变,这就验证了主线和分支是并行、互不影响的。
合并分支 git merge+分支名
首先我们得处于主线下,如果不是master,需要切换到master。输入git merge +要合并的分支名,这时会发现分支下创建或修改的文件也出现在主线下了。当然,也可将主线合并到分支上,在分支下输入合并master命令就可以实现,但是不建议这样做。
删除分支 git branch -d + 分支名
这里我一时手乱输入错名字了,它提示这个名字找不到。正确输入后再输入git branch查看fenzhi1已经不见了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。