带你深入了解git

news2025/1/12 18:16:38

目录

  • 1、Git介绍
    • 1.1git是什么工具
    • 1.2git起到的作用
      • 1.2.1 个人开发:
      • 1.2.2 多人开发:
  • 2、Git安装与下载项目代码
    • 2.1 下载安装git
    • 2.2 从仓库下载代码
  • 3、创建仓库及提交代码
    • 3.1 创建仓库
    • 3.2 将本地代码以及文件提交到远程仓库
      • 3.2.1git全局配置
      • 3.2.2 远程仓库和本地机器的连接
      • 3.2.3 上传代码
  • 4、提交多次代码如何查看之前代码
  • 5、git入门总结
    • 5.1 团队开发遇到什么样的问题?
    • 5.2 svn和给git的区别
  • 6、git详细命令
    • 6.1 初始化仓库
    • 6.2 查看配置
    • 6.3 查看状态
    • 6.4 添加到暂缓区
    • 6.5 添加到分支
    • 6.6 查看修改文件
    • 6.7 查看修改历史
    • 6.8 查看修改历史(简单形式)
    • 6.9 版本回退
  • 7、多人开发解决冲突问题
  • 8、分支操作
    • 8.1 查看本地分支
    • 8.2 新建分支
    • 8.3 切换分支
    • 8.4 查看远程仓库分支
    • 8.5 本地分支提交到远程仓库
    • 8.6 删除本地分支
    • 8.7 删除远程仓库的分支
  • 9、合并分支
    • 9.1分支是独立的,不会互相影响。
    • 9.2 合并分支
  • 10、Gitflow工作流

1、Git介绍

1.1git是什么工具

git是一个版本工具
版本如何理解呢?
如v1.0.0==>v1.0.1==>v1.0.2,版本就是一个更新迭代的变化。
举个例子:如果v1.0.2版本有严重的bug,而v1.0.1没有,你可以轻松的下载之前没有bug的版本。
这就是版本的控制。

1.2git起到的作用

比如你在公司里开发一个项目,只有你一个前端或者多个前端。

1.2.1 个人开发:

打个比方你开发一个项目要30天,你每天下班前都将代码保存到本地,第一天、第二天、第三天、第四天、第五天…突然有一天你的电脑坏了,里面的文件全被删除,并且不可逆转,那你之前所写的代码所花费的时间是不是都浪费了?
当然可能会有人说,我每天将数据存到一个u盘或者硬盘里不也可以,这其实也行,但是如果你哪天去上班忘了带u盘或者硬盘,那么你该如何进行项目推进?这也是一个问题。

1.2.2 多人开发:

一个项目可以需要多个前端进行开发,这个哥们负责哪几个页面,那个哥们负责哪几个页面,你负责几个页面,每天当要下班了是不是要对代码就行汇总,那么怎么汇总呢?难道是这个哥们和那个哥们把代码拷贝过来,然后和你写的代码一起保存?
这汇总可能会出现错误,比如命名错误,文件夹名称相同,会出现覆盖等等情况。

为了解决这些问题,我们就需要用到git版本控制工具。

一般我们在做项目的时候,第一步都会现在远程服务器创建一个仓库,比如GitHub、码云…。
每天下班前将代码上传到仓库里,就算你换了电脑,去远方出差,我们可以直接从仓库中拉取克隆到本地,无需在用u盘那样麻烦。
在多人开发,如果发生错误等等,我们可以直接回退到之前的版本。

总的来说:git在项目中起到的作用就是:代码管理、上传、下载、版本回退等等…

可以去官网看看git和其他版本控制的区别:https://www.git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F

2、Git安装与下载项目代码

2.1 下载安装git

官网:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
里面有详细下载教程,我就不多说了。

在安装完后,我们在桌面右键:会多出git GUI Here和Git Bash Here
说明一下我是window操作系统。

在这里插入图片描述
还可以在终端测试是否安装成功:
在这里插入图片描述

2.2 从仓库下载代码

国内:码云
网址:https://gitee.com/chinaio
国外:GitHub
网址:https://github.com/

以码云为例:
我们在码云找到一个项目
在这里插入图片描述
右侧有一个克隆/下载
我们复制该链接或下载ZIP。
以复制链接为例:
新建一个文件夹,右键,点击Git Bash Here:
在这里插入图片描述
进入命令行:输入git clone ,然后右键Paste粘贴刚才在码云复制的链接
在这里插入图片描述
回车,开始下载
在这里插入图片描述
在这里插入图片描述
下载完毕。

3、创建仓库及提交代码

