Git开发工具基本使用

news2024/12/28 2:00:24

文章目录

  • 前言
  • 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.com
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_rsa.github

        Host git@gitlab.com
        HostName gitlab.com
        User git
        IdentityFile ~/.ssh/id_rsa.gitlab

Host gitee.com
        Port 22
        HostName gitee.com
        User git
        IdentityFile ~/.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 commitID
	commitID 可以使用 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.coloradmin.cn/o/1350434.html

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

相关文章

WPF+Halcon 培训项目实战(10):HS组件绘制图案

文章目录 前言相关链接项目专栏运行环境匹配图片模板匹配加载模板文件运行结果 绘制十字标 WPF HS组件绘制图像绘制和生成的区别 前言 为了更好地去学习WPFHalcon,我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只…

系列一、如何正确的获取Spring Cloud Alibaba Spring Cloud Spring Boot之间的版本对应关系

一、正确的获取Spring Cloud Alibaba & Spring Cloud & Spring Boot之间的版本对应关系 1.1、概述 Java发展日新月异,Spring Cloud Alibaba 、 Spring Cloud 、 Spring Boot在GitHub上的迭代也是异常的频繁,这也说明其社区很活跃,通…

NFS(文件存储服务)

题目 创建NFS共享文件夹,允许InsideCli可以远程挂载,映射挂载到D卷。共享文件夹路径为D:\shares\NFSshare。共享名称为NFSshare。允许未映射的用户访问。共享权限为读/写。服务配置步骤( 服务端 ) 步骤一 - 安装服务 步骤二 - 配置NFS服务 配置共享文件夹 选择共享路径

【BIG_FG_CSDN】C++ 数组与指针 (个人向——学习笔记)

一维数组 在内存占用连续存储单元的相同类型数据序列的存储。 数组是静态存储器的块;在编译时确定大小后才能使用; 其声明格式如下: 元素类型 数组名[常量];元素类型:数组中元素的数据类型; 常量&#…

Linux系统驱动要如何学习

1.你将获得: 快速上手 Linux 操作系统; 掌握Linux 内核工作原理; 掌握Linux 内核调试手段; 掌握复杂驱动:USB、PCIE、V4L2等 这门课程旨在为你打开Linux内核驱动的大门,让你在探索Linux内核的旅程中获得前…

HPM6750开发笔记《GPIO例程深度解析》

目录 创建工程: 代码分析: 1.头文件包含: 2.宏定义: 3.中断服务程序(ISR): 清除中断标志: 处理 LED 状态切换: 处理用户按键状态: 处理其他情况&…

Tomcat服务为什么起不来?

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 服务跑在Tomcat下面,有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种: 1. Tomcat服务…

Python模拟技巧实现自动抽屉登录和自动点赞

目录 一、引言 二、准备工作 三、自动抽屉登录 四、自动点赞 五、注意事项 六、案例分析 七、总结 一、引言 随着互联网的普及,人们越来越依赖于各种在线平台进行社交互动和信息获取。在这些平台上,用户需要登录才能享受各种服务,同时…

李宏毅机器学习第二十三周周报 Flow-based model

文章目录 week 23 Flow-based model摘要Abstract一、李宏毅机器学习1.引言2.数学背景2.1Jacobian2.2Determinant2.3Change of Variable Theorem 3.Flow-based Model4.GLOW 二、文献阅读1. 题目2. abstract3. 网络架构3.1 change of variable formula3.2 Coupling layers3.3Prop…

java数据结构与算法刷题-----LeetCode509. 斐波那契数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

跨境电商独立站代采1688货源网站

什么是淘宝代购 淘宝代购是近年兴起的一种购物模式,是帮国外客户购买中国商品。主要是通过万邦 科技的外贸代购系统,把淘宝、天猫等电商平台的全站商品通过API 接入到你的网站 上,瞬间就可以架设一个有数亿产品的大型网上商城,而且…

外贸人应该顺应趋势做外贸

2024年,有人疑惑外贸将如何发展?我想紧跟趋势是不会出错的,多年前网络没有如今那么发达,客户到中国参展或者来访就能确认订单。如今到处都是各种推广平台,客户足不出户就能在线上订购产品,如果你还是想靠之…

出版实务 | 书刊整体设计

文章目录 书刊整体设计概念目的原则内容外部装帧设计内文版式设计 书刊的形态术语书刊外表的翻本形态书刊的开本书刊装订样式种类平装精装骑马订装散页装 书刊的结构部件图书封面勒口书名页目录页 期刊面封底封 书刊版式设计概述版心、周空、版口、翻口的概念版面类型——和合面…

STM32CubeMX教程11 RTC 实时时钟 - 入侵检测和时间戳

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流程 3.2.3、添加其他必要代码 4、常用函数 5、烧录验…

英伟达「摊牌」,朋友变对手

对于曾经拿着英伟达的GPU进行自动驾驶系统开发的初创公司来说,可能未必会想到:某一天,这家全球GPU巨头,曾经的合作伙伴会成为自己的直接竞争对手。 上周,英伟达官方公众号发布招聘消息,公司正在扩大其自动驾…

实验4.4 动态路由OSPF协议的配置

实验4.4 动态路由OSPF协议的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.配置交换机和路由器的接口的IP地址等参数。2.配置动态路由OSPF协议,实现全网互通。 六、任务验收七、任务小结八、知识链接1.OSPF协议概念2.…

网络安全-真实ip获取伪造与隐藏挖掘

目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip,隐藏自己的ip&#xf…

Http状态:net::ERR_INCOMPLETE_CHUNKED_ENCODING

一、问题描述: 今天前端的小伙伴遇到一个js文件加载报错:net::ERR_INCOMPLETE_CHUNKED_ENCODING,不论如何刷新页面始终只有该文件加载失败,Chrome开发者工具中响应内容显示此请求没有可用的响应数据。 二、原因调查 排除非前端发…

RabbitMQ(七)ACK 消息确认机制

目录 一、简介1.1 背景1.2 定义1.3 如何查看确认/未确认的消息数? 二、消息确认机制的分类2.1 消息发送确认1)ConfirmCallback方法2)ReturnCallback方法3)代码实现方式一:统一配置a.配置类a.生产者c.消费者d.测试结果 …

Linux------mv命令超详解(狠狠爱住)

mv 命令用于移动文件或目录,也可以用来重命名文件或目录。 基本语法: mv [选项] 源文件 目标文件 常用选项: -i 或 --interactive:交互式地移动文件,如果目标文件已经存在,则会询问是否覆盖。-u 或 --…