Git使用基础总结(从小白到新手版)
- (꒪ꇴ꒪ ),Hello我是祐言QAQ
- 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
- 快上🚘,一起学习,让我们成为一个强大的攻城狮!
- 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
- 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏
目录
一、 介绍
1. 什么是Git
2.安装Git(已装请跳过)
3. 配置Git(可跳过但还是得填)
二、Git的基本使用
1. 创建新仓库
(1)自己创建
(2)直接 clone
2. 肆无忌惮修改环节
3. 提交更改
(1)初始化仓库,使用 git init 命令
(2)将当前目录下所有的修改或新增的文件添加到暂存区
(3)提交更改
三、将代码上传至远程仓库Gitlab
1.建立本地仓库和远程仓库关系并推送
2. 本地内容上传至远程仓库
3. 提交和推送的区别
(1)提交修改 git commit
(2)推送更改 git push
四、关于分支管理和解决冲突
1. 分支管理
2. 解决冲突
报 fatal:remote origin already exists
📢写在最后
一、 介绍
1. 什么是Git
Git是一个分布式版本控制系统,由Linus Torvalds在2005年创建。它旨在追踪文件和目录的变化,并且支持多人协同工作。Git的设计目标包括速度、简单性、非线性开发(可以同时进行多个分支的工作)以及对大型项目的支持。Git是一个强大而灵活的版本控制系统,它在团队协作和个人项目管理中都有广泛的应用。通过熟练使用Git,你可以更有效地追踪项目历史、协同工作和管理代码。
2.安装Git(已装请跳过)
首先,你需要安装Git,打开浏览器手动搜索git(不要用百度,都是广告,我这里用的Bing)

当然你也你可以在这里直达(选择64-bit for Windows Setup),然后下载安装包,同意不pd条约,就安装完成了:Git - Downloading Package (git-scm.com)

安装完成后,直接在桌面右键,当你看到里面有这两行,那么就安装完成了。

3. 配置Git(可跳过但还是得填)
在开始使用Git之前,你需要配置用户信息,包括用户名和邮箱。这可以通过以下命令完成:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
二、Git的基本使用
1. 创建新仓库
使用Git进行版本控制的第一步是初始化一个新仓库,并进入项目目录。
(1)自己创建
首先我们在桌面右键后点击 Git Bash here 然后使用 cd 命令(基本的linux命令Linux终端介绍与常用shell命令35例-CSDN博客) 进入你想要存放代码的项目目录(我这里是在桌面新建的演示目录New)

(2)直接 clone
你也可以选择直接克隆而不是创建新的项目目录,使用git clone +目标地址,我这里选择的是opencv库作为演示地址(具体地址自行更换copy一下)。

git clone https://github.com/opencv/opencv.git
等待期加载完成即可,我这里就不等了跳过。

2. 肆无忌惮修改环节
当然,很多时候你们clone 的都是自己的代码,随意修改即可(vs code还是其他都好),直到你需要提交代码。
3. 提交更改
(1)初始化仓库,使用 git init 命令
git init

初始化完成后,本地文件会生成一个.git文件。

(2)将当前目录下所有的修改或新增的文件添加到暂存区
git add . ![]()
(3)提交更改
Git通过提交来跟踪项目的更改。用于将暂存中的更改创建为一次提交,使用以下命令:
git commit -m '提交描述' 三、将代码上传至远程仓库Gitlab
1.建立本地仓库和远程仓库关系并推送
git remote add origin http://ip地址+端口/路径/(项目名称).git 找到Gitlab上面http地址,克隆下来,把4492c9d4d2e9更改为指定的ip地址即可,当然如果你的地址不变还是要传回该地址,那么就直接copy就行,无需修改任何地方。

然后需查看是否连接成功,使用 git remote -v 命令来查看:
gir remote -v //检查 如果有误则用 git remote rm origin,重新连接一下:
git remote rm origin //重连 2. 本地内容上传至远程仓库
如需先拉取远程仓库的master代码则先执行:
git pull --rebase origin master 然后执行 git push -u origin master 命令:
git push -u origin master 成功的话就可以在你的gitlab上看到了,运行界面大致如下,只要不报红色错误,基本都是成功。

