轻松搞定 Git

浅浅的花香味﹌ 2024-03-17 12:10 223阅读 0赞

目录

前言

一、下载

二、安装

三、基本使用

四、git的基本原理

五、通过案例学习git

5.1 创建空的项目文件夹

5.2 初始化git

5.3 创建项目文件

5.4 查看git状态

5.5 添加到暂存区

5.6 提交到本地仓库

5.7 查看git提交到本地仓库的记录

5.8 .gitignore文件

六、分支

6.1 查看分支

6.2 创建一个新分支

6.3 一个分支新增观察另一个分支的情况

6.4 切换分支

6.5 删除分支

6.6 合并分支

6.7 解决冲突

6.8 强制删除分支

6.9 开发中分支使用原则与流程


只需花几十分钟跟着教程一步一步跟着敲,即可轻松掌握git。

前言

git,开源的分布式版本控制工具,可以有效、高速地处理从很小到非常大的项目版本管理。是目前企业多人协作项目开发中,最常用的版本控制工具。

以前流行svn,就是那个乌龟logo,但是现在很少用了。现在基本都是用git。

一、下载

Git官方下载地址:https://git-scm.com/

c154ad88265940869c43e1aa1d2d840e.png0b1976fdc0b24810ad3a43af67af2dc6.png

二、安装

安装步骤超级简单,安装过程中的选项默认的就可以,直接下一步下一步就可以了。

三、基本使用

安装完成后,点击桌面右键会发现新增了两个Git的菜单。而我们要用的是命令行工具,即Git Bash Here。

689866d742bb4f0cb680ed9c573858bd.png

c4df4e36536046129695d86a4647b54c.png

我们Linux中的命令,这里面也基本能用。这里就不详细说明了,不会的去复习一下linux基本操作。

  1. cd
  2. ls
  3. ll
  4. touch
  5. mkdir
  6. vim
  7. clear
  8. ......

四、git的基本原理

主要围绕这张图展开学习

35a2ca8de34544c9bd349b447d0c98c0.png

查看git的配置信息

  1. git config --global --list

1bda0be29ea84f0084918cd43b2bd54c.png

如果第一次安装,我们还需要设置一下

  1. git config --global user.name "yourname"
  2. git config --global user.email "email@xxx.com"

ok,以上设置完成了。下面我们通过一个案例开始学习git的基本用法

五、通过案例学习git

5.1 创建空的项目文件夹

先创建一个空的项目文件夹

501bfff59200445d8b1070920f464c75.png

5.2 初始化git

然后初始化git,使它被git管理。

  1. git init

50c1c326bab746f59b959789fac1e20f.png

72ce9c2214d142b4a342baf00a382cef.png

15de8e59a0864e46ab0a465a3dd5c19b.png

5.3 创建项目文件

根据前面的git原理图,当前pps-mall目录下就被称为工作区。

目前,我们工作区中还没有任何文件,除了.git。

下面,我们随便创建一个文件或者文件夹。

5b05d6876e8c4fc180ef9d66da3db70b.png

bb847d7e49af4e2f9c2cd65915ab1c3c.png

当然怎么创建随你,可以使用我刚才演示的命令行的方式,也可以用正常普通创建的方式。

5.4 查看git状态

  1. git status

8df0c42f60f5443d8287e887f2c749e4.png

5.5 添加到暂存区

所谓暂存区,前面也说了,就是提交到本地仓之前的缓冲区。

我们通过如下命令,将当前未被跟踪的文件加入缓冲区

  1. git add 文件名

或者使用通配符 . 添加当前路径下的所有内容到暂存区 (未被git管理的除外,这个后面说)

  1. git add .

a8e3e49253034c40964005dc8b39a64b.png

5.6 提交到本地仓库

  1. git commit -m "说明信息"

" class="reference-link">48296b84439b4ef59701a482b3f278d3.png

5.7 查看git提交到本地仓库的记录

  1. git log

3f4ece4bfe5641139d10364cdc8d7d0c.png

5.8 .gitignore文件

