Git开发工具基本使用

文章目录

  • 前言
  • Git仓库
    • 基本概念
    • 基本环境安装
    • 清除原先配置
    • 生成秘钥
    • 配置Host
    • 添加公钥
    • Github添加
    • Gitee添加
    • 测试
  • 本地仓库
    • 基本概览
    • 查看提交日志(log)
    • 版本回退
    • 添加文件至忽略列表
    • 分支
    • 分支冲突
  • 远程仓库
    • 推送到远程仓库
    • 从远程仓库中抓取和拉取
  • 在Idea中使用Git
  • 总结

前言

这里只是对Git的一些基本使用做一个简单地梳理,方便重新快速上手。怎么拉项目,怎么提交,怎么创建分支,怎么合并提交等等基本操作。这玩意说实话太久不用确实会忘记。(适合快速恢复记忆使用)

Git仓库

基本概念

首先基本的概览是这样的:
在这里插入图片描述

我们的仓库其实分为好几个部分:

  1. 工作区:实际写代码的地方
  2. 暂存区:暂时存放代码的地方
  3. 本地仓库: 本地仓库具备完整的本地代码管理功能
  4. 远程仓库:项目共享的远程代码仓库

那么我们的基本操作其实也就是分几部分的操作:

  1. 在本地创建仓库,本地管理仓库分支
  2. 提交本地仓库到云端,管理云端的分支
  3. 拉取云端仓库,在本地各种操作,然后再上传云端,管理各种分支

所以我们的目光就可以,先从工作区到暂存区看齐,然后再从暂存区到本地仓库,之后再由本地仓库到远程仓库看齐。

基本环境安装

okey, 公欲善其器,必先利其器。那么这里的话为了我们能够和github,gitee顺利拉取,推送项目。我们需要配置好一些相应的信息。
这里的话我还是在Windows平台,当然你在Linux也是一样的,反正都是在git环境操作,和你哪个操作系统没啥关系。Mac也一样,不过Mac要注意一下自己的版本,Mac是自带了一个嘛,毕竟人家也是Unix改过来滴,和Ubuntu和其它Linux图形发行版是同门手足嘛。
这里推荐Windows的cmd工具cmder
在这里插入图片描述

清除原先配置

如果你是新安装的git跳过,如果不是这样操作
这里是先清除你原来的配置

$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的邮箱"

生成秘钥

git本身也是一个小“Linux”嘛,我们本质上还是类似ssh远程推送文件嘛。

这里生成你的秘钥,例如我这里生成三个。
这里的话先进入你的 git 环境

在这里插入图片描述
分别输入以下指令,生成秘钥

ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "xxxx@qq.com"
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "xxxx@qq.com"
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "xxxx@qq.com"

然后你会在这个目录看到这些玩意
在这里插入图片描述

配置Host

现在我们生成了三个平台的秘钥(整个过程其实像极了ssh免密登录的操作)

touch ~/.ssh/config    

然后我们使用vim直接编辑
在这里插入图片描述

Host github.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa.githubHost git@gitlab.comHostName gitlab.comUser gitIdentityFile ~/.ssh/id_rsa.gitlabHost gitee.comPort 22HostName gitee.comUser gitIdentityFile ~/.ssh/id_rsa.gitee

这个一目了然,什么意思嘛,那个Port 22 是啥其实不用写,默认都是。
后面如果你有自己的公司的那个托管平台的话,也是一样配置的

添加公钥

我这里演示两个平台,一个是GitHub还有是gitee
首先是github

Github添加

在设置找到这玩意
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这个时候回到你的git
由于你要添加的是githu所以你找到这个文件
在这里插入图片描述
把里面的内容复制
在这里插入图片描述

然后在github页面添加
此时我添加了一个
在这里插入图片描述

Gitee添加

这个就更简单了
在这里插入图片描述
在这里插入图片描述

测试

ssh -T git@github.com
ssh -T git@gitlab.com
ssh -T git@gitee.com

在这里插入图片描述

这样的话,本地的环境就算是配好了,当然这里省略了安装git工具的流程。

本地仓库

基本概览

okey, 现在的话,把目光看到我们实际的git的操作上面。

首先的话我们还是来看到我们的一个本地仓库的基本操作:

git init 初始化仓库之后:
在这里插入图片描述
本地仓库的基本上其实就这些东西。

  1. git add (工作区 --> 暂存区)
    命令形式:git add 单个文件名|通配符
    将所有修改加入暂存区:git add .
  2. git commit (暂存区 --> 本地仓库)
    作用:提交暂存区内容到本地仓库的当前分支
    命令形式:git commit -m ‘注释内容’
    .
    之后我们可以使用 git statue 来查看我们基本的一个仓库的状态