3.1 创建仓库

以码云为例:
1、访问到码云平台:https://gitee.com/chinaio

2、注册==》登录账号
3、登录后==》新建仓库
在这里插入图片描述
新建仓库:
在这里插入图片描述
设置一些仓库信息(勾选了初始化仓库):
在这里插入图片描述
建立成功:
在这里插入图片描述
不勾选初始化仓库,建立后是这样的:
在这里插入图片描述
官方建议在建立仓库时进行初始化。

3.2 将本地代码以及文件提交到远程仓库

3.2.1git全局配置

第一次必须配置全局变量,本地git和你的账户密码进行关联。

git config --global user.name "东方青云"
git config --global user.email "2114683298@qq.com"

user.name是你注册账号时的用户名
user,email是你注册账号时的邮箱

3.2.2 远程仓库和本地机器的连接

如果你使用SSH一定要配置ssh公钥,如果是HTTPS则不用。
如果你有很多账户,那么git该提交到哪个账户呢?
SSH公钥的主要作用就是你本地仓库和远程服务器上登录的账户进行一个连接
在这里插入图片描述

设置:
在这里插入图片描述
找到ssh公钥:
在这里插入图片描述

点击怎样生成公钥:
地址:https://help.gitee.com/base/account/SSH%E5%85%AC%E9%92%A5%E8%AE%BE%E7%BD%AE
里面有具体步骤,我就不写详细说明了。

3.2.3 上传代码

提交所有代码到中转站

git add .

提交所有代码到本地仓库

git commit -m '注释内容'

提交本地仓库到码云

git push

4、提交多次代码如何查看之前代码

举个例子(这个荔枝可好吃了):
在我们开发项目的过程中,目前下面这个项目提交了36次,如果在第36次提交的代码中有严重的bug,我们想退回到之前的版本,用git就能够很好的解决。

在这里插入图片描述
我们点击第36次提交:
在这里插入图片描述
进入到统计页面:
在这里插入图片描述

点击你想回退版本右侧的浏览文件:

在这里插入图片描述
点击下载ZIP,不要使用克隆,克隆的是最新版本,而ZIP则是此次浏览的版本文件。

5、git入门总结

5.1 团队开发遇到什么样的问题?

  1. 备份多个版本,费时间,费空间、
  2. 难以恢复到以前的版本
  3. 难以解决代码冲突问题
  4. 难以追溯问题以及修改人和修改时间
  5. 无法进行权限控制

使用git能够很好的解决这些问题。

除了git可以进行版本控制,还要很多版本控制工具,如svn。

5.2 svn和给git的区别

svn是集中式管理,而git是分布式管理。
怎么理解集中式和分布式呢?
简单来说集中式就是如果没有网络就无法提交上传代码,而分布式则可以先暂存到本地(git add . ,git commit -m ‘暂存’),等有网了在上传到远程服务器。

可以去官网看看git和其他版本控制的具体区别:https://www.git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F

6、git详细命令

6.1 初始化仓库

git init

6.2 查看配置

git config -l

在我们进入公司做项目,必须配置user,email和user.name

6.3 查看状态

git status

在这里插入图片描述
红色的表示没有被git管理
绿色的表示存储在版本库暂缓区

6.4 添加到暂缓区

git add .
.代表所有文件
指定某个文件 git add index.js

6.5 添加到分支

git commit -m '注释内容'

6.6 查看修改文件

git diff
查看某一个文件:git diff index.js
查看所有文件: git diff

6.7 查看修改历史

git log

在这里插入图片描述
使用这个命令就能够清除的看见谁哪个时间修改了文件,
在这里插入图片描述

6.8 查看修改历史(简单形式)

git reflog

在这里插入图片描述

6.9 版本回退

可以直接在本地进行版本回退,很多版本都会在本地进行存储一份。

回到上一个版本:

git reset --hard HEAD^

回到指定版本:

git reset --hard 版本号

箭头所标即是版本号。

在这里插入图片描述

7、多人开发解决冲突问题

我来模拟一下二人开发过程:

创建两个文件夹(两个人):
在这里插入图片描述
他们二人都克隆下载代码

在这里插入图片描述
在这里插入图片描述

在进行项目开发前,各自都需要配置一下啊(局部,之前配置的global是全局的)

git config user.name '用户名'
git config user.email '邮箱'

在这里插入图片描述
在这里插入图片描述

张三新增了一个index.js文件

在这里插入图片描述
我们进行上传:
在这里插入图片描述

远程仓库已经提交成功:

