当前位置:   article > 正文

教你简单学git(从零基础到进阶)_git学习

git学习

前言

什么是Git?

当你刚刚接触到程序开发行业,别人通常都会对你说:git就是用来保存代码项目的,防止代码丢失。

是这个道理没错,但是并不准确。

Git是一个分布式版本管理系统,是为了更好地管理Linux内核开发而创立的。

Git可以在任何时间点,把文档的状态作为更新记录保存起来。因此可以把编辑过的文档复原到以前的状态,也可以显示编辑前后的内容差异。

简单的说:

Git能够保存不同时间提交的文件,知道每个保存阶段的修改内容,保存文件的人员信息,根据对应信息可以自己决定是需要保存、恢复到某个时间点的文件状态,或者是更新等操作

为什么需要Git?

不单单是代码程序项目,就以我们常见的txt文件举例:

要把文档还原到编辑前的状态,大家都是怎么做的呢?

最简单的方法就是先备份编辑前的文档。

使用这个方法时,我们通常都会在备份的文档名或目录名上添加编辑的日期。但是,每次编辑文档都要事先复制,这样非常麻烦,尤其是修改了东西越多,保存的备份文件越多,导致想恢复到指定修改的文件的内容,也很容易出错。

再加上,如果毫无命名规则的话,就无法区分哪一个文档是最新的了。而且,如果是共享文件的话,应该加上编辑者的名字。还有,那些文档名字没有体现修改内容。

另外,如果两个人同时编辑某个共享文件,先进行编辑的人所做的修改内容会被覆盖,相信大家都有这样的经历。

Git版本管理系统就是为了解决这些问题应运而生的。

准备工作

Git工具安装

为了能够在你的本机进行Git的操作,你需要先安装一个Git工具
图标长这样
在这里插入图片描述
Git工具下载

这里给大家推荐Git工具一个安装教程
Git工具安装教程

当下载安装完成之后

在桌面鼠标右键会出现
在这里插入图片描述
Git GUI Here
Git Bash Here
通常情况下,点击Git Bash Here通过命令行进行git的管理

不过,需要一提的是,当你安装了Git工具,在安装过程中勾选添加到path进行配置git后,
就可以直接通过cmd命令行进行执行git命令

新建仓库和Git工具账号登录

首先在Giteegithub任意一个gitee网址创建账号
在登录的情况下,创建一个仓库(以下以gitee举例)
点击+号,点击新建仓库
在这里插入图片描述

然后输入仓库名称、介绍,初始化仓库,点击创建即可

在这里插入图片描述

完成后,点击个人主页–>仓库,查看创建的仓库

在这里插入图片描述

点击去刚刚创建的仓库,点击克隆,复制git地址

在这里插入图片描述
然后自己选择一个文件夹或者创建一个新文件夹,在该文件夹鼠标右键,点击git工具Git Bash Here
鼠标右键输入如下

git clone git仓库地址
  • 1

即可将仓库克隆到自己的本地文件夹

当你第一次克隆的时候,一般会跳出来需要登录,直接输入你克隆项目的账号和密码即可

Git工具账号切换

当你工作时间比较长久之后,可能你不是从一个git网站上进行克隆项目,但是不登录,
进行提交git代码会导致没有权限操作的问题,这个时候就需要切换账号了

切换账号命令
git config --global user.name "用户名"
git config --global user.email "注册git的邮箱"
  • 1
  • 2
  • 3
查看用户名
git config user.name
查看用户邮箱
git config user.email
  • 1
  • 2
  • 3
  • 4

入门篇

Git基础介绍

Repository

Repository 是Git的数据库,通常也被称为仓库

它有两种:远端数据库本地数据库

  1. 远端数据库:配有专用的服务器,为了多人共享而建立的数据库。常见的有Gitee和GitHub。当然除此之外,一般互联网公司,内部有专门搭建自己的Git数据库,只供内网专用,公网无法访问。
  2. 本地数据库:为了方便用户个人使用,在自己的机器上配置的数据库。

本地数据库的创建

当你安装了Git,之后就可以通过命令行创建自己的本地git版本库了。

  1. 新建一个文件夹作为本地库的创建路径
  2. 在该文件执行命令