查看提交日志(log)

查看提交日志是一件非常重要的事情,因为我们通过查看到我们本地的仓库的一个log,可以维护我们的一个仓库。

作用:查看提交记录
命令形式:git log [option]
options
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图的形式显示

那么这里的话,说一下很常用的指令,但是不好记:

alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'

这里的话,对两个指令取了别名(当然是临时的,你可以修改你都.barchrc文件让这个别名永久可用)

下次使用的时候可用,可以直接git-log 查看到我们整个仓库的提交细节了。这个指令非常直观。

版本回退

作用:版本切换
命令形式:git reset --hard commitIDcommitID 可以使用 git-log 或 git log 指令查看
如何查看已经删除的记录?git reflog这个指令可以看到已经删除的提交记录

添加文件至忽略列表

一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动
生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录
中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:

# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

分支

分支是我们这边非常重要的一个模块
我们在实际开发的时候,可能针对不同的开发功能创建不同的分支。当各个功能ok的时候,合并到统一分支。

查看本地分支命令:git branch
创建本地分支命令:git branch 分支名
切换分支(checkout)命令:git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换)命令:git checkout -b 分支名
合并分支(merge)一个分支上的提交可以合并到另一个分支命令:git merge 分支名称
删除分支不能删除当前分支,只能删除其他分支git branch -d b1 删除分支时,需要做各种检查git branch -D b1 不做任何检查,强制删除

分支冲突

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

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)

开发中分支使用原则与流程:
在开发中,一般有如下分支使用原则与流程:
:master (生产) 分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
:develop(开发)分支
是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
:feature/xxxx分支
从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完
成后合并到develop分支。
:hotfix/xxxx分支,
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、
develop分支。
此外还有一些其他分支,例如test分支(用于代码测试)、pre分支(预上线分支)等等。

大致关系图如下:
在这里插入图片描述

远程仓库

这里的话,我们需要注意的是,请在Git仓库章节处,完成密钥的创建。这样的话才能顺利拉取代码。
两个比较重要的指令:

git clone 仓库地址
从远程仓库拉取代码到我们本地git remote add origin 仓库地址
将我们本地的仓库关联到远程仓库,方便后面提交

这两个指令可以帮助我们完成本地的一个项目和远程项目的一个关联。

git remote 可以查看到我们的一个远端的仓库

推送到远程仓库

命令:git push [-f] [–set-upstream] [远端名称 [本地分支名][:远端分支名] ]

  1. 如果远程分支名和本地分支名称相同,则可以只写本地分支
    git push origin master
    -f 表示强制覆盖
    –set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
    git push --set-upstream origin master
  2. 如果当前分支已经和远端分支关联,则可以省略分支名和远端名。
    git push 将master分支推送到已关联的远端分支。

此外:git branch -vv 可以查看本地和远端的一个分支关联情况

git branch -u origin/B A 可以将远程的B仓库和本地的A关联起来。

从远程仓库中抓取和拉取

  1. 抓取 命令:git fetch [remote name] [branch name]
    抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
    如果不指定远端名称和分支名,则抓取所有分支。

  2. 拉取 命令:git pull [remote name] [branch name]
    拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
    如果不指定远端名称和分支名,则抓取所有并更新当前分支。

所以在使用git pull 时,需要注意,这里还执行了 git merge 远程分支 的操作,因此有可能会产生冲突。比如远端仓库当中的分支A与本地分支B同一个文件的同一行不一样。那么这个时候将产生冲突。此时需要手动解决。只能git statue 查看冲突。所以的话创建不同的分支时,请只需负责自己的那部分代码。非要该的话,也先合并一个干净的分支,然后再修改。

在Idea中使用Git

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安
装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找到Version Control下的git选
项:

在这里插入图片描述
然后克隆远程(本地创建也可以,他会自己识别的)
在这里插入图片描述
这个的话,你只要搞清楚git的一些基本概念,看着GUI操作即可,没啥好说的。

总结

2024.1.1 新的一年,开始!

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

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

相关文章

Perforce:2024年改变数字化格局的五大技术趋势

自去年ChatGPT发布以来,生成式人工智能占据了头条、会议,甚至占据了我自己工作场合的对话。人工智能技术如此迅速地改变工作流程和公司的关注点,真是令人难以置信。 我叫瑞安,在技术领域工作了近二十年,拥有15年的全栈…

图像分割实战-系列教程3:unet医学细胞分割实战1(医学数据集、图像分割、语义分割、unet网络、代码逐行解读)

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 unet医学细胞分割实战1 unet医学细胞分割实战2 unet医学细胞分割实战3 unet医学细胞分割实战4 unet…

计算图与动态图机制

