Git学习第2天(2021-12-07)

9、Git命令-初始化本地库

命令:git init
文件夹:在这里插入图片描述
下面有个项目叫做GitDemo
在这里插入图片描述
现在想要使用git来管理这个GitDemo的项目。
怎么管理呢?
进入GitDemo目录里面点击右键。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后输入命令:git init
在这里插入图片描述
然后GitDemo里面就会多一个.git的文件夹。
在这里插入图片描述
.git文件夹里面的东西
在这里插入图片描述
这里面的文件不要去修改。
这就给本地库初始化好了。
输入:
ll -a
才可以查看到当前在这个项目GitDemo下面有个文件夹.git。
在这里插入图片描述
输入 ll是没有的。
进入.git 目录:
cd .git

查看目录.git里面有哪些东西。
ll
在这里插入图片描述
在这里插入图片描述
【注意】:
git bash里面的命令和linux的命令是通用的!!!

10、Git-命令-查看本地库的状态。

在当前目录:
在这里插入图片描述
GitDemo是一个项目名。
输入命令:
git status
显示三行日志信息。
在这里插入图片描述
第一行:
on branch master
当前本地库在master分支里面。
第二行:
no commits yet
说明目前还没有提交过东西。
第三行:
nothing to commit (create/copy files and use “git add” to track)
目前没有什么东西可以提交。

现在准备新增一个文件,然后再去查看本地库的状态。
1、vim hello.txt
编辑文字:hello git!!!
复制命令:yy
粘贴:p
然后就有10行文字:hello git!!!
在这里插入图片描述
命令:
:wq保存退出
查看文件hello.txt内容。
cat hello.txt
在这里插入图片描述
在gitdemo目录下面查看文件:
ll
在这里插入图片描述
在这里插入图片描述
只有ll -a才会显示.git文件夹。
在这里插入图片描述
现在在本地库GitDemo里面已经有一个文件hello.txt了。
再次查看GitDemo的本地库状态:
git status
在这里插入图片描述
前两行没有变:
1、还是表示当前在master分支里面。
2、当前还是没有提交任何东西
3、【相对刚开始有变化了。】

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

发现一个未被追踪的文件:hello.txt(红色背景)
说明:hello.txt这个文件只是存在于工作区,git从来没有追踪过这个文件。
怎么追踪呢?
使用git add命令去追踪它。

11、Git-命令-添加暂存区

如何将本地的文件(目前在工作区)添加到暂存区。
使用命令:

git add hello.txt

在这里插入图片描述
有警告信息:

warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory

这个意思就是:
因为windows里面换行符是CRLF。
Linux里面换行符是LF
我们在安装Git的时候,选择的是自动转换行末换行符。
程序员不用理警告信息。

这个时候我们已经将工作区的hello.txt【添加到】暂存区之后。
再来查看本地库状态
git status

在这里插入图片描述
1、
2、
3、hello.txt文件由红色变成了绿色。
绿色说明当前Git已经追踪到了这个文件。
这个时候hello.txt文件只是存在于暂存区里面。
暂存区的文件还是可以删除掉的。这个hello.txt目前没有历史版本的记载。
执行:
git rm --cached hello.txt
在这里插入图片描述
【注意】:
这个时候只是把暂存区里面的hello.txt删除掉了。
但是工作区里面的文件没有被删除。
你看:ll -a
在这里插入图片描述
在项目GitDemo里面还是有hello.txt文件的。
说明:暂存区的hello.txt删除了,但是工作区的没有。

删除掉暂存区的文件之后:
再次git status
在这里插入图片描述
发现hello.txt又再次变成红色的。
这时候:hello.txt文件又没有被Git追踪到。

这个删除的演示:
是告诉我们:暂存区的文件是可以被我们删除掉的。

现在:
再把工作区的hello.txt添加到暂存区。
git add hello.txt
在这里插入图片描述
git status
在这里插入图片描述

12、Git命令-提交本地库

现在hello.txt文件已经添加到暂存区了。
之后就是将暂存区里面的文件提交到本地库。形成一个历史版本。
如何提交呢?

git commit -m "日志信息" 文件名

写命令:

git commit -m "first commit" hello.txt

在这里插入图片描述
在这里插入图片描述
这个就是版本号。
一旦把文件由暂存区提交到本地库之后,
再次执行git status。
在这里插入图片描述

现在可以查看版本命令。
1、查看引用日志信息:

git reflog