git init
  • 1
  1. 以上就已经创建完成
    会提示你Initialized empty Git repository in 什么什么路径
    说明git就把仓库建好了,而且告诉你是一个空的仓库。

Git基础操作

git克隆

从上面,我们了解到,将git的项目复制克隆到我们本机电脑的命令为

git clone git项目地址
  • 1

git添加和提交

在对文件进行修改后需要对git进行添加和提交代码
通过命令行

git add 文件名
  • 1

进行提交单个修改的文件

git add *
  • 1

进行提交所有修改的文件

添加完成后,你就可以进行提交代码,注意,提交代码应该是需要填写你具体作出了什么修改。
该文本提示不仅仅可以让自己知道有哪些改动,也便于多人开发进行查找记录

git commit -m "代码提交信息"
  • 1

到这一步,你只是把代码提交到了本地数据库,这个时候,并没有到远端git上。

git推送

在入门篇,其实应该需要讲到分支,但是作为新手,如果一来就直接讲分支,就比较复杂,所有在这边就只简单提一句:

在创建仓库的时候,默认会创建一个master主分支,你只需要把代码提交到主分支即可,主分支名称一般都是master

切换到对应分支之后,使用提交命令

git push origin 分支名称
  • 1

注意:推送的前提,是你有进行修改文件的添加和提交

git更新

假如你是多人合作进行开发项目,当你克隆了项目,但是克隆之后别人又修改了代码,并且提交到了远端git,
为了保证你的代码是最新你需要进行更新自己的代码

更新git命令

git pull
  • 1

到这里的时候,就有人可能会问,明明已经有克隆命令,直接重新克隆一份就好了。

陈然,克隆命令也是可以获取最新的代码的,但是不要忘记,万一你也有修改代码呢?你的这些代码需要提交到远端呢?
总不能克隆一下项目,就重新写一遍?而且,就算是,你说也可以把文件替换一下,把新的文件复制一下再提交到远端
也是可以的,但是这样的做法非常的麻烦

git log

假如,你想了解git的提交历史记录等信息,可以使用命令:

git log
  • 1

进阶篇

工作树和索引

在Git管理下,大家实际操作的目录被称为工作树
如以下结构

--A文件夹
		--B文件
		--C文件
--D文件夹
		--E文件
		--F文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

假如你实际对A文件夹下的B文件进行了修改,那么B文件就是对应的工作树

数据库和工作树之间有索引,索引是为了向数据库提交作准备的区域。

Git在执行提交的时候,不是直接将工作树的状态保存到数据库,而是将设置在中间索引区域的状态保存到数据库。
因此,要提交文件,首先需要把文件加入到索引区域中。

所以,凭借中间的索引,可以避免工作树中不必要的文件提交,还可以将文件修改内容的一部分加入索引区域并提交。

也就是

工作树(修改的文件) ----->提交到暂存区 --------> 把暂存区的内容提交到远端git

分支

什么是分支?
作为进阶篇,相当多的篇幅都需要了解分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。
在其他分支上进行开发,完成后再将它们合并到主分支上。

当我们在开发的时候,如果是简单的项目,直接在master主分支上进行提交,把代码推送到远端git是没有任何问题。

但是,你需要考虑,当正式环境已经有一个版本了,假如现在有两个人同时对该项目进行修改和开发功能,
其中一个人的修改和开发完成了,需要发布到正式版本,另一个人还没修改开发完成或者修改完成了,但是功能和现有的冲突,
一旦更新服务,会导致出现各种问题。

所有我们需要有分支进行提交我们的代码

一般做法是这样:


  1. master分支作为主分支,作为正式环境的代码
  2. 新建dev分支作为开发环境分支
  3. 当需要开发新的功能的时候,以功能命名新建分支
  4. 切换到功能命名的分支,在该分支上提交代码
  5. 开发完成后进行测试,确认没有问题将分支合并到dev开发环境分支
  6. 在开发环境测试功能是否有问题,没有问题,将dev分支合并到master分支

分支分类

分支大致分为两种,一种是Merge,一种是Topic
但是,就我的工作周围,一般还是Mege分支用的居多。
以下,可作为概念了解即可。
Merge分支