在这里插入图片描述
此时我们的李四也新增了一个文件,common.js文件,然后进行提交
在这里插入图片描述
在这里插入图片描述
进行push报错,这是为什么呢?

如果远程仓库有人更新了代码,那么我们不能直接的去git push。

解决:

我们必须先把远程 仓库的代码下拉,然后再push

git pull
git push

下拉后,多了刚才张三提交的index.js文件
在这里插入图片描述
我们在git push,远程仓库已经更新。
在这里插入图片描述
新的问题:如果此时二人本地都要index.js文件,然后进行了不同层级的修改,导致代码不同,然后都提交远程仓库,会发生什么问题呢?

张三对index.js文件进行修改
在这里插入图片描述
在这里插入图片描述

此时李四对index.js文件进行修改。
在这里插入图片描述
我们提交一下,看看远程仓库是保留张三的内容还是李四的内容
在这里插入图片描述

在这里插入图片描述
代码冲突了,我们该如何解决,解决是比较繁琐的事情。
解决:

将报错乱码删除,删除后如果都想要直接提交即可,如果只想要其中某些代码,需要跟项目组进行协商,哪些代码需要保留,哪些不需要,然后在提交。

在这里插入图片描述
在这里插入图片描述

所以说写完代码尽快提交,后提交的人需要解决这些冲突问题,哈哈哈哈哈

8、分支操作

在git中,默认有一个主分支:master
一般来说在公司开发项目,每个人都有自己独属的分支,最后项目要上线了,统一将所有分支合并到主分支。

8.1 查看本地分支

git branch

在这里插入图片描述

8.2 新建分支

git branch 分支名称

在这里插入图片描述

8.3 切换分支

git checkout 分支名称

在这里插入图片描述
左边*号表示当前所在分支

8.4 查看远程仓库分支

git branch -r

在这里插入图片描述
当前我们只在本地添加了分支,而远程仓库并没有添加。

在这里插入图片描述

8.5 本地分支提交到远程仓库

不能直接git push
在这里插入图片描述
正确提交:

git push --set-upstream origin 分支名称

在这里插入图片描述

由分支数量1变成了2,说明提交成功了。
在这里插入图片描述

8.6 删除本地分支

git branch -d 分支名称

如果你当前正在使用此分支,则无法删除,就像你在电脑上打开了一个文件夹一样,当前打开的文件夹不能进行删除。

在这里插入图片描述
我们切换一下分支,然后再进行删除。

在这里插入图片描述

8.7 删除远程仓库的分支

目前只是删除的本地分支,远程仓库的分支还存在。
在这里插入图片描述

git push origin --delete 分支名称

在这里插入图片描述
在这里插入图片描述
删除成功。

9、合并分支

9.1分支是独立的,不会互相影响。

我们在主分支master添加hhhh.js文件

在这里插入图片描述
我们在创建一个新的分支dev。
在这里插入图片描述
根据上述所说,分支是独立的,不会互相影响,目前我们创立了新的分支dev,然后切换到了dev分支,可还是有hhhh.js文件,这是为什么呢?
其实分支是独立的,不会互相影响这句话并没有错,只是不够完整。

如果在一个分支下创建另外一个新的分支,新的分支会继承旧分支之前的操作。

现在我们在dev分支添加一些代码,然后切换到master主分支,看看它的代码有没有变化。

在这里插入图片描述
在这里插入图片描述
主分支代码并没有发生变化,我们改变一下主分支的代码,然后切换到dev分支,看看dev分支下的hhhh.js文件有没有发生变化。
在这里插入图片描述
在这里插入图片描述
dev分支下面的代码并没有发生变化。

9.2 合并分支

使用命令:

git merge 分支名称

merge本身的单词意思就是合并

如果当前是在master分支下写入:git merge dev ,那么master和dev会进行合并,相当于master + dev ,也就是master += dev

在这里插入图片描述

合并失败,发生冲突,如何解决多人开发冲突问题,之前已经讲过了,我们再讲一次。

代码冲突了,我们该如何解决,解决是比较繁琐的事情。
解决:

将报错乱码删除,删除后如果都想要直接提交即可,如果只想要其中某些代码,需要跟项目组进行协商,哪些代码需要保留,哪些不需要,然后在提交。

解决完代码冲突后,在提交即可。
在这里插入图片描述

10、Gitflow工作流

gitflow一般用于中大型项目,我们讲下git flow的具体使用细节。

master //用于保存上线版本代码,创建了dev分支
develop //用于保存相对稳定版本的代码,所有的feature都是dev分支创建的
feature //用于开发某几个功能,不同的功能可能会创建不同的分支
release //用于代码上线前的准备(测试,bug修复),是dev创建的
bugfix //用于修复不紧急bug
hotfix //用于修复紧急bug