如果我们希望工作区中某些文件不要交给git进行管理,难道我们要一个文件一个文件的git add吗?

这样太麻烦了,依然可以通过git add .完成。

只需要在工作区的根目录再添加一个.gitignore文件,然后在文件中设置好对应需要忽略的文件即可。

f7134d72d0f84ab7b2780eef67dc098b.png

忽略以txt结尾的所有文件

594105cbbca242f78ca60f6e632b8420.png

ps:一般在开发中,需要忽略哪些文件都是固定的,一般不需要手写的

然后我们再创建一个txt文件

7490f22312db4dcc9807f67407bf07ab.png

查看一下状态,发现只发现了我们.gitignore文件,没有发现我们创建的笔记.txt文件。说明配置的忽略生效了。

9538931e51ea417086244736b09b8450.png

在提交这个.gitignore文件之前,我们再来演示一下修改文件。

03555af1b1d441a7b9cb7139394f75e7.png

e7401d242294492cb7a9f98a97476609.png

接着我们准备把当前项目的所有内容提交到本地仓库。可以自己想一想步骤,然后再往下看

586da3a1aefe4f7e9962eadaef6ef968.png

六、分支

6.1 查看分支

我们想知道当前有哪些分支,可以使用命令

  1. git branch

da11439a6be44ff7a91501293433ac67.png

因为还没有新建分支,所以只有一个master分支。

6.2 创建一个新分支

  1. git branch 分支名

a02e1e06830846e285fcb2a5d2c5aa31.png

我们再查看一下分支,就出现了我们新增的分支了

9f75941a58094dc0988726437c5d26e6.png

查看一下这两个分支它们分别都有哪些提交

1b76235a08d041f78d71b29d1658c7f5.png

我们发现新增的这个sht-dev本地分支默认继承了当前的master分支。

也就是说,你当前在哪个分支下创建的新分支,新分支就会和当前分支一样。

6.3 一个分支新增观察另一个分支的情况

我们在master分支中,随便创建一个文件,然后提交到本地库。

c4d4187625364317ad78783dec5017f9.png

然后我们查看本地仓库提交记录,发现当前master分支走到了sht-dev分支的上方。

4a8f4edf9299443d85273333fddf122f.png

我们看看当前的工作区目录。

db2e459d15e1496c98ec56860da947b5.png

6.4 切换分支

  1. git checkout 分支名

8fdb5bbed7b44a5fb2db3327349782b8.png

然后我们再查看当前工作区,发现刚刚在master分支下创建的Hello.java文件没有了。

eb8e25de15414c869d47758e49d53b4b.png

想一想,如果我们切换回主分支,是否会出现Hello.java文件呢?

答案是肯定的。

343b2a2b807f4bd8ab575260dd43e9cd.png

a7d80cea1adf4bdeb3dc0f8d48181e8c.png

6.5 删除分支

  1. # 删除分支时,需要做各种检查
  2. git branch -d 分支名
  3. # 不做任何检查,强制删除
  4. git branch -D 分支名

不能删除当前分支,只能删除其他分支

54d70f4390484d62a5d94bcb0fb54b00.png

如果要删除当前分支,必须先切换到其他分支,比如我们这里想删除sht-dev分支,可以切换到其他分支比如master分支,然后再执行刚才的删除命令。

faba92f63fae4838b3f135a1ef477d6c.png

6.6 合并分支

我们先创建两个开发分支,模拟各自做各自的任务

3db4f934c46a47ebaf59981307a4322e.png

206eced28e7d4d518ba27e5b0c52eb2d.png

0525b7f8e9ab46dfa82d2d994e434792.png

7b2e0b924ee24be6b2d827905fd77004.png

4d5c6a57ca1e4a47a7696ce0693eb05b.png

fdf75217b81144a7af7a8aff4c326e4c.png

f4019dbe2b464320ab15fdbfca95662e.png

然后切换到msj-dev新增它的工作内容到本地库

1be51a72d46f4523a16c5af10d881725.png