Merge分支是为了可以随时发布release而创建的分支,它还能作为Topic分支的源分支使用。保持分支稳定的状态是很重要的。
如果要进行更改,通常先创建Topic分支,而针对该分支,可以使用Jenkins之类的CI工具进行自动化编译以及测试。
.
通常,大家会将master分支当作Merge分支使用。

Topic分支

Topic分支是为了开发新功能或修复Bug等任务而建立的分支。若要同时进行多个的任务,请创建多个的Topic分支。
Topic分支是从稳定的Merge分支创建的。完成作业后,要把Topic分支合并回Merge分支。

接下来,我在这边编写关于分支相关的git命令

分支命令

创建分支命令

git branch 分支名称
  • 1

切换分支命令

git checkout 分支名称
  • 1

ps:可使用如下命令同时执行创建并切换分支

git checkout -b 分支名称
  • 1

以上命令,只是在本地git创建分支,远端并没有
在本地git上可通过如下命令进行查看分支

git branch
  • 1

通过如下命令,将本地的分支推送到远端git仓库

git push origin 分支名称
  • 1

将另一个分支代码合并到当前分支上

切换分支
git checkout 当前分支名称
合并
git merge 另一个分支名称
// 推送到分支
git push -u origin 当前分支名称
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

值得一提的是:关于合并的代码有两种

merge
保持修改内容的历史记录,但是历史记录会很复杂。

rebase
历史记录简单,是在原有提交的基础上将差异内容反映进去。
因此,可能导致原本的提交内容无法正常运行。

也就是说,我们可以使用

git merge 分支名称
  • 1

或者

git rebase 分支名称
  • 1

进行合并

但是,很经常的,公司一般为了不出错,会要求需要使用Merge


当将另一个分支代码合并之后,就可以去执行删除分支的命令了

删除远端分支命令

git push origin --delete 分支名称
或者
git push origin -d 分支名称
  • 1
  • 2
  • 3

删除本地分支命令

git branch --delete  分支名称
或者
git branch -d 分支名称
  • 1
  • 2
  • 3

冲突的产生和解决

冲突的产生

先说一下,为什么会产生冲突:

当你的代码还没提交,某一个文件需要修改,但是多人合作开发,另一个人也对该文件进行修改并且提交到了远端git,就会造成冲突,

A人员  拉取B文件   ----->修改,提交了代码,这个时候,修改后的文件就不是和B文件相同了
C人员  拉取B文件   ----->修改了该文件,打算进行提交或者拉取,导致冲突,修改后的文件不和B文件,也不和A人员修改后的文件相同

原因:两个人修改的文件数据不完全一样导致
  • 1
  • 2
  • 3
  • 4

什么时候有冲突

一般情况下,当我们执行拉取合并推送的时候都有可能会产生冲突
也就是:
拉取

git pull
  • 1

合并

git merge 分支名称
  • 1

推送

git push origin 分支名称
  • 1

如何解决冲突

有了冲突,就需要去解决,你才能够继续提交代码

当你进行拉取,提交和合并操作的时候,提示有冲突一般会提示你是哪些文件有冲突

并且在文件上标记有

<<<<<<< HEAD
冲突代码
>>>>>>>
  • 1
  • 2
  • 3

的地方进行修改

修改完成之后,添加你修改后,解决完冲突的文件,使用命令

git add 冲突的文件名

git commit -m "代码提交信息"

git pull 
  • 1
  • 2
  • 3
  • 4
  • 5

当拉取完最新的代码之后,再次使用命令

git add myfile.txt

git commit -m "解决冲突代码提交信息"

git push origin 分支名称
  • 1
  • 2
  • 3
  • 4
  • 5

假如,你是进行合并分支的时候产生的冲突,
也就是使用合并命令:

git merge 分支名称
  • 1

导致冲突,那么,在修改冲突文件前最好是使用命令

git diff 源分支名称 目标分支名称
  • 1

进行查看预览差异

结语

以上,为关于git的教学,如有新内容将在本文章更新。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/769274
推荐阅读
相关标签
  

闽ICP备14008679号