Git 内容学习

一、Git 的理解

Git是一个分布式版本控制系统(Distributed Version Control System,简称 DVCS),用于对项目源代码进行管理和跟踪变更。分为两种类型的仓库:本地仓库和远程仓库。

二、Git 的工作流程

详解如下:

本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库)

远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器)

工作区: 我们自己写代码(文档)的地方

暂存区: 在 本地仓库中的一个特殊的文件(index) 叫做暂存区,临时存储我们即将要提交的文件区域。


clone(克隆):将远程仓库中克隆代码到本地仓库。

checkout(检出):从本地仓库中检出一个仓库分支然后进行修订。

add(添加):在提交前先将代码提交到暂存区。

commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本。

fetch(抓取):从远程仓库抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

Pull(拉取):从远程仓库代码下载到本地仓库,自动进行合并(merge),然后放到工作区,相当于fetch+merge。

push(推送):修改完成后,需要和团队共享代码时,将本地仓库代码推送到远程仓库。

三、Git 的安装

1.Git的下载和安装

前面有一篇文章写过Windows版本的git安装教程

Git GUI:Git提供的图形化界面工具。

Git Bash:Git提供的命令行工具。

2.Git的基本配置

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

基本配置(打开Git Bash):
1.设置用户信息
git config --global user.name "用户名称"
git config --global user.email "email地址"
2.查看配置信息
git config --global user.name
git config --global user.email

四、Git 的基本使用(本地仓库)

1.获取本地仓库

1)在电脑任意位置创建一个目录(eg:test),作为我们的本地Git仓库;

2)进入该目录,打开Git Bash窗口;

3)执行命令git init;

4)如果创建成功可在文件夹里看到隐藏的.git目录;

git init : 初始化当前目录为一个git仓库

2.基本操作指令

Git工作目录下对于文件的修改(增加,删除,更新)会存在几个状态,这些修改的状态会随着我们执行Git目录而发生变化。(Git工作目录:本地仓库里除了隐藏的.git目录。)

1)控制状态转化的命令:
git add (工作区  -->  暂存区) / git add . 添加当前目录所有文件到暂存区
git commit (暂存区  -->  本地仓库)
2)查看修改状态(status)
git status
3)添加工作区到暂存区(add)
git add 单个文件名/.(通配符)  添加工作区一个文件/所有文件的修改到暂存区

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

git commit -m "注释内容"    提交暂存区内容到本地仓库的当前分支
5)查看日志提交记录
git log
git reflog (同时存在就删除的记录)
git log [option]
其中option有:
--add:显示所有分支    
--pretty=oneline:将提交信息显示为一行  
--abbrev-commit:使得输出的commitld更简短    
--graph:以图的形式显示
6)版本回退/切换
git reset --hard commitID   (commitID可使用git log指令查看)
git reflog (查看已经删除的记录)
7)添加文件至忽略列表

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

常见格式:

# 所有以.a 结尾的文件讲被忽略(递归)
*.a
# 不管其他规则怎样,强制不忽略  lib.a
!lib.a
# 只忽略 文件 TODO (注意这里是文件)
/TODO
# 忽略 build文件夹下所有内容(递归) 这里是文件夹
build/
# 忽略 doc 目录下以 *.txt 结尾的文件 (不递归)
doc/*.txt
# 忽略 doc 目录下以 *.pdf 结尾的文件 (递归)
doc/**/*.pdf

3.分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间互不影响。(把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。)

1)查看本地分支
git branch
2)创建本地分支
git branch 分支名
3)切换分支(checkout)
git checkout 分支名
git checkout -b 分支名	(切换到一个不存在的分支--创建并切换)
4)合并分支(merge)
git merge 分支名称	(一个分支上的提交可以合并到另一个分支)
5)删除分支
不能删除当前分支,只能删除其他分支
git branch -d 分支名称	删除分支前,需要做各种检查
git branch -D 分支名称  不做任何检查,强制删除
6)解决分支

当两个分支上对文件的修改存在冲突,eg:同时修改了同一个文件的同一行,这时需要手动解决冲突。

1.处理文件冲突的地方(之间将每个分支进行修改的内容改为最终希望合并的内容);

2.将解决完冲突的文件加入暂存区(add);

3.提交到仓库(commit);

4.开发中分支使用原则与流程

  • master(生成)分支

    线上分支,主分支,中小模型显目作为线上运行的应用对应的分支;

  • develop(开发)分支

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

  • feature/xxxx分支

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

  • hotfix/xxxx分支

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

  • 其他分支

五、Git 的基本使用(远程仓库)

1.常用的远程仓库托管服务

https://github.com/	(国外)
https://gitee.com/	(国内)
https://about.gitlab.com/

github  是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
gitee    即码云,是 oschina 免费给企业用的,不用自己搭建环境。
gitlab	类似 github,一般用于在企业内搭建git私服,要自己搭环境。

2.gitee 使用

1)码云账户注册
2)创建远程仓库

