从0到1学会Git(第二部分):Git的本地操作和管理

写在前面:本文介绍了在本地仓库进行文件的处理以及本地的合并等操作。

前置知识:文件可以处在三个区域,分别为工作区,暂存区和本地仓库,我们此文的目标即是将文件存储在本地仓库中。我们可以将文件的区域理解为,cpu中,内存中,外存中。我们最终的目的是为了将处理的文件和数据放在"外存中",方便我们进行管理。即工作区->cpu中,暂存区->内存中,本地仓库->外存中。

1.本地仓库的搭建

1.1使用命令:
java 复制代码
git init
1.2操作流程:

我们先找到(或者新建一个)一个文件夹,作为我们本地的Git仓库目录

进入到这个文件夹以后,打开gitbash界面(右键gitbash)。执行1.1所使用的命令。

然后我们可以使用ll 指令来看一下是否创建成功。可以看到,我们已经创造了一个.git文件夹,表示我们的git本地仓库已经创建完毕了

效果如下:

2.新建一个文件提交到本地仓库

所使用到的命令(我们假设我们所提交的文件为file01.txt):

java 复制代码
git add file01.txt
//也可以使用下列方式,把所有的文件都放到暂存区中
git add .
java 复制代码
git commit -m 'test'

使用流程:

首先需要知道的是,在与本地仓库操作有关的过程中,文件可以位于三个区域,分别为工作区,暂存区,仓库 (需要记住,很重要)。我们在对文件进行编辑的时候我们的文件位于工作区,对文件的建立和删除等,我们的操作都位于工作区,然后我们使用add可以将其提交到暂存区,使用commit操作可以将其放到我们的本地仓库中来。

首先使用git add file01.txt将文件放到暂存区中来,然后我们可以使用git status 指令来看一下我们文件所处的状态,可以看到以下效果图

然后我们可以使用git commit -m "xxxx"将我们放在暂存区的文件放到仓库中来。后面的""里面的内容表示的是注释的意思,即我们将其提交以后,以后在进行查找的时候,可以知道这次提交的一些注释。比如下图中的add file1表示的就是我们这次操作的目的是新增了一个文件file1进来

然后我们就已经将数据提交到本地仓库里了

再次使用git status我们可以发现,暂存区中已经没有数据了。

3.查看文件数据和相关的信息

java 复制代码
git log

4.修改文件并提交到本地仓库

使用指令同第2部分:

java 复制代码
git add file01.txt
//也可以使用下列方式,把所有的文件都放到暂存区中
git add .

//
git commit -m 'test'

首先我们打开我们的file01.txt文件,然后在里面输入以下语句,然后进行保存。

然后我们使用指令来查询一波

java 复制代码
git status

可以看到我们的文件再次进入到了工作区

然后我们将其加入到暂存区

java 复制代码
git add .

可以看到我们已经把数据添加到了暂存区

然后我们将数据提交到本地仓库

java 复制代码
git commit -m "update file01"

可以看到我们的数据已经提交完成了

5.查看提交文件日志

使用到的命令:

java 复制代码
git log [option]
option值 效果
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图片的形式进行显示
--decorate 新版git默认自带的,如果是mac本,需要加上这个

6.版本回溯

使用到的命令:

java 复制代码
git reset --hard commitID

使用流程:

其中的commitId可以使用git-log或者git log来进行查看

我们首先查看我们的commitID(前面的e5775cf就是我们的commitID)

然后进行还原到初始状态

再次打开file01.txt文件查看

可以看到我们的文件已经恢复到初始状态了

7.设置不被git管理的文件

使用到的命令:

java 复制代码
touch .gitignore

使用过程:

首先我们在文件夹下面创建一个新的文件,使用touch .gitignore。

然后可以使用下面的指令也可以自己右键新建一个文件

java 复制代码
touch file02.a

然后我们使用编辑器(vi或者vim或者txt文本编辑器都可)在.gitignore文件里面进行编辑

输入完成后退出保存

使用git status查看状态

发现我们的file02.a不在状态中,即实现了被忽律的效果

8.Git分支常用指令

使用到的命令:

java 复制代码
git branch
git branch dev01
git checkout dev01 //切换分支命令

使用流程:

如何查看我们有几个分支:git branch

如何创建一个新的分支:git branch dev01。注意,虽然我们创建了一个新的分支,但是我们没有跳转到这个新的分支,仍然位与我们之前的分支上面。

我们首先创建一个新的分支。

可以查看到,我们现在有两个分支

