当前位置: 首页 > news >正文

【版本控制】Git(学习笔记)

一、Git工作流程图

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库
  2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加): 在提交前先将代码提交到暂存区
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

二、Git安装与配置

1、下载与安装

下载地址: https://git-scm.com/download

2、配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

  1. 打开Git Bash
  2. 设置用户信息
    1. git confifig --global user.name “itcast”
    2. git confifig --global user.email “hello@itcast.cn”
  3. 查看配置信息
    1. git confifig --global user.name
    2. git confifig --global user.email

3、为常用指令配置别名

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。

1)打开用户目录,创建 .bashrc 文件

部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc

2)在 .bashrc 文件中输入如下内容

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

3)打开gitBash,执行 source ~/.bashrc

三、本地仓库

1、获取本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

  1. 在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
  2. 进入这个目录中,点击右键打开Git bash窗口
  3. 执行命令 git init
  4. 如果创建成功后可在文件夹下看到隐藏的.git目录。

2、基础命令

1)查看修改的状态(status)

作用:查看的修改的状态(暂存区、工作区)

命令形式:git status

2)添加工作区到暂存区(add)

作用:添加工作区一个或多个文件的修改到暂存区

命令形式:git add 单个文件名|通配符

将所有修改加入暂存区:git add .

3)提交暂存区到本地仓库(commit)

作用:提交暂存区内容到本地仓库的当前分支

命令形式:git commit -m '注释内容'

4)查看提交日志(log)

git-log

作用:查看提交记录

命令形式:git log [option]

options:

–all 显示所有分支

–pretty=oneline 将提交信息显示为一行

–abbrev-commit 使得输出的commitId更简短

–graph 以图的形式显示

5)版本回退

作用:版本切换

命令形式:git reset --hard commitID

commitID 可以使用 git-log 查看

如何查看已经删除的记录?

git reflog 可以看到已经删除的提交记录

6)添加文件至忽略列表

一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。

在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。

3、分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离

开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

1)查看本地分支

命令:git branch

2)创建本地分支

命令:git branch 分支名

3)切换分支(checkout)

命令:git checkout 分支名

可以直接切换到一个不存在的分支(创建并切换):git checkout -b 分支名

4)合并分支(merge)

一个分支上的提交可以合并到另一个分支

命令:git merge 分支名称

5)删除分支

不能删除当前分支,只能删除其他分支

git branch -d b1 删除分支时,需要做各种检查

git branch -D b1 不做任何检查,强制删除

6)解决冲突

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

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

7)开发中分支使用原则

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

在开发中,一般有如下分支使用原则与流程

master (生产) 分支

线上分支,主分支,中小规模项目作为线上运行的应用对应的分支

develop(开发)分支

是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。

feature/xxxx分支

从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。

hotfix/xxxx分支

从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。

还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等

四、Git远程仓库

1、远程仓库概述

gitHub(地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名gitHub

码云(地址:https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快

GitLab(地址:https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。

2、创建远程仓库

3、配置SSH公钥

1)本地生成SSH公钥

ssh-keygen -t rsa

不断回车,如果公钥已经存在,则自动覆盖

2)Gitee设置账户共公钥

获取公钥:cat ~/.ssh/id_rsa.pub

3)验证是否配置成功

ssh -T git@gitee.com

4、操作远程仓库

1)添加远程仓库

此操作是先初始化本地库,然后与已创建的远程库进行对接

命令:git remote add <远端名称> <仓库路径>

远端名称:默认是origin,取决于远端服务器设置

仓库路径:从远端服务器获取此URL

例如: git remote add origin git@gitee.com:czbk_zhang_meng/git_test.git

2)查看远程仓库

命令:git remote

3)推送到远程仓库

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

如果远程分支名和本地分支名称相同,则可以只写本地分支:git push origin master

git push --set-upstream origin master

-f 表示强制覆盖

–set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。

如果当前分支已经和远端分支关联,则可以省略分支名和远端名:git push

4)本地分支与远程分支的关联关系

查看关联关系我们可以使用 git branch -vv 命令

5)从远程仓库克隆

如果已经有一个远端仓库,我们可以直接clone到本地。

命令:git clone <仓库路径> [本地目录]

本地目录可以省略,会自动生成一个目录