我来模仿三个角色,领导、开发1(张三)、开发2(李四)

首先领导先创建好一个仓库,然后在本地拉取代码,创建好分支。
在这里插入图片描述

在这里插入图片描述
创建本地develop分支
在这里插入图片描述
将本地分支提交到远程仓库
在这里插入图片描述
假如张三开发一个login页面,李四开发一个list页面,给他们创建好对应的分支。
在这里插入图片描述
将本地分支提交到远程服务器仓库
在这里插入图片描述
在这里插入图片描述
领导已经将分支建好,张三和李四开始进行开发。

张三:
第一步:克隆代码
在这里插入图片描述
第二步:进行局部配置
在这里插入图片描述
在这里插入图片描述
第三步:切换到feature/login分支
在这里插入图片描述

张三添加login文件
在这里插入图片描述
进行提交文件
在这里插入图片描述
此时远程仓库的feature/login分支添加了login文件夹,其他分支是没有的。
在这里插入图片描述
接下来李四也要进行开发了。

第一步:克隆代码在这里插入图片描述
第二步:进行局部配置
在这里插入图片描述
在这里插入图片描述

第三步:切换分支

在这里插入图片描述
李四添加list文件夹,然后进行提交。
在这里插入图片描述

远程仓库reature/list分支已经添加上了。
在这里插入图片描述
此时develop分支是什么都没有的,最后领导对分支进行合并。
在这里插入图片描述
合并结束:

git merge origin/featur/login
git merge origin/featur/list
git add .
git commit -m '注释内容'
git push

在这里插入图片描述

在develop合并完代码后,进入测试环节,测试人员进行测试,如果有问题,则在develop分支下创建release分支。然后release分支创建bugfix分支(修复不紧急bug),hotfix(修复紧急bug),在bug修复完后进行代码提交,没有问题后在release分支对bugfix和hotfix分支进行合并,在切换到develop分支对release分支进行合并,最后没有任何bug后,在由master分支合并develop分支,然后上线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

领域驱动设计:基于DDD的微服务设计实例

文章目录 项目基本信息战略设计战术设计后续的工作 用一个项目来了解 DDD 的战略设计和战术设计,走一遍从领域建模到微服务设计的全过程,一起掌握 DDD 的主要设计流程和关键 点。 项目基本信息 项目的目标是实现在线请假和考勤管理。功能描述如下&…

【数据中台建设系列之二】数据中台-数据采集

​ 【数据中台建设系列之二】数据中台-数据采集 上篇文章介绍了数据中台的元数据管理,相信大家对元数据模块的设计和开发有了一定的了解,本编文章将介绍数据中台另一个重要的模块—数据采集。 一、什么是数据采集 数据采集简单来说就是从各种数据源中抓…

美颜滤镜SDK,企业技术解决方案

企业越来越注重提升用户体验,而美颜滤镜SDK正是满足这一需求的强大工具。美摄美颜滤镜SDK是一款专为企业级应用打造的高效、稳定的美颜滤镜解决方案,能够帮助您的企业在瞬息万变的市场中保持竞争力。 一、强大的美颜滤镜功能 美摄美颜滤镜SDK拥有丰富的…

【wvp】wvp设备上可以开启tcp被动模式

目录 开启了 tcp被动模式 开启UDP模式 地平线不支持这种tcp情况 开启了 tcp被动模式 我的理解是zlm就会是tcp被动收流模式 tcpdump -i any host 10.1.3.7 and tcp 而wvp->浏览器,是SRTP,其实还是基于zlm8000的udp端口出来的 开启UDP模式 tcpdump -i any host…

面试算法40:矩阵中的最大矩形

题目 请在一个由0、1组成的矩阵中找出最大的只包含1的矩形并输出它的面积。例如,在图6.6的矩阵中,最大的只包含1的矩阵如阴影部分所示,它的面积是6。 分析 直方图是由排列在同一基线上的相邻柱子组成的图形。由于题目要求矩形中只包含数字…

解析一个月销售额过千万的商业模式——七人拼团

在当今的商业环境中,营销策略的运用对于企业的成功至关重要。其中,拼团模式作为一种以社交为核心的营销方式,正逐渐受到越来越多企业的关注。本文将探讨七人拼团模式,分析其奖励机制和特点,为企业家提供新的营销思路。…

如何设计出优秀的虚拟展厅,设计虚拟展厅有哪些步骤

