5.20Git

版本控制工具Git,其他的工具还有SVN

共享代码,追溯记录,存储.c文件

Git实现的功能:回溯(以前某个时间节点的数据情况)共享(大家共享修改)

Git:80%       SVN(离线不可用安全): 10%  使用率

Git:地址公司发

 如果是使用hhs的方式的话 clone方式和账号密码输入验证机制改变

在公司中如果是自己搞的服务器拿到的公钥要给给服务器管理者设置一下就可以了。

git的使用主要问题在于入职的第一天,最难的是查看分支。

以后主要就是这两个指令

git push

git put

【注意】git是一个工具,在linux系统和windows系统输入命令都是一样的。

git和gitee,github的关系

git是一个工具是一个软件

gitcode,gitee,github是一个远程的仓库,也可以自己建立一个服务器,通过git进行访问

去公司需要清楚公司的远程仓库是存在什么位置,有可能是在公司自己的服务器上,有可能也是在gitee上如果是在gitee上的话连手机热点的话就可以获得。如果是在局域网中的一个服务器的话,就不能下载,需要连接局域网。

对于远程仓库的上传和下载需要验证账号密码

本地的邮箱和用户名(只是用来作为一个标识)和远程仓库的账号和密码没有关系。

记得需要注意在这里设置

git config --global user.email 222@qq.com
git config --global user.name youname

git config --global core.editor vim

可以在.git中的.gitcong中查看

 在如果远程是一个开源库,这样的话需要在git push和 git pull的时候需要输入密码

如果远程是一个私有库,这样的话是在clone的时候需要输入密码。

如果只是想要输入一次密码而不是多次输入密码的话使用这个命令:

注意: (如果老是每次都和中央仓库交互都需要输入账号密码:  windows:  <strong>git config --global credential.helper manager</strong> ) (Linux:     <strong>git config --global credential.helper store</strong>) 

本地的邮箱和用户名只是用来标识谁在什么时候上传了什么代码

readme是对于当前程序的说明文档,会进行自动更新。

两种下载方式:下载zip就是下载一份代码不会进行后续的互动,需要有后续的互动修改的话,就采用https的方式或者是ssh方式进行下载

通过git alone进行下载以后在本地会有一个与之同名的文件夹,其中会有一个文件夹.git由系统生成

.git记录文件变化,本地仓库和缓冲区一般可以认为对应.git。

可以认为工作空间是对应剩下的文件

一般在说的时候都是会说本地仓库缓冲区和工作空间

如果是开源的话,是可以搜到也可以上传。但是也还是不能上传,需要将一些成员添加为开发者和管理者。可以加一个开发者或者管理者(他可以邀请别人),可以进行访问和上传。

在哪个位置git clone的话,文件的数据就是会下载到哪一个地方

在执行git命令的时候需要注意是在工作空间中进行执行,其中会有两种情况可以实现就是可以在含.git的文件夹中(在这个文件夹中创建文件),也可以在这个位置创建一个文件夹在这个文件夹也可以。

刚刚创建的文件一开始是放在工作空间中如果想要上传到远程仓库中需要一层层上传。

git add filename就是将工作空间指定文件的变化放到缓冲区

git add . 所有文件变化放在缓冲区中      git add *.c将所有的.c文件放到缓冲区中

【注意】注意记录到缓冲区的都是变化,并不是文件本身。

【注意】将工作空间的变化放到缓冲区中还是可以一个文件一个文件的放,在其他的时候传递的话都是只能整体进行传输

【注意】当修改文件以后,还需要再次提交修改记录。

当从工作空间删除文件以后,再次git add以后缓冲区的记录就会消失,只有在下面这两层才能抵消

缓冲区的变化必须要一次交给本地仓库

git commit -m '备注' 将缓冲区的变化放到本地仓库中去会一次上传全部,如果没有在一开始就设置用户或者是邮箱的话,这个将git commit -m ‘备注’ 会失败因为找不到

【注意】备注必须要加要明确说明自己做了什么用中文就好,对于工作而言

通过看同事的备注来写自己的备注。

git是以版本来记录变化

commit后跟的是版本号,后面就是我们自己提交的信息,版本是基于上一个版本的更新。

 initial commit是一开始创建的时候勾选的初始化