3. 提交和推送的区别
在Git中,提交修改(`git commit`)和推送更改(`git push`)是两个不同的操作,它们分别用于本地版本库和远程版本库。
(1)提交修改 git commit
①本地操作:git commit 用于将当前工作目录中的修改提交到本地版本库。这个操作将你在工作目录中所做的更改创建为一个新的提交(commit)。
②提交消息:每次提交都需要附带一个提交消息,这个消息描述了你所做的修改的目的和内容。
③不影响远程仓库:git commit 操作只影响你本地的版本库,其他开发者在他们的本地版本库中不会看到你的提交。
(2)推送更改 git push
①远程操作:git push 用于将本地的提交推送到远程版本库,通常是与共享仓库(比如GitHub、GitLab等)进行交互。这将你本地的提交同步到共享仓库中,以便其他开发者能够看到和获取这些更改。
②分支关联:在推送之前,通常你需要确保本地分支与远程分支关联。这可以通过 `git push -u origin <branch-name>` 命令来完成,其中 `<branch-name>` 是你的本地分支名。
③需要权限: 推送操作需要相应的权限。你必须有推送到远程仓库的权限,通常需要提供用户名和密码或者SSH密钥。
四、关于分支管理和解决冲突
1. 分支管理
分支是Git强大功能之一,可以用于并行开发和功能测试。在Git中,分支(Branch)是指指向某个提交对象的可变指针,它允许你在代码库中的不同开发线路上工作。每个分支都是一个独立的指针,指向版本库中的某个特定提交。这使得你可以在不影响主要代码线路的情况下开展新的工作,实现并行开发、功能分支、bug修复等。
- 创建分支:
git branch <branch-name>这个命令用于创建一个名为
<branch-name>的新分支。 - 切换分支:
git checkout <branch-name>或者
git switch <branch-name>这个命令用于切换到指定的分支。
- 创建并切换到新分支:
git checkout -b <new-branch-name>这个命令用于创建并立即切换到一个新的分支。
- 查看分支:
这个命令用于列出所有本地分支,当前分支会有一个git branch*号标记。
- 合并分支:
git merge <branch-name>
这个命令用于将指定分支的更改合并到当前分支。
- 删除分支:
git branch -d <branch-name>这个命令用于删除指定分支。请注意,要删除的分支不能是当前所在的分支。
- 远程分支:
远程分支是指在远程仓库上的分支,可以通过这两个命令获取远程分支。git fetch origin git branch -r
- 推送分支:
git push origin <branch-name>这个命令用于将本地分支推送到远程仓库。
2. 解决冲突
在合并分支或拉取更改时,可能会发生冲突。解决冲突的过程包括手动编辑文件以解决冲突并提交更改。
(1)报 fatal:remote origin already exists
这个错误通常表示你在尝试添加远程仓库时,Git 已经存在名为 "origin" 的远程仓库。origin 是Git默认用来指代远程仓库的名称,通常与你的项目关联。
如果你已经有了一个远程仓库,再次尝试添加 origin 将会导致这个错误。解决方法有两种:
①查看已有的远程仓库
你可以先查看已有的远程仓库,确认是否已经存在名为 "origin" 的远程仓库。可以使用以下命令查看:
git remote -v 如果已经存在 "origin",你可能不需要再次添加它。你可以直接使用已存在的远程仓库进行拉取和推送。
②修改已有的远程仓库
如果你确实需要修改远程仓库,你可以使用以下命令来修改 origin 的URL:
git remote set-url origin <new-url> 将 <new-url> 替换为新的远程仓库URL。这样可以更新 origin 的URL,而不会导致冲突。
请根据你的具体情况选择合适的方法。确保你了解项目当前的远程仓库设置,以便不会不小心覆盖或创建重复的远程仓库。
更多C/C++语言、Linux系统、数据结构和ARM板实战相关文章,关注专栏:
手撕C语言
玩转linux
脚踢数据结构
系统、网络编程
探索C++
6818(ARM)开发板实战
📢写在最后
- 今天的分享就到这啦~
- 觉得博主写的还不错的烦劳
一键三连喔~ - 🎉🎉🎉感谢关注🎉🎉🎉
相关文章:
Git使用基础总结(从小白到新手版)
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...
ck 配置 clickhouse-jdbc-bridge
背景 ck可以用过clickhouse-jdbc-bridge技术来直接访问各数据库,包括oracle,oracle也可以用jdbc,odbc没调研过 规划 jdbc-bridge是面向客户端的技术,也就是说,那个节点有客户端,哪个节点就需要ÿ…...
SpectralGPT: Spectral Foundation Model 论文翻译1
遥感领域的通用大模型 2023.11.13在CVPR发表 原文地址:[2311.07113] SpectralGPT: Spectral Foundation Model (arxiv.org) 摘要 基础模型最近引起了人们的极大关注,因为它有可能以一种自我监督的方式彻底改变视觉表征学习领域。虽然大多数基础模型…...
nuttx sim build
download nuttx: apache/nuttx: Apache NuttX is a mature, real-time embedded operating system (RTOS) (github.com) download genromfs https://github.com/chexum/genromfs make产生genromfs,复制到/usr/bin 编译nuttx: cd nuttx cmake -B b…...
c 语言中 unsigned int 类型的负数实际值大小
一 在c 语言中 unsigned int 类型的负数实际值大小 #include <stdio.h>int main() {int a 5;printf("a: %d\n", a);unsigned int b a - 10;printf("b: %d\n", b);printf("%d\n", b 4294967291); // unsigned int -5 4294967291retur…...
分块矩阵知识点整理:
1.分块方法:横竖线不能拐弯,思想为将矩阵分块看作向量计算 2.标准型 不一定是方的 特殊性:经过分块后会出现单位矩阵和0矩阵 3.分块矩阵的运算: 1.加减乘的运算与向量运算相同 4.分块矩阵求转置: 1.将子块看作普通元素求转置 2…...
elementPlus之home页面布局
可以根据自己喜欢的格式选择 现在 header 部分 Aside 部分 Main部分 加上背景色以及命名 <template><div class="common-layout"><el-container><el-header class="homeHeader"><div class="headerTitle">Dev…...
【数据结构】用C语言实现顺序栈(附完整运行代码)
🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个顺序栈: 该顺序栈使用动态内存分配空间,可以用来存储任意数量的同类型数据. 顺序栈结构体需要包含三个要素:存放数据的数组…...
鸿蒙(HarmonyOS)应用开发——生命周期、渲染控制、状态管理装饰器
生命周期 任何程序都是有一定的生命周期的。生命周期是记录从产生到销毁的过程;如果熟悉前端vue.js的话,就可以很好的理解生命周期。 自定义组件生命周期 ArkTS中,自定义组件提供了两个生命周期函数:aboutToAppear() 和aboutTo…...
yarn:无法加载文件 C:\Users\***\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本
原因:PowerShell 脚本的执行有着严格的安全策略限制! 解决方案:管理员身份启动Windows PowerShell 在命令行中输入set-ExecutionPolicy RemoteSigned 再使用yarn就可以了...
精彩预告 | OpenHarmony即将亮相MTSC 2023
MTSC 2023 第12届中国互联网测试开发大会(深圳站)即将于2023年11月25日,在深圳登喜路国际大酒店举办,大会将以“1个主会场4个平行分会场”的形式呈现,聚集一众顶尖技术专家和行业领袖,围绕如今备受关注的行…...
无线WiFi安全渗透与攻防(国外篇):使用 Aircrack-ng 破解 WEP 密码
使用 Aircrack-ng 破解 WEP 密码 使用 Aircrack-ng 破解 WEP 密码一. 用 Aircrack-ng 破解 WEP 密码 - 背景知识网卡与网卡芯片WEP 加密协议WEP 所使用的身份认证协议二. 使用 Aircrack-ng 破解 WEP 密码 - 破解原理破解机理三. 使用 Aircrack-ng 破解 WEP 密码 - aircrack-ng …...
广告机/商业显示屏_基于MT8788安卓主板方案
安卓主板在广告机领域扮演着重要的角色。无论是在商场、车站、酒店、电梯、机场还是高铁站,LED广告机广泛应用,并通过不同方式进行播放和管理。 广告机/商业显示屏_基于MT8788安卓主板方案 基于MT8788安卓主板方案的广告机采用了联发科MT8788八核芯片方案…...
字符串转换成十进制整数
编程要求 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则…...
面向对象高级---接口
接口 概念:接口就是一种公共的规范标准,只要符合规范,大家都可以通用 java中接口存在的两个意义 用来定义规范用来做功能的扩展 接口的特点 接口用关键字interface修饰 public interface 接口名{}类实现接口用implements表示 public class 类名 implements 接口名{}接口…...
轻松入门自然语言处理系列 项目3 基于Linear-CRF的医疗实体识别
文章目录 前言一、项目概况1.项目描述2.数据描述3.项目框架二、核心技术1.实体识别数据标注2.文本特征工程3.CRF模型4.BiLSTM-CRF模型三、项目实施1.读取数据2.数据标注3.文本特征工程4.模型训练5.模型评估6.BiLSTM-CRF总结前言 本文主要介绍了以Linear-CRF为基础模型进行医疗…...
批量按顺序1、2、3...重命名所有文件夹里的文件
最新: 最快方法:先用这个教程http://文件重命名1,2......nhttps://jingyan.baidu.com/article/495ba841281b7079b20ede2c.html再用这个教程去空格:利用批处理去掉文件名中的空格-百度经验 (baidu.com) 以下为原回答 注意文件名有空格会失败…...
你知道吗,这些行业的人也是工程师哦
止这些,其工作涉及多种领域,也就是说,有很多细分行业的开发人员也算是电子工程师,下面我们来看看有哪些电子工程师! 1、应用电子工程师 主要负责将电子技术与特定应用相结合,设计并开发满足特定需求的电子…...
1.6 C语言之数组概述
1.6 C语言之数组概述 一、数组二、练习 一、数组 所谓数组,就是内存中一片连续的空间,可以用来存储一组同类型的数据 数组有下标,从0开始,可以理解为是给数组中的元素编号,便于后续寻址访问 我们来编写一个程序&…...
论文阅读_生成式Agent
英文名称: Generative Agents: Interactive Simulacra of Human Behavior 中文名称: 生成代理:**人类行为的交互式模拟** 文章: http://arxiv.org/abs/2304.03442 代码: https://github.com/joonspk-research/generative_agents 作者: Joon Sung Park 机构: 斯坦福大…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