一、计算图 计算图是用来描述运算的有向无环图 计算图有两个主要元素:结点(Node)和边(Edge) 结点表示数据,如向量,矩阵,张量边表示运算,如加减乘除卷积等 用计算图表…

redis安装与配置(Ubuntu)

目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis 这里安装的是下面的版本: 3. 安装 …

LaTeX写论文,公式后段落取消缩进方法:\noindent

在论文的段落中,需要插入一个公式,按道理公式后应该紧接着是段落的文本内容,但如果直接写的话,编译得到的PDF中呈现出来的却是开头缩进的样子 如果需要取消公式后面的段落缩进,可以使用命令 \noindent 该命令的作用…

从零开始 - 在Python中构建和训练生成对抗网络(GAN)模型

生成对抗网络(GANs)是一种强大的生成模型,可以合成新的逼真图像。通过完整的实现过程,读者将对GANs在幕后的工作原理有深刻的理解。本教程首先导入必要的库并加载将用于训练GAN的Fashion-MNIST数据集。然后,提供了构建…

反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】

一、反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 思路一:翻转单链表指针方向 这里解释一下三个指针的作用: n1&#xff1…

Jupyter Notebook的10个常用扩展介绍

Jupyter Notebook(前身为IPython Notebook)是一种开源的交互式计算和数据可视化的工具,广泛用于数据科学、机器学习、科学研究和教育等领域。它提供了一个基于Web的界面,允许用户创建和共享文档,这些文档包含实时代码、…

(15)Linux 进程创建与终止函数forkslab 分派器

前言:本章我们主要讲解进程的创建与终止,最后简单介绍一下 slab 分派器。 一、进程创建(Process creation) 1、分叉函数 fork 在 中, fork 函数是非常重要的函数,它从已存在进程中创建一个新的进程。 …

1885页学习资料。一本在手,python不愁!

python3.11即将于下半年发布,新的版本速度提升2倍,以弥补与其他编程语言在速度上的缺陷。可以预见Python语言在未来的应用范围会越来越广。 python学习方向建议: 如果你是本科及以下学历,建议你学习以下两个方向 1、爬虫。简单…

Matplotlib基础

目录: 一、绘制yx^2图像: 一、绘制yx^2图像: from matplotlib import pyplot as plt import numpy as np #生成(-50,50)的数组 x np.arange(-50,50) #计算因变量y的值 y x ** 2 #根据x、y数组绘制图形yx^2 plt.plot…

一文带你玩转Superset!大数据可视化框架学习网站大盘点!

介绍:Superset是一款由Airbnb开源的现代化企业级BI工具,它主要用于数据分析和可视化工作。作为Apache孵化器项目的一部分,它在处理复杂的数据分析需求上表现出色,并支持多种数据源和丰富的图表类型。 这款工具的主要特点包括自助分…

PE解释器之PE文件结构

PE文件是由许许多多的结构体组成的,程序在运行时就会通过这些结构快速定位到PE文件的各种资源,其结构大致如图所示,从上到下依次是Dos头、Nt头、节表、节区和调试信息(可选)。其中Dos头、Nt头和节表在本文中统称为PE文件头(因为SizeOfHeaders…

大数据毕业设计:基于python淘宝数据采集分析可视化系统 商品销量数据分析 计算机毕业设计(附源码+文档)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

微软真是活菩萨,面向初学者的机器学习、数据科学、AI、LLM课程统统免费

微软真是活菩萨,面向初学者的机器学习、数据科学、AI、LLM课程统统免费 大家好,我是老章 推荐几个质量上乘且完全免费的微软开源课程 面向初学者的机器学习课程 **地址:**https://microsoft.github.io/ML-For-Beginners/#/ 学习经典机器学…

Mysql 下载与安装教程(详细介绍与总结)

一:版本介绍 首先,我们需要先进入官网进行下载,在官网中有好几个版本,那么这里我分别简述一下MySQL各个版本区别: 1:企业版,MySQL Enterprise Edition 需要付费的,可以免费试用30天…

超声波传感器(附:c语言测距代码)

一、引言 超声波传感器是一种利用超声波进行检测的装置,具有非接触、高精度、抗干扰能力强等优点。在工业自动化、医疗诊断、环境监测等领域,超声波传感器发挥着重要的作用。本文将深入探讨超声波传感器的原理、应用,并通过C语言代码示例来展…

Windows使用IIS服务搭建WebDAV站点结合内网穿透公网访问

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结: 自己用Windows Server搭建了家用NAS主机&…

汉诺塔问题

问题: Hanoi(汉诺)塔问题。这时一个古典的数学问题,是一个递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C(如下图)。开始时A座上有64个盘子,盘子大小不等&#xff0c…