【注意】以上的变化都是在本地的,并没有影响远程仓库。

将本地仓库的变化上传到远程仓库中去

每天写完以后都add,commit,进行版本的迭代,如果说新的版本不够好,还能找回来旧的版本

分支问题(很重要)

可能会出现这个项目写了一半可能需要写另外一个项目的情况,这个时候如果直接写新的代码将log交织在一起,就乱了。

只要不将分支进行合并的话,主逻辑是不会变化的。(在每次变化以后都add和commit)

当然可以分支再分支不用易错

上面是本地仓库的分支,下面的是远程仓库的分支。

【实际工作】要不都是在远程创建分支,要不就是在本地创建分支,不要再远程和本地都弄就混乱

git branch haha 创建一个新的分支

git checkout haha 切换到分支haha

可以将两个任务合在一起git checkout -b haha

【注意】在一个分支中不add不commit的话没有跟踪的话就没有保存在这个分支中会出错

将log记录用一行显示,显示所有的分支,以图标的形式显示

 这种情况是主分支产生了y型分支

 

如果是进行y型分支还是一样的指令,会弹出来一个vim编辑器里面就是可以添加的注释

在看这个的时候就需要注意就是在看每一个分支的时候就是看哪个分支是有*号的,就是哪个分支有哪个文件。

当然在这种情况下在dev1分支中没有master.c文件的这个时候如果想让dev1分支有这个文件的话,就将这个分支再合并回来。

当这种y型分支结构进行合并的时候如果是在master分支进行合并的时候(git merge dev1)这样的话主逻辑标记向前移动一个版本,dev1也想像向前移动一个版本的话直接merge就向前移动一下

条件1当没有y型分支结构的时候,书面写法是 dev1分支领先master分支(一个版本????)

条件2需要先切换回主分支

git merge dev1就可以进行合并,在底层的实现就是将主分支的标记向前移动一位。

冲突情况的处理

第一种情况:版本冲突:两个分支都都是修改的同一个文件,修改的内容无冲突(绝大多数情况)

一样可以进行merge,git工具会自动合并出一个合并版本,文件中的内容这两处修改都会被包含

第二种情况:两个分支都都是修改的同一个文件,修改的内容有冲突,即修改的内容内存空间是连续的。(工作中谁遇到冲突谁解决,一般遇不到)

怎么判断是不是相邻的内存,是由git进行判断,不是说隔一个字就不是相邻的了

这种情况如果还是用第一种的方式的话(在使用merge命令的时候),就会出现合并冲突问题。

这个时候在去访问这个文件的时候,会发现里面发生了变化,第一步是手动改成自己想要的内容(记得删除==《《等)第二步是再add和commit

【注意】当在dev1分支在继续向后进行处理的时候需要在dev1进行merge进行合并,再写dev1的时候再从主逻辑继续创建分支,避免冲突混乱。

本地与远程

注意本地和远程也可能出现像是本地的主要的分支和次要的分支,注意需要本地上传的时候是基于本地的主分支进行上传。

当基于上一个版本,远程和本地的仓库都有不同的版本的时候,也就是y型结构。这个时候本地是不能上传的,需要先进行pull拉下来

【注意】本地和远程是保证是一个名字,同时本地和远程也是都可以创建分支但是只在一端操作

git push                           简写指令

git push origin master    将master分支主分支推到远程上面去

git push --set-upstream origin 分支名 将非主分支推到远程
git push origin --delete 分支名 删除远程分支

git push就是相当于将本地的版本推到远程服务器上去,当本地的服务器版本比较落后的时候再使用git pull把数据拉下来

当然可以在本地linux进行分支的建立,也可以在远程进行分支的建立

git fetch origin 分支名  更新获取远程仓库的状态,将这个状态拉下来到本地

git merge origin 分支名  

这个时候就可以理解为本地的两个分支,合并之后可以得到一个合并版本,这个时候本地就是上传数据了。

// 把远端的关联的分支fetch下来,并且merge到当前所在分支上 
git pull origin 分支名 相当是上两个命令合并

【注意】建议使用git pull origin 分支名