引言: 虚拟展厅已经成为了当今数字时代的重要组成部分,无论是展示产品、推广服务,还是展示艺术品和文化遗产,虚拟展厅为用户提供了一个全新的互动体验。如何设计虚拟展厅成了很多人关注的焦点。 一.虚拟展厅设计的基本原则 虚拟…

5G RedCap工业智能网关

5G RedCap工业智能网关是当前工业智能化发展领域的重要技术之一。随着物联网和工业互联网的迅速发展,企业对于实时数据传输和高速通信需求越来越迫切。在这种背景下,5G RedCap工业智能网关以其卓越的性能和功能,成为众多企业的首选。 5G RedC…

双11电视盒子什么牌子好?数码达人测评25款整理电视盒子排名

双11买电视盒子什么牌子好?为了推荐更客观,这段时间我进行了25款主流电视盒子的深度测评,从芯片、内存、网络、散热、系统、广告、流畅度等多方面进行对比,整理了电视盒子排名,双十一想买电视盒子不知道怎么选可以参考…

应用程序无法正常启动0xc000007b的解决策略,多种解决方法分享

当我们在使用特定的软件或游戏时,我们可能会遇到一个特别令人头疼的问题—那就是"应用程序无法正常启动0xc000007b"的错误。但是,为何会出现这类情况和如何解决呢?接下来的内容,将会详细地为你阐释。 一.0xc000007b错误…

【小程序】实现一个定制的音乐播放器

应用地址:https://spacexcode.com/player 介绍 这是为自己制作的一个在线 Web 版的音乐播放器。众所周知,现在市面上的所有的音乐平台都是会员制。而免费的资源却分散在网络上的各个角落,为此,我收集了自己 喜欢的音乐&#xff0…

代码签名证书到期了怎么续费?

我们都知道代码签名证书最长期限可以申请3年,但有的首次申请也会申请1年,这种情况下证书到期了就意味着要重新办理,同样的实名验证步骤还需要再走一遍,尤其目前无论是哪种类型的代码签名证书都会有物理硬件,即使交钱实…

将本地代码上传至码云具体步骤

前言:假如我们在本地创建了一个新项目,现在想将这个项目上传至码云 第一步:码云上创建仓库 第二步:点击创建完成仓库 到这就已经完成了码云仓库的创建!!! 第三步:打开cmd命令输入这…

微信小程序5

一、什么是后台交互? 在小程序中,与后台交互指的是小程序前端与后台服务器之间的数据通信和请求处理过程。通过与后台交互,小程序能够获取服务器端的数据、上传用户数据、发送请求等。 与后台交互可以通过以下方式实现: 发起网络请…

java对象深拷贝(Mapstruct)代码实现

这几天写的需求正在提测中,所以比较有空闲时间,正好来总结一下开发中遇到的问题并记录一下。 在开发过程中遇到这样一个问题:多个对象实体间要进行对象拷贝,并且对象里面还包含别的对象集合,对象名字也不同&#xff0…

那些只要一两行代码就能搞定的Python操作

Python是一种简洁、易读且功能强大的编程语言,有很多操作只需要一行代码就能完成。本文将介绍一些常用的单行代码操作,并分析其技术原理,让读者更深入地理解Python的简洁与高效。 1、列表推导式 列表推导式是Python中一种简洁的构造列表的方法…

STM32:外部中断

中断,顾名思义就是停止现在正在干的活,去干其他更紧急的事情。在通常的信息系统中,中断发生时,会先保留现场,即当前的运行情况和状态。在去做其他紧急事情。事情做完还要恢复原先中断前的状态继续干原来的活。在STM32中…

python 字典dict和列表list的读取速度问题, range合并

嗨喽,大家好呀~这里是爱看美女的茜茜呐 python 字典和列表的读取速度问题 最近在进行基因组数据处理的时候,需要读取较大数据(2.7G)存入字典中, 然后对被处理数据进行字典key值的匹配,在被处理文件中每次…

模拟开关与多路复用器

模拟开关 模拟开关现在有两种工艺,模拟开关与cmos工艺 CMOS模拟开关收到温度还有供电电压影响,尽量供电高一点 jfet断电导通,cmos断电断开 因为寄生电容,交流信号会漏过模拟开关 没有负电源脚不能传交流电&#xff0c…

windows安装docker,解决require wsl 2问题

想在windows上安装桌面版docker,上官网下载了安装包,安装完后,启动报错,忘了截图了。 大概意思就是require wsl 2。 于是就是docker FAQ中找相关问题解决方案,点,点,点然后就点到微软了。 ws…