在这里插入图片描述
前面就是版本号。
当前指针指向了master分支。

2、查看详细日志命令

git log

在这里插入图片描述
这个详细就是可以看到是谁提交了这个版本。
也就是当时设置用户签名的时候起到了作用。
在这里插入图片描述
还有就是通过git log查到的版本号很长,是一个完整版的版本号。
但是使用git reflog查到的就是前七位的精简的版本号。

13、Git命令-修改文件。

1、修改hello.txt
在最后一行添加了22222222222
在这里插入图片描述
保存退出

2、查看本地库的状态
git status
在这里插入图片描述
提示我们文件被修改了。并且提示信息为红色的。
红色代表:修改后的文件还没有添加到暂存区。【git还没有追踪到】
将修改后的hello.txt添加到暂存区。
git add hello.txt
在这里插入图片描述
git status
在这里插入图片描述

第二次将修改后的hello.txt提交到本地库。
git commit -m “second commit” hello.txt
在这里插入图片描述

git里面是按照行来维护文件的。
如果你针对这一行进行了修改,把修改之前的删除掉。然后再把修改之后的插进去。
所以你对一行内容做了修改,会提示你,一行删除,一行新增。

但是我们这里只是再文件的最后一行加上22222
所以提示:一行新增。

我们针对修改之后的hello.txt提交了之后,再看看本地库的状态
git status
在这里插入图片描述

查看简单版的版本信息。
git reflog
在这里插入图片描述
目前已经有两个版本了。
而且指针是指向第二个版本的。
因为当前指针指向第2个版本,所以文件的内容就是第二次修改之后的。
这个时候来看hello.txt文件内容。
cat hello.txt
在这里插入图片描述

同理我们对hello.txt在做一次修改。然后进行第三次提交。
在这里插入图片描述
在这里插入图片描述

14、Git命令-版本穿梭

查看精简版本信息:
git reflog
查看详细版本信息:
git log

我们发现第三个版本改的不好,现在要回到第二个版本:
1、查看历史版本
git reflog
在这里插入图片描述
把第二个版本的版本号复制下来。
f7ea2c7
然后执行命令:
git reset --hard f7ea2c7
在这里插入图片描述
再次查看历史版本
git reflog
在这里插入图片描述
发现目前指针已经指向了第二个版本。(指向了master分支的第二个版本)
所以查看这个时候的hello.txt
应该就是第二个版本提交之后的。
cat hello.txt
在这里插入图片描述
在GitDemo目录下的文件hello.txt的内容也是第二个版本的内容。
在这里插入图片描述
在这里插入图片描述

15、Git-分支-概述和优点

什么是分支?
分支可以理解为副本。
但是实质上是指针的引用。

16、Git-分支-查看&创建&切换

命令:
1、创建分支:
git branch 分支名

2、查看分支
git branch -v

3、切换分支
git checkout 分支名

4、把指定的分支合并到当前分支上。
git merge 分支名

1、查看当前项目GitDemo有哪些分支?
git branch -v
在这里插入图片描述
它会告诉我当前只有master分支且在第二个版本里面。
在这里插入图片描述

2、创建分支。
创建紧急时候修复的热修分支hot-fix
git branch hot-fix
在这里插入图片描述
再次查看分支
git branch -v
在这里插入图片描述

3、当前在master分支上,但是要切换到hot-fix分支上。
git checkout hot-fix
在这里插入图片描述
查看分支:
git branch -v
在这里插入图片描述
查看热修分支里面的hello.txt
在这里插入图片描述
发现是第二个版本。因为当时master里面也是第二个版本。

现在在hot-fix分支里面去修改hello.txt文件
在这里插入图片描述
git status
在这里插入图片描述
git add hello.txt
在这里插入图片描述
git status
在这里插入图片描述
git commit -m “hot-fix first commit” hello.txt
在这里插入图片描述
git status
在这里插入图片描述
cat hello.txt
在这里插入图片描述
git reflog:
在这里插入图片描述

17、Git-分支-合并分支(正常合并)

1、将当前的hot-fix分支切换到master分支

git checkout master

在这里插入图片描述
2、查看master分支里面的hello.txt文件
在这里插入图片描述
我们发现:
hello.txt文件里面的内容不是:
在这里插入图片描述
这是因为当前的分支又切换为了master分支。

演示:分支合并。
命令:
git merge 分支名
将指定的分支合并到当前的分支上。