// 如果之前已经建立关联分支, 等价于(git pull origin 分支名)
git pull 上一个命令的简化版本

在b处出现了y型分支结构,通过fetch查看和merge合并到本地,pull将两个合在在一起

然后上传到远程。

当产生y型分支的时候需要在进行pull然后在进行push上传。

在协同工作的时候记得落后的时候记得pull 

【注意】没事要记得经常pull,大家早上pull,有可能同事先修改中午push上去,自己下午修改以后

【注意】一定一定记得git add和git commit将自己写的内容放到本地仓库以后,干净的状态以后再进行pull,也就是工作空间是干净的。可以通过git status进行查看。

【注意】不要经常push,这样的话同事会认为你更新了很多的内容。自己写了很多的内容,并且已经写的很完善了。在下午或者是晚上下班的时候再push。

最常见的分支模型

【注意】在使用的时候很少使用只有一个master的模型,一般都是用一个master和一个dev开发分支,在master中只是放最正确的版本,在dev分支中存放修改版本。

当对于dev分支修改的内容比较小的时候直接就在dev分支上面修改就可以,如果说修改的内容比较大的时候就可以在dev上面再重新开一个分支对于代码的内容进行修改,之后再将分支合并到dev修改分支上面去。

当发现master出现错误的时候也会需要对于版本进行修改,这个时候就是在master主线上开一个分支对于代码进行修改。这就是说当dev已经完善以后需要git push

删除分支

// 安全的删除: (确保这个分支的内容分支已经被合并到上游)
git branch -d 分支名
// 强制删除分支: 
git branch -D 分支名

就是说在一个分支上存在的数据在别的分支上没有

远程创建分支,将分支拉到本地

可以通过git pull知道远程的分支

git push origin dev2将数据上传到dev2分支上去

这两个dev2需要版本具有一致性,也就说远程和本地创建分支以前是一样的,

【重要】如何可以更加安全就是先git pull 然后再创建分支

如果说本地和远程上,远程是比本地要领先一个版本的,在本地dev上进行pull和merge,然后在进行后续的工作。

【重要】看公司的分支结构,不要在master上书写代码。

回退问题 (慎重因为回退是找不回来的)(在远程是不会进行回退的)

在工作空间的回退:这个地方在不同版本的ubanto系统中可能需要不同的代码进行回退

【了解】因为会有在输入git status的时候会有提醒。有的地方是使用git checkout 文件名,git restore 文件名

在缓冲区的回退:在回退一次以后就回到了工作空间,还要继续回退才可以

在本地仓库的回退:

git reset --hard 版本号(就是前面那个数据)

注意这个版本号不用一定要写全,在--oneline的时候版本号本身就是不全的。

【注意】远程仓库是不能回退的!!!!!已覆盖的方式修改

如果说是上传的时候,可以修改完程序的时候,自己修改完事以后再上传将文件数据覆盖掉。

紧急回退,如果说是版本错的比较多的时候,将远程的代码pull下来,在本地回退以后再上传上去。

可以使用可视化的工具,可以追溯历史,并且可以add和commit等pull和push

也可以在gitee中查看历史记录

忽略文件:

文件太大,文件太多,文件没用(.o)没有必要上传远程仓库

git文件的大小是有限制的,一般是1024M,这个也是和git的应用场景是有关的,如果文件特别大的时候不如说是可以用优盘直接传。

有时候不会上传一个动态库,也可能是因为文件的个数非常多,太过于碎片化

vim .gitignore名字是固定的。

例如在其中可以设置为*.o表示忽略所有的o文件

【注意】被追踪的文件是不可以被忽略的(加ignore文件的时间太晚了)。所以尽可能早的创建ignore文件。(在创建仓库的的时候有选项 )

这个.ignore文件就是记得在创建仓库的时候就创建。

【问题】如果是在ignore文件创建以前有想被忽略的文件,需要删掉重搞这个文件。

如果是本地已经写好了很多的代码数据,忘记交给git进行管理。这种情况可以在远程创建一个已经inittal库,然后将本地的文件复制过去。注意可能忽略的文件,不要忘记在.ignore文件中进行忽略。

远程创建一个空仓库,不想移动代码,就这样。在本地打开gitshll命令输入行,在本地进行

