从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一下,即可完成分支的冲突和并问题。

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

码字不易,点个赞再走吧

相关推荐
悟空20166 小时前
001、Git开发流程规范
git
Li小李同学Li6 小时前
git学习【持续更新中。。。】
git·学习·elasticsearch
AI逍遥子7 小时前
如何从github上clone项目
github
iBaoxing7 小时前
如何在 Fork 的 GitHub 项目中保留自己的修改并同步上游更新?github_fork_update
github
晨春计8 小时前
【git】
android·linux·git
念幽8 小时前
Git常用命令
git
神技圈子9 小时前
【git系列】git中的那些迷惑的术语以及概念详解
git
benben0449 小时前
Photoshop使用方法大全
git
ou.cs10 小时前
git 删除远程分支的几种写法
git
atlanteep10 小时前
Linux·权限与工具-git与gdb
linux·git