6)从远程仓库中抓取和拉取

远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。

抓取:git fetch [remote name] [branch name]

抓取指令就是将仓库里的更新都抓取到本地,不会进行合并

如果不指定远端名称和分支名,则抓取所有分支。

拉取:git pull [remote name] [branch name]

拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同fetch+merge

如果不指定远端名称和分支名,则抓取所有并更新当前分支。

7)解决合并冲突

A、B用户修改了同一个文件,且修改了同一行位置的代码,A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支

五、IDEA中使用Git

1、配置

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。

选择File→Settings打开设置窗口,找到Version Control下的git选项,点击Test按钮,显示版本信息,配置完成。

2、创建项目远程仓库

3、初始化本地仓库

4、设置远程仓库

5、提交到本地仓库

6、推送到远程仓库

7、克隆远程仓库到本地

8、创建分支

9、切换分支

10、解决冲突

11、常用GIT操作入口

相关文章:

【版本控制】Git(学习笔记)

一、Git工作流程图 clone&#xff08;克隆&#xff09;: 从远程仓库中克隆代码到本地仓库checkout &#xff08;检出&#xff09;&#xff1a;从本地仓库中检出一个仓库分支然后进行修订add&#xff08;添加&#xff09;: 在提交前先将代码提交到暂存区commit&#xff08;提交&…...

C语言,求一个整数的全部素数因子

#include <stdio.h> int prime(int x)//一旦x被2到x-1的数整除&#xff0c;就返回0&#xff0c;一直不被整除&#xff0c;才返回1。 {int j 0;for (j 2; j < x; j){if (x % j 0){return 0;}}return 1; } int main() {int n 0;scanf("%d", &n);int i…...

Jenkins更换主目录

Jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改&#xff1a; 使用你Web容器的管理工具设置JENKINS_HOME环境参数.在启动Web容器之前设置JENKINS_HOME环境变量.(不推荐)更改Jenkins.war(或者在展开的Web容器)内的web.xml配置文件. 这个值在Jenkins运行时…...

迅为RK3588开发板使用RKNN-Toolkit-lite2运行测试程序

1 首先也需要部署运行环境&#xff0c;将库文件放入 RK3588 开发板上&#xff0c;我们将网盘资料“iTOP-3588 开发 板 \02_ 【 iTOP-RK3588 开 发 板 】 开 发 资 料 \12_NPU 使 用 配 套 资 料 \05_Linux_librknn_api\librknn_api\aarch64”路径下的文件通过U盘拷贝到开发板的…...

1990-2023:RPA的变革之路

01 第一阶段&#xff1a;初级助手与UI测试 阶段简介&#xff1a; RPA开始于简单的数据导入和用户界面测试 在最早期的阶段中&#xff0c;RPA又可比作虚拟化助手&#xff0c;能够助力人力实施的基本数据导入&#xff0c;然而辅助作业时尚需人为操作。RPA 的故事始于用户界面 (U…...

SQL 语法

SQL 语法规则 SQL语句总是以关键字开始&#xff0c;如SELECT、INSERT、UPDATE、DELETE、DROP、CREATE。SQL语句以分号结尾。SQL不区分大小写&#xff0c;意味着update与UPDATE相同。 数据库表 数据库通常包含一个或多个表。每个表都用一个名称标识&#xff08;例如&#xff0c;…...

吃鸡达人必备神器,提升战斗力享受顶级游戏干货!

大家好&#xff01;今天我为大家介绍一款专为吃鸡玩家打造的神器——吃鸡盒子。无论您是新手还是老玩家&#xff0c;吃鸡盒子都能帮助您提升游戏的战斗力&#xff0c;分享顶级游戏作战干货&#xff0c;并且还能方便吃鸡作图、查询库存和保护账号安全。 让我们先来说说提升战斗力…...

PyTorch 深度学习之循环神经网络(基础篇)Basic RNN(十一)

0.Revision: DNN dense 重义层 全连接 RNN处理带有序列的数据 1. What is RNNs? linear layer 1.1 What is RNN? tanh (-1, 1) 1.2 RNN Cell in PyTorch 1.3 How to use RNNCell *先把维度搞清楚 多了一个序列的维度 2. How to use RNN 2.1 How to use RNN - numLayers…...