本地进行git init,然后再去关联远程仓库

// 方法一
1, 手动创建远程仓库
2, 创建本地仓库(git clone): 产生本地仓库, 工作空间, 缓冲区
3, 把文件移到  工作空间 目录
4, 管理文件(git add .)
5, 产生版本(git commit -m '注释')到本地仓库
6, 提交到远程仓库git push
7, 正常使用

需要关联一个远程仓库

方法二
1, 在代码文件所属目录, 创建本地仓库(git init)(还创建了缓冲区 和 工作空间)
2, 管理文件(git add .)
3, 产生版本(git commit -m '注释')到本地仓库
4, 创建远程仓库: 不要选择任何模板和初始化  (创建了一个全空的远程仓库)
5, 关联远程仓库: git remote add origin https://gitee.com/snow-lee/lalala.git
6, 提交到远程仓库: git push -u origin "master"
7, 正常使用

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

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

相关文章

The Missing Semester of Your CS Education(计算机教育中缺失的一课)

Shell 工具和脚本(Shell Tools and Scripting) 一、shell脚本 1.1、变量赋值 在bash中为变量赋值的语法是foobar&#xff0c;访问变量中存储的数值&#xff0c;其语法为 $foo。 需要注意的是&#xff0c;foo bar &#xff08;使用空格隔开&#xff09;是不能正确工作的&…

基于灰狼优化算法优化RBF(GWO-RBF)的数据回归预测(多输入多输出)

代码原理及流程 基于灰狼优化算法优化多输入多输出&#xff08;MIMO&#xff09;的RBF神经网络的数据回归预测&#xff0c;可以采取以下步骤&#xff1a; 1. 数据准备&#xff1a;准备包含多个输入特征和多个输出目标的数据集&#xff0c;确保数据已经经过预处理和归一化。 …

CSS基础(第二天)

Emmet语法 快速生成HTML结构语法 1. 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多个相同标签 加上 * 就可以了 比如 div*3 就可以快速生成3个div 3. 如果有父子级关系的标签&#xff0c;可以…

算法刷题笔记 数的范围(C++实现)(二分法重要例题)

文章目录 题目描述题目思路题目代码&#xff08;C&#xff09;题目感想 题目描述 给定一个按照升序排列的长度为n的整数数组&#xff0c;以及q个查询。对于每个查询&#xff0c;返回一个元素k的起始位置和终止位置&#xff08;位置从0开始计数&#xff09;。如果数组中不存在该…

自动化测试--利用pytest实现整条业务链路测试

​ 概述 前面一章讲解了单个接口的测试&#xff0c;但是实际项目中&#xff0c;因为权限和登录状态的限制&#xff0c;大部分接口没办法直接访问到&#xff0c;这时候我们想访问到一个系统的接口&#xff0c;就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息…

vivado2020.2创建hls仿真工程实现led闪烁

下载vivado2020.2后会有这个出现在桌面 点击进入创建工程&#xff0c;这里注意不要有前面的\我再复制的时候复制错了导致创建失败 按f光标就会跳转到下一个f开头的函数处&#xff0c;要查找其他函数也同理 生成了一个synthesis summary文件 找到目录下生成的.v文件 an 点…

Pod进阶——资源限制以及探针检查

目录 一、资源限制 1、资源限制定义&#xff1a; 2、资源限制request和limit资源约束 3、Pod和容器的资源请求和限制 4、官方文档示例 5、CPU资源单位 6、内存资源单位 7、资源限制实例 ①编写yaml资源配置清单 ②释放内存&#xff08;node节点&#xff0c;以node01为…

有些错误,常犯常新、常新常犯:记录一个使用element-plus的tooltip组件的错误

使用element-plus的tooltip组件&#xff0c;最开始的写法是这样的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

【C语言】程序员自我修养之文件操作

【C语言】程序员自我修养之文件操作 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C语言学习之路 文章目录 【C语言】程序员自我修养之文件操作前言一.文件介绍1.1为什么使用文件1.2文件分类1.3二进制文件和文本文件 二.文件的打开和关闭2.…

桌面藏线大法