如何查看分支上的操作(这个git-log是在第一篇文章里面讲到的集成操作,即使用一个简便的代表指令可以表示更多的效果):

JAVA 复制代码
git-log

我们新建一个file2.txt文件,并把它上传到本地仓库,然后查看分支的情况,可以看到以下情况。

发现我们的文件只传到了master这个分支,而没有传到dev01分支。我们打开我们的文件夹(此时位于master分支下面),可以看到以下效果:

我们可以看到现在master下面有这些文件,然后我们切换到dev01分支

使用下列命令进行切换

java 复制代码
git checkout dev01

其中dev01就是你所想要切换到的分支方向,可以看到如下效果:

可以看到,我们刚刚所新建的file2.txt文件在dev01分支下并没有存在

9.分支合并

使用命令:

java 复制代码
git merge 分支名称(b分支的名称)

使用流程:

当位于a分支时,如果需要将b分支下面的文件和代码合并到分支a里面来,使用git merge b 即可。

10.删除分支

比如我们需要删除b1分支,可以使用以下命令:

java 复制代码
git branch -d b1

如果删除不了,使用强制删除

java 复制代码
git branch -D b1

使用-D的场景,比如我们在a的分支下创造了一个a.txt文件,并且将它提交到了本地仓库,但是我们并没有把这个分支和master分支进行合并,然后我们直接将a分支进行删除,他就会报错,因为他会理解为你的文件还没有上传到master分支,属于是误操作,这个时候需要删除分支的话,就需要使用-D来进行删除

11.分支冲突问题解决

冲突问题:当a分支下对文件a的第一行加了一个字,而b分支对文件a的第一行加了两个字,我们在进行合并的时候就会出现分支错误。
个人心得(仅供参考) :当我们将b分支合并到a分支的时候,如果出现了冲突报错,其实我们此时已经完成了合并到了工作区的工作。因为有冲突,所以他默认你需要对冲突进行处理,所以没有直接合并到本地仓库,而是直接合并到了工作区。他会把冲突的部分的代码全部留下来,让作者进行抉择,此时直接提交到暂存区和本地仓库即可实现分支的合并,如果需要处理,也可以在文件中处理完毕再提交到本地仓库。

实战解决流程:

我们直接在这里创建一个新的分支(使用-b即如果没有这个分支,我们直接创建一个新的分支并跳转到这个分支)

java 复制代码
git checkout -b dev

首先我们位与dev分支下面,我们切换到master分支,我们打开file01.txt文件

将里面的句子改成如下:

保存之后退出

然后查看完状态后,我们将其提交到我们的本地仓库

然后我们切换到我们的dev分支下面来,打开我们的file01.txt文件进行查看,可以看到里面的内容如下:

属于默认的file01.txt的状态,我们将其改成如下,

保存之后我们上传到我们的本地仓库

现在我们可以看到,dev和master属于两个不同的分支,他们没有被合并到一起。

然后我们切换到master下面,将我们的dev分支合并到master下面来

java 复制代码
git merge dev

可以看到,我们的合并失败了

根据提示可以知道,我们的file01.txt文件在合并的时候发生了冲突,导致了合并失败。

我们打开file01.txt文件,可以看到里面发生了变化,已经变成了这个样子。

HEAD表示的是当前的分支,dev分支表示的是dev分支

我们直接在里面修改并保存我们想要的内容

然后在add和commit一下,即可完成分支的冲突和并问题。

可以看到,我们已经实现了分支的合并。

码字不易,点个赞再走吧

相关推荐
DN金猿38 分钟前
git命令恢复/还原某个文件、删除远程仓库中的文件
git
DWei_GaGa4 小时前
Git:查看分支、创建分支、合并分支
git
sdaxue.com4 小时前
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
数据库·github·网站·帝国cms·认证码
m0_748247554 小时前
github webhooks 实现网站自动更新
github
涵信5 小时前
Windows11 安装 Ubuntu-20.04,同时安装配置 zsh shell,配置 git 别名(alias),大大提高开发效率
linux·git·ubuntu·bash
张国荣家的弟弟5 小时前
【Yonghong 企业日常问题04】永洪BI可视化工具Linux部署全攻略(部署详解版)
linux·运维·github
油泼辣子多加7 小时前
2024年12月23日Github流行趋势
github
喝鸡汤8 小时前
一起学Git【第五节:git版本回退】
git
lsalp9 小时前
OpenAI于2024年12月21日在GitHub上正式发布了实时嵌入式SDK。支持ESP32-S3
物联网·github·esp32-s3
web Rookie9 小时前
Git的简介
git