3)配置SSH公钥(解决无需每次都输入身份验证密码)

Git配置公私钥对是为了进行安全的远程代码交互,主要用于通过SSH协议进行身份验证和加密通信。

在Gitee上配置SSH公钥的目的是将您的公钥与Gitee账户关联起来,以便在使用SSH协议进行远程代码交互时进行身份验证和安全通信。要配置SSH公钥到Gitee,请先生成SSH密钥对(公钥和私钥),然后将公钥添加到Gitee账户的SSH密钥设置中。这样就能够通过SSH协议与Gitee仓库进行安全的代码交互。

参考网址:SSH 公钥设置 | Gitee 产品文档

打开Git Bash窗口:

1.生成SSH公钥:

ssh-keygen -t rsa	(不断回车:如果公钥存在,则自动覆盖)
会默认用户目录 .ssh 目录生成一个默认的id_rsa文件 和id_rsa.pub

2.Gitee SSH密钥配置

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

2.2

2.3 验证配置是否成功
ssh -T git@gitee.com

4)操作远程仓库

把本地代码推送到远程仓库

1.添加远程仓库
4.1 添加远程仓库	(先初始化本地仓库git init,然后与已创建的远程仓库进行对接)
git remote add <远程名称> <仓库地址>
远程名称:默认是origin,取决于远程服务器设置
仓库地址:从远程服务器获取此地址URL

4.2 查看远程仓库
git remote
2.推送到远程仓库
4.3 推送远程仓库
git push [-f] [--set-upstream] [远程名称][:远程分支名]
**如果远程分支和本地分支名称相同,则可以只写本地分支==git push origin master:master
git push origin master
**-f表示强制覆盖(谨慎使用)
**--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系
git push --set-upstream origin master
	--如果当分支已经和远端分支关联,则可以省略分支名和远端名
	git push 将master分支推送到已关联的远端分支。

4.4 本地分支与远程分支的关联关系(--set-upstream:可建立关联)
git branch -vv
3.从远程仓库克隆
4.5 如果已经有一个远端仓库,我们可以直接clone到本地
git clone <远程仓库路径> [本地目录]	(本地目录可以省略,会自动生成一个目录)
4.从远程仓库中抓取和拉取

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

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

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

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。

A先修改推送,B晚于A,故需先拉取远程仓库的提交,经过合并后才能推送到远端分支。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CATIA环境编辑器用不了时创建项目快捷方式

CATIA环境编辑器用不了时创建项目快捷方式 一、参考适用情况示例二、 解决步骤(一) 先正确放置winb_64部署包(二) 添加环境文件(三) 修改加入的环境文件(四) 复制本机CATIA快捷方式后重命名(五) 修改快捷方式目标的值 一、参考适用情况示例 二、 解决步骤 (一) 先正确放置winb…

社区分享|杭银消费金融基于MeterSphere开展接口自动化测试

杭银消费金融有限公司&#xff08;以下简称“杭银消费金融”&#xff09;成立于2015年12月&#xff0c;是经中国银保监会批准&#xff0c;由杭州银行作为主发起人&#xff0c;联合滴滴出行、中国银泰等企业组建的持牌消费金融机构&#xff0c;注册资本为25.61亿元。杭银消费金融…

关于Alibaba Cloud Toolkit 下载配置以及后端自动部署

idea中File-Settings-Plugins 搜索Alibaba Cloud Toolkit点击下载&#xff0c;下载完成重启 1、点击 Tools-Alibaba Cloud-Deploy to Host 部署到主机 2、配置服务器ip、jar包启动命令、服务器jar存放位置 3、设置服务器ip用户名密码&#xff0c;点击测试连接情况 4、配置脚本…

计算机的运算方法

无符号数 定义&#xff1a;没有符号的数&#xff0c;在寄存器中的每一位均可用来存放数值 表示范围&#xff1a;n 位无符号数 0~2n -1 有符号数 定义&#xff1a;符号位数值位 “0”代表正&#xff0c;“1”代表负 表示范围&#xff1a;n 位有符号整数 原码、反码&#x…

Rust编程基础之引用与借用

1.引用与借用 在上一章节最后的代码中, 我们必须将 String 返回给调用函数&#xff0c;以便在调用 calculate_length 后仍能使用 String&#xff0c;因为 String 被移动到了 calculate_length 内。相反我们可以提供一个 String 值的引用&#xff08;reference&#xff09;。引…

理解交叉熵(Cross Entropy)

交叉熵&#xff08;Cross-Entropy&#xff09;是一种用于衡量两个概率分布之间的距离或相似性的度量方法。在机器学习中&#xff0c;交叉熵通常用于损失函数&#xff0c;用于评估模型的预测结果与实际标签之间的差异。 在分类问题中&#xff0c;交叉熵损失函数通常用于多分类问…

uniapp小程序才到第五层就报错navigateto:fail webview count limit exceed

错误截图 原因 小程序官方描述是说可以跳转10层&#xff0c;但是使用uniapp开发的程序在小程序中才运行到第五层就报错了&#xff0c;原因是因为没有设置appId。如果设置了就正常了。