存在已打开的MicrosoftEdge浏览器,无法执行安装

存在问题&#xff1a;UiBot Creator 安装Chrome扩展时&#xff0c;存在已打开的MicrosoftEdge浏览器&#xff0c;无法执行安装。 解决办法&#xff1a; 打开MicrosoftEdge浏览器&#xff0c;然后在浏览器页面右上角打开“…”图标 第二步&#xff0c;打开“…”图标之后&…...

Unity第一人称移动和观察

创建一个可以自由移动的第一人称视角 人物通过WSAD进行前后左右移动&#xff0c;通过鼠标右键进行旋转 Step1:创建一个Player玩家&#xff0c;在节点下加两个子物体&#xff0c;一个摄像头和一个Capsule充当身体 Step2:创建一个脚本挂载在Player节点下&#xff0c;再在这个Pl…...

【UBOOT】1-使用与烧写

​一、uboot简介 1&#xff09;uboot是一个裸机程序&#xff0c;比较复杂 2&#xff09;最主要的作用是引导Linux内核启动&#xff1b; 初始化DDR&#xff1b; 因为Linux是运行在DDR里面的&#xff1b;而Linux镜像&#xff08;zImage或uImagedtb&#xff09;一般存放在SD EMM…...

竞赛 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…...

XTU-OJ 1331-密码

题目描述 Eric喜欢使用数字1,2,3,4作为密码&#xff0c;而且他有个怪癖&#xff0c;相邻数字不能相同&#xff0c;且相差不能超过2。当然只用数字做密码&#xff0c;会比较弱&#xff0c;Eric想知道当长度为n时&#xff0c;这样的密码有多少种&#xff1f; 输入 第一行是一个整…...

【docker】ubuntu下安装

ubuntu下安装docker 卸载原生docker更新软件包安装依赖Docker官方GPG密钥添加软件来源仓库安装docker添加用户组运行docker安装工具重启dockerhelloworld 卸载原生docker $ apt-get remove docker docker-engine docker.io containerd runc更新软件包 apt-get update apt-get…...

Linux- 命名信号量和无名信号量的区别

命名信号量和无名信号量之间的区别主要在于它们的可见性、生命周期以及如何在进程或线程之间共享。根据这些特点&#xff0c;它们各自更适合不同的应用场景&#xff1a; 命名信号量&#xff1a; 可见性&#xff1a;命名信号量由一个与其关联的名称标识&#xff0c;通常在某种文…...

【C/C++】STL——深度剖析list容器

​&#x1f47b;内容专栏&#xff1a; C/C编程 &#x1f428;本文概括&#xff1a;list的介绍与使用、深度剖析及模拟实现。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.10.12 一、list的介绍与使用 1.1 list的介绍 cpluplus网站中有关…...

#力扣:136. 只出现一次的数字@FDDLC

136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public int singleNumber(int[] nums) {int ans 0;for(int num: nums) ans ^ num;return ans;} } 二、C class Solution { public:int singleNumber(vector<int>& nums…...

VR、AR、MR、XR到底都是什么?有什么区别

目录 VRARMRXRAR、VR、MR、XR的区别 VR 英&#xff1a;Virtual Reality 中文翻译&#xff1a;虚拟现实 又称计算机模拟现实。是指由计算机生成3D内容&#xff0c;为用户提供视觉、听觉等感官来模拟现实&#xff0c;具有很强的“临场感”和“沉浸感”。我们可以使用耳机、控制器…...

UE5射击游戏案例蓝图篇(一)

一、使用到的资源 1.小白人动画包 2.基础武器包 3.虚幻商城免费的模型包 二、角色创建 1.以Character为基类创建出需要的角色&#xff0c;双击打开之后并在已有组件的基础上&#xff0c;添加摄像机臂和摄像机两个组件。添加完成之后可以根据自己的需要调整摄像机臂的位置&…...

excel管理接口测试用例

闲话休扯&#xff0c;上需求&#xff1a;自动读取、执行excel里面的接口测试用例&#xff0c;测试完成后&#xff0c;返回错误结果并发送邮件通知。 分析&#xff1a; 1、设计excel表格 2、读取excel表格 3、拼接url&#xff0c;发送请求 4、汇总错误结果、发送邮件 开始实现…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...