git merge hot-fix
在这里插入图片描述
【注意】:
当前我们是处在master的分支。
我们希望将hot-fix分支合并到master分支里面。

查看合并后的master分支里面的hello.txt文件。
在这里插入图片描述
这个时候master分支的hello.txt文件已经被合并进来了。
这个是正常的合并,没有产生代码的冲突。
为什么是正常的合并,没有产生冲突呢?
因为当时master分支并没有修改。
然后hot-fix是基于master分支进行修改的。所以不会产生冲突。

18、Git-分支-合并分支(冲突合并)

企业里面出现的代码冲突。

什么时候会遇到冲突?
1、两个分支对于同一个文件的同一个位置都进行了完全不同的修改。
Git无法替我们决定使用哪一个的时候,会报代码冲突。

演示代码冲突:
1、在master分支里面修改hello.txt文件。
在第1行后面加了master test
加之前的hello.txt
在这里插入图片描述
加之后的hello.txt
在这里插入图片描述
修改了文件之后。
1、添加到暂存区。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、提交到本地库
git commit -m “master test” hello.txt
在这里插入图片描述
在这里插入图片描述

cat hello.txt
在这里插入图片描述

3、当前是master分支,想切换到hot-fix分支
git checkout hot-fix
在这里插入图片描述
cat hello.txt
在这里插入图片描述
5、在hot-fix分支上去修改hello.txt文件。
怎么修改呢?
在第二行的后面加上 hot-fix test
在这里插入图片描述
分支hot-fix修改之前的文件:
在这里插入图片描述
分支hot-fix修改之后的文件:
在这里插入图片描述
修改了文件之后,添加到暂存区,提交到本地库
git status
在这里插入图片描述
git add hello.txt
在这里插入图片描述
git status
在这里插入图片描述
git commit -m “hot-fix commit” hello.txt
在这里插入图片描述
git status
在这里插入图片描述

这个时候我们对master和hot-fix的分支里面的hello.txt文件都进行了修改。
现在在hot-fix分支里面的hello.txt文件
在这里插入图片描述

我们现在在master分支,切换为master分支
git chekout master
在这里插入图片描述
查看master分支里面的hello.txt文件
在这里插入图片描述
和hot-fix分支里面的hello.txt文件进行对比。
在这里插入图片描述
现在准备将hot-fix分支合并到master分支里面。
git merge hot-fix
在这里插入图片描述
我们发现:有一个冲突。
自动合并失败了。
在hello.txt里面产生了合并代码的冲突。
而且后面的分支也写得是(master|MERGING)
在这里插入图片描述
说明还没有合并成功。
我们可以查看本地库状态:
git status
在这里插入图片描述
提示信息说:
两个分支都对hello.txt文件做了修改。
所以,git就不敢帮我们自动合并了,需要手动合并代码。

如何手动合并呢?
1、自己打开文件
vim hello.txt
在这里插入图片描述
在这里插入图片描述
Git通过三个特殊符号给我们进行特殊标记。
在这里插入图片描述
HEAD代表当前分支。
所以:
HEAD到==之间是我们当前分支的代码。

==到hot-fix之间的代码是:你要合并进来的代码。

手动对当前的文件进行修改:
在这里插入图片描述
删除这些特殊符号:

修改之后:
在这里插入图片描述
保存退出
:wq

保存完毕之后,需要对文件hello.txt进行add和commit的操作
git status
发现hello.txt文件还是红色的没有被追踪。
在这里插入图片描述
git add hello.txt

在这里插入图片描述
添加到暂存区之后,还需要提交到本地库。
【注意】:
这里提交到本地库不能携带文件名了。
因为此时两个分支都修改了hello.txt文件。

尝试一下:带上文件名。
git commit -m “merge test” hello.txt
在这里插入图片描述
它会报一个致命的错误:
在一次合并的时候,不能做一个不完全的提交(因为它不知道到底是哪一个hello.txt)

所以:提交的时候,不携带文件名。
在这里插入图片描述
这个时候合并成功。而且后面的也变为了master,不再是master|merging了
在这里插入图片描述
这个时候就说明,hot-fix分支就已经成功的将代码合并到了master分支里面。手动解决了代码的冲突问题。
git status
在这里插入图片描述
cat hello.txt
在这里插入图片描述

【注意】:
我们是将hot-fix分支的代码合并到master。
所以改变的只是master分支代码,不会改变hot-fix分支。
1、切换到hot-fix
在这里插入图片描述
查看文件:
在这里插入图片描述

s

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值