b1f9546baed043caaf6e7e93f381425b.png

然后回到master分支,进行合并。

意思是准备将其他分支合并到master分支上。

945114f003d743e3939aa57c6533b310.png

3d573bab16ea4e0cbf568204fbd8b510.png

44b3d0eae8744247b56c275936cbe4ef.png

1527545f8a23479e802b281c61c5a5aa.png

a4c90134acef409984725a0ae4418d4b.png

8b8be8e0076d4448a2ace25e4a4b5221.png

e2f6c4b4329e43deaf3c489cf234f851.png

通过以上案例及说明,每个人开发完了,可以各自合并到主分支上了。当然实际开发中一般不会直接合并到主分支上,而是总的开发分支。这个不同的公司有所区别,根据实际情况而定。

6.7 解决冲突

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解 决冲突,解决冲突步骤如下:

  1. 处理文件中冲突的地方

  2. 将解决完冲突的文件加入暂存区(add)

  3. 提交到仓库(commit) 冲突部分的内容处理如下所示:

为了不影响看效果,我们先删除分支

c5ed9f783b3d4cddaa3f03667dacf196.png

然后随便再创建一个分支,比如叫qwl-dev

e54a6203d1f94f77ac45aa10f9da5b90.png

然后我们切换到qwl-dev分支,修改一下README.md文件

f4f4abafdb2641edb235ac717ef0d066.png

45643078f43742e4bbbadd93ebf979c8.png

然后提交到本地库

00b80249f87944d59ac715695445b085.png

切换回master分支,准备合并qwl-dev分支

d7ab1adcc6084b9ea874af8a84328b58.png

没有问题合并成功。

当然没问题了,合并冲突是双方都有修改才会冲突,master分支根本没动它,所以不会冲突。

下面我们模拟冲突的情况:

切换到qwl-dev分支,将README.md的地址修改为qwl.com并提交到本地库。

然后切换回master主分支,将README.md的地址修改为master.com并提交到本地库。

最后在master分支上,尝试合并qwl-dev分支。看看效果,这时候应该就会出现合并冲突的情况。

8d4a420ccc79410cb0211ad00f54c5c6.png

15170b5220c440ccba473487aa55217e.png

我们看看冲突的这个文件

51fb492bda0843a7883e838864be7d97.png

上面head到=号之前的是当前分支的修改,=号到>>>>qwl-dev之间的是qwl-dev分支的修改。

这个时候需要我们手动的处理分支,到底使用哪个由自己定。当然实际开发中,肯定最好是和开发该模块的同事协商决定,防止出问题。

选择好以后,直接去掉留下想要的部分,比如我们就要qwl.com

553a1fbdc40247c28075bf6572463edc.png

然后继续先提交到本地仓

d9f8edef99d249d0817e3a6746852dd9.png

这样冲突就解决了,我们看看本地仓提交记录

97251589c93b44788de3edbc7322240c.png

6.8 强制删除分支

前面提到了,我们可以使用git branch -d 分支名删除某个分支。

这种方式会做写检查。

假如:我们的分支提交到了本地库,但是没有合并,那么我们是无法使用上面的命令删除的。

它会提示你当前分支还没有merge合并,如果你想删除的话,请使用git branch -D 分支名。

举例说明

064a7dfd89504e8cb55ee71a56ff978b.png

be2e78a3367f4ab5b123060427b9a12f.png

da0d099269e04a27b4cb68c9f341ff8b.png

6.9 开发中分支使用原则与流程

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

在开发中,一般有如下分支使用原则与流程:

master (生产) 分支

线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;

develop(开发)分支

是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线 要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。

feature/xxxx分支

从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完 成后合并到develop分支。

hotfix/xxxx分支

从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支。

还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等 等。

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 轻松EasyUI

            最近在学习easyUI,顾名思义easyUI很简单,总结一下我在学习EasyUI的时候是怎么学习的,学习的时候主要从四个方面入手:         ①什么是

    相关 Makefile 如何轻松

    最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。             于是google到