1有线改无线&#xff1a; 蓝牙鼠标 蓝牙键盘 蓝牙耳机 2将排插贴到桌子底下 购物软件上搜 3断舍离 不要的电子产品统统扔掉 4 洞洞板和挂钩 这个不用介绍了

暴雨信息液冷计算解决方案亮相CCIG 2024

5月24日&#xff0c;2024中国图象图形大会&#xff08;CCIG&#xff09;在陕西西安正式开幕。作为涵盖图像图形各专业领域的综合性的全国性学术会议&#xff0c;CCIG面向开放创新、交叉融合的发展趋势&#xff0c;为图像图形相关领域的专家学者和产业界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些优势?智慧医疗云(HIS)低成本与安全保障的完美结合

JavaSpring MySQL MyCat云HIS有哪些优势&#xff1f;智慧医疗云(HIS)低成本与安全保障的完美结合 云HIS的优点包括节省成本、便捷高效、稳妥安全等。通过云HIS&#xff0c;医疗机构无需在本地建立机房、购买服务器和应用软件&#xff0c;降低了硬件和人力成本。同时&#xff0…

虚拟化介绍

虚拟化介绍 概述概念特点优势实现手段 虚拟化架构概述寄居虚拟化架构裸金属虚拟化架构操作系统虚拟化架构混合虚拟化架构几种虚拟化架构的比较虚拟化架构与虚拟化技术的关系 虚拟化技术分类服务器虚拟化技术分类 存储虚拟化技术分类网络虚拟化技术分类 服务器虚拟化技术处理器虚…

开源软件 | 一文彻底搞懂许可证的定义、起源、分类及八大主流许可证,让你选型不再头疼

为什么开源软件会存在许可证&#xff0c;许可证的起源与产生目的是为了解决什么问题&#xff1f;许可证的定义又是怎样的&#xff1f;什么是Copyleft&#xff0c;与Copyright有何区别&#xff1f;开源软件常见的许可证有哪些&#xff1f;这些许可证都有什么特点&#xff1f;接下…

Zabbix实现7x24小时架构监控

上篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/138774511 文章目录 Zabbix功能介绍Zabbix平台选择安装Zabbix监控端部署MySQL数据库Zabbix参数介绍登录Zabbix WEBWEB界面概览修改WEB界面语言添加被控主机导入监控模板主机绑定模板查看主机状态查看监控数据解…

代码随想录算法训练营第三十四天 | 理论基础、455.分发饼干、376、摆动序列、53.最大子序和

目录 理论基础 455.分发饼干 思路 代码 376.摆动序列 思路 代码 53.最大子序和 思路 代码 理论基础 代码随想录 455.分发饼干 代码随想录 思路 可以是大饼干优先满足大胃口&#xff0c;也可以是小饼干优先满足小胃口。 代码 class Solution:def findContentChildre…

ArkUI-X开发指南:【SDK配置和构建说明】

ArkUI-X SDK配置和构建说明 ArkUI-X SDK是ArkUI-X开源项目的编译产物&#xff0c;可将ArkUI-X SDK集成到现有Android和iOS应用工程中&#xff0c;使开发者基于一套ArkTS主代码&#xff0c;就可以构建支持多平台的精美、高性能应用。SDK内容包含ArkUI跨平台运行时&#xff0c;组…

B站自动回复插件_无需千粉,轻松适配引流拉新资源分享

项目介绍 B站关键词自动回复插件&#xff0c;无需千粉&#xff0c; 很适合做流量做引流做私欲的朋友&#xff0c; 前期没有千粉是无法开启官方自动回复的&#xff0c; 适当的情况下可以用这个插件顶一下&#xff0c; 三联好评领取资源的打法真的超级涨粉&#xff0c; 感谢插件…

HAL库点LED灯

文章目录 一、创建CubeMX项目操作步骤1.STM32CubeMX创建工程2.选择芯片3.Pinout & Configuration配置4.Clock Configuration配置5.Project Manager配置 二、实验&#xff08;一&#xff09;LED流水灯1.Keil修改代码2.实验现象3.keil波形仿真 &#xff08;二&#xff09;2只…

变量命名的艺术:让你的代码更具可读性

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;为何变量命名如此重要&#xff1f; 二、变量命名的基本规则 1. 避免数…