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.hqwc.cn/news/313452.html

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

相关文章

从入门到精通UNet: 让你快速掌握图像分割算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构五、训练模型5.1 模型训练流程5.2 模型评估指标5.…

轻量封装WebGPU渲染系统示例<55>- 顶点数据更新

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/VertexUpdateTest.ts 当前示例运行效果: ​​​​​​​ 此示例基于此渲染系统实现,当前示例TypeScript源码如下: export class VertexUpdateTest {pr…

App.vue中引入自定义组件

components目录中定义组件&#xff1a;Person.vue 目录截图&#xff1a; Person.vue文件中内容&#xff1a; <template><div class"person"><h2>姓名&#xff1a;{{name}}</h2><h2>年龄&#xff1a;{{age}}</h2><!--定义了…

数据的确权、流通、入表与监管研究(一):数据与确权(下)

关注WX公众号&#xff1a; commindtech77&#xff0c; 获得数据资产相关白皮书下载地址 1. 回复关键字&#xff1a;数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字&#xff1a;光大银行 下载 光大银行-《商业银行数据资产会计核算研究报告》 3. 回复关键字…

NX二次开发UFUN方式一键去除所有参数

一、概述 最近作了一个案例是通过遍历整个显示部件窗口的所有实体合并成一个部件&#xff0c;并且在导航器上也显示一个体&#xff0c;主要的思路是遍历当前所有实体&#xff0c;然后进行一键合并如图1所示&#xff0c;最后去除参数&#xff0c;这时导航器中显示一个体的记录。…

HelloWorld搭建(第一种模型)

1.创建Springboot项目并且引入依赖 <!-- 引入RabbitMQ的相关依赖 --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.7.2</version> </dependency> 2.第一种模式(直连…

html-css-js移动端导航栏底部固定+i18n国际化全局

需求&#xff1a;要做一个移动端的仿照小程序的导航栏页面操作&#xff0c;但是这边加上了i18n国家化&#xff0c;由于页面切换的时候会导致国际化失效&#xff0c;所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变&#xff0c;不会导致切换后回到默认的语言 2.实现…

动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper

文章目录 前言下载github地址&#xff1a;网盘 关于VideoWebpagesYoutube和流媒体ShadersGIFs游戏和应用程序& more:Performance:多监视器支持&#xff1a;完结 前言 Lively Wallpaper是一款开源的视频壁纸桌面软件&#xff0c;类似 Wallpaper Engine&#xff0c;兼容 Wal…

功能真强大!5个令人惊叹的 Jupyter 黑科技

Jupyter 是一种功能强大的交互式计算环境&#xff0c;被广泛应用于数据分析、机器学习、科学计算等领域。 除了常见的基本功能外&#xff0c;Jupyter还隐藏着许多令人惊叹的黑科技&#xff0c;这些功能可以帮助用户更高效地完成工作&#xff0c;提升工作体验。 在本文中&…

linux线程与进程

简要 在Linux系统中&#xff0c;进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统中两个重要的概念&#xff0c;它们都是用于执行程序的执行单元&#xff0c;但有一些关键的区别。 在Linux系统中&#xff0c;可以使用fork系统调用创建新…

stm32f407 bm -> freertos

工程文件差异&#xff1a; 工程结构上&#xff0c;os 版本多了 FreeRTOS 文件夹 在 USER 下多了 FreeRTOSConfig.h 文件&#xff0c;和多了需要用到的一些外设驱动 对比添加 os 文件到 bm 工程中&#xff0c;以及 C/C .h 文件的包含 stm32f4xx_it.c 文件 bm 与 rtos 对比 ①…

龙年快乐,为大家准备了一份新年网安大礼包!

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…