Docker与微服务实战——基础篇

Docker与微服务实战——基础篇 第一章 Docker 简介1.1 docker 理念1.2 容器与虚拟机比较 第二章 Docker 安装2.1 前提说明2.2 Docker的基本组成2.2.1 镜像&#xff08;image&#xff09;2.2.2 容器&#xff08;container&#xff09;2.2.3 仓库&#xff08;repository&#xff…

php实现普通和定时跳转的几种方式

一、普通跳转 1、使用header函数&#xff1a;通过设置HTTP头部信息实现页面跳转。可以使用Location头部指定跳转的URL。例如&#xff1a; header("Location: http://www.example.com"); exit(); 2、使用JavaScript&#xff1a;可以使用JavaScript的window.location…

HCIA_数据链路层

如果数据进行封装时&#xff0c;基于E2或者802.3标准&#xff0c;此时我们称之为是一个以太网帧 1、EthernetII 采用EthernetII协议会在数据基础之上多出18Byte&#xff0c;EthernetII的数据长度是46-1500B FCS&#xff08;Frame check Sequence&#xff09;帧校验序列&#…

Linux安装nodejs问题

安装nodejs后&#xff0c;使用node -v报下图 参考下面两个可解决&#xff1a;【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version GLIBC_2.27‘ not found-CSDN博客 报错信息ImportError: /lib64/libstdc.so.6: version CXXABI_1.3.9‘ not f…

技术分享 | app自动化测试(Android)--元素定位方式与隐式等待

元素定位是 UI 自动化测试中最关键的一步&#xff0c;假如没有定位到元素&#xff0c;也就无法完成对页面的操作。那么在页面中如何定位到想要的元素&#xff0c;本小节讨论 Appium 元素定位方式。 Appium的元素定位方式 定位页面的元素有很多方式&#xff0c;比如可以通过 I…

C++day4

1.思维导图 2.设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数、拷贝赋值函数。 #include <iostream&…

mybatis在springboot当中的使用

1.当使用Mybatis实现数据访问时&#xff0c;主要&#xff1a; - 编写数据访问的抽象方法 - 配置抽象方法对应的SQL语句 关于抽象方法&#xff1a; - 必须定义在某个接口中&#xff0c;这样的接口通常使用Mapper作为名称的后缀&#xff0c;例如AdminMapper - Mybatis框架底…

2023年中国金融控股公司研究报告

第一章 行业概况 1.1 定义 金融控股公司这一术语最初源自美国&#xff0c;特别是在美国的《金融服务法案》关于银行控股公司组织结构的条文中&#xff0c;首次出现了“金融控股公司”&#xff08;Financial Holding Company&#xff09;这一法律术语&#xff0c;尽管法案中并…

使用Ruby编写通用爬虫程序

目录 一、引言 二、环境准备 三、爬虫程序设计 1. 抓取网页内容 2. 解析HTML内容 3. 提取特定信息 4. 数据存储 四、优化和扩展 五、结语 一、引言 网络爬虫是一种自动抓取互联网信息的程序。它们按照一定的规则和算法&#xff0c;遍历网页并提取所需的信息。使用Rub…

《安富莱嵌入式周报》第326期:航空航天级CANopen协议栈,开源USB PD电源和功耗分析,开源EtherCAT伺服驱动板,时序绘制软件,现代机器人设计

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程&#xff1a; BSP视频教程第28期&#xff1a;CANopen协议栈专题&#xff0c;CANopen主从机组网实战&a…

考研408-计算机网络 第一章-计算机网络体系结构学习笔记及习题

第一章 计算机网络体系结构 一 计算机网络概述 1.1 概念及功能 1.1.1 计算机网络的概念 计算机网络就是互连的、自治的计算机系统的集合 互连&#xff1a;通过通信链路互联互通 自治&#xff1a;各个节点之间无主从关系&#xff0c;高度自治的 1.1.2 计算机网络的功能 功…

【STM32】Systick定时器

一、STM32的5种定时器简介 1.独立看门狗&#xff08;IWDG&#xff09; VS 窗口看门狗&#xff08;WWDG&#xff09; 1.独立看门狗&#xff08;IWDG&#xff09; 独立看门狗&#xff1a;当没有到设定时间之前&#xff0c;给它喂了狗&#xff0c;就会回到初始值。 2.窗口看门狗…

【Linux】:初识git || centos下安装git || 创建本地仓库 || 配置本地仓库 || 认识工作区/暂存区(索引)以及版本库

&#x1f4ee;1.初识git Git 原理与使用 课程⽬标 • 技术⽬标:掌握Git企业级应⽤&#xff0c;深刻理解Git操作过程与操作原理&#xff0c;理解⼯作区&#xff0c;暂存区&#xff0c;版本库的含义 • 技术⽬标:掌握Git版本管理&#xff0c;⾃由进⾏版本回退、撤销、修改等Git操…
最新文章