C++ - git 命令行

为什么要有 git

你很可能遇到过这种情况,在写项目的时候,要我不符合 leader 的要求,因而修改了很多个版本,但是修改到最后一版的时候,leader 有觉得当前这版还没有之前 某一版好,现在又要求你在 之前的那一版上进行一些修改然后就提交;但是 , 对于leader需要的那一版的具体细节你也记得不是很清楚,也不好直接修改回去。

所以,你就在电脑当中创建了一个文件夹,里面存放的都是你修改过的代码不同版本的文件,我们把这个文件夹叫做本地仓库。这个本地仓库的使用者,就可对修改的不同版本的代码或者是其他文件 进行 版本隔离管理。

但是,这个项目你修改了这么多版本,怎么可能每一版都存储在在电脑当中,当这个项目很大,我们更不可能存储了。而且,在本地当中存储的 文件,很有可能会丢失,比如电脑损坏等等原因。

这时候,就有了 又有了服务器端,在服务器当中存储,我们把这种仓库称之为 远端仓库

 所以,此时,就可以让用户选择,是否要让 本地仓库当中的 文件 上传到 服务器当中。

而 现在我们所使用的 远端仓库,基本上都是 一些 大型企业 在进行管理的 服务器,一般来说是很难出现问题的,就算出现问题,也就很快进行解决。


而且,关于远端仓库不只有存储本地文件的作用,我们开发的一个大型项目,很多时候都不是我们自己一个人在开发,可能有很多人在一起开发,一个人完成一部分内容,然后,每一个把自己完成的那一部分内容上传到 远端仓库,供别人参考使用,来创建其他人自己要实现的一部分。这就是多人协作


当然,不只有git 一个软件,还有像类似 svn 这样的软件,但是,绝大数的软件是要收费的,但是 git 是开源免费的。

而所谓 git 就是一个 具有网络功能的控制器git 既可以充当 client(服务端),又可以做 server (服务端)。所以,我们既可以把自己代码推送上去,又可以把 别人的代码拉取下来我自己也可以搭建一个远端仓库,让别人拉取我的代码。

专业一点说,git 是一个 去中心化的分布式的版本管理器。

git 的发展

 在早期linux开源之后,linux 是一个操作系统,操作系统的软件规模要大得多,那么就注定了参与这个项目的人非常多,有大量的人提交代码,比如通过邮件等等的方式提交自己实现的软件代码文件,linux 的管理者,要审核这些代码的作用和问题,没问题就会把这些代码合并到 linux 代码当中。随着linux的开源,那么提交的代码量就大大增多,linux 当中暴露的问题也就更多了。

这时就有人想,有没有一款软件,能够实现自动合并 代码,然后实现版本隔离,刚开始肯定不是linux 的人自己写,肯定是先去网上寻找,看有没有现成的。但是,当时市面上的版本控制器是要收费的,那么linux 又是开源的,这就不符合了,开源的操作系统需要用一款闭源的版本控制器。

而且,收费不是谁都愿意缴费来使用这个版本控制器的,用户想从服务器当中拉取一段代码,还要话钱,用户肯定会不满意,毕竟这是开源的操作系统。那么对于开源的社区体量就有了一个限制了,不利于linux 的传播,这肯定不是 linux 开发者想看到的。 

在当时有一个 比较情怀的公司,专门做版本隔离软件的,也是靠这个软件存活的公司,就了解到 linux 有版本隔离软件这个需求,就免费给 linux 提供这个版本隔离的软件。但是,这个版本隔离软件,经过linux 内部人员 和 公司的进行加密的。

但是,毕竟 linux 是开源的,人才济济,有人就对 这个 版本隔离软件 进行 破解查看,此时就被 公司当中的人发现了,公司人就认为,免费给linux 用的软件,现在又被破解,心里就不舒服,就把 这个软件给回收 了。

至此,linux又一夜回到解放前。

所以,Linus Torvalds 就自己写了一个版本隔离软件,叫做 git。

但是 git 有只是一个软件,对于 服务器 还是要自己搭建,所以,就基于 git 搞了商业化的网站 ---    github 和 gitee。

同时,还基于 linux 内核 搞了一些   商业化的 OS 比如 :Centos,ubuntu等等      

安装 git

可以直接使用 yum 应用商店来安装:

yum install git

git 的使用  

把远端仓库拉取到本地 

在 linux 当中使用 git 把 gitee 当中的 远端仓库拉取到 本地,于本地仓库进行连接:

 在 gitee 当中选择你想链接的远端仓库,然后点击  "克隆/下载" ,选择 你想要 链接的协议,这里我们就选择 HTTPS,在公司当中可能更多会使用自己搭建的 比如 SVN 服务器。

复制上述链接。

打开你的linux 操作系统。

在链接之前,请确保你的 linux 操作系统当中已经安装了 git :

或者使用 git --version    git --help   查看:

如果是和上述类似的,说明此时已经安装好了。 

 此时我们在 用户目录当中新创建一个 test_git_code 目录,用于上传文件到  gitee。

然后使用如下命令来搭建 远端仓库和 本地仓库连接:

git clone 远端仓库链接

 在输入上述指令之后,就会让你输入用户名和用户密码,输入之后就配置成功了。

此时查看本目录下,就会发现一个新建的和 远端仓库同名的 本地文件夹。

在git 首次使用的时候,可能会让你设置一些 个人信息: 

只需要按照它的提示,输入 一下命令,  设置一下就行:
 

git config --global user.email ""   和 git config --global user.name ""

 设置这个个人信息,主要是:当自己上传的项目出现问题之后,被使用的用户发现了,后者是用户对于你的项目的使用等等的方面有各种各样的问题,需要用过这个练习方式来找到你。

 或者是在公司当中,写的项目,被 leader 发现了问题,那么leader 也可以通过这个方式来找到你。

使用git 三板斧 从本地 提交文件到远端仓库

我们 cd 到这个目录的当中去,使用 -al 查看当前目录下的全部文件,就会发现一个 .git 目录,这个目录就我们可以进行传输的目录了

 这还是一个 隐藏目录,这里面有你写入文件等等一些日志,之所以设置成隐藏文件,就是不想让你看到,不想让你做修改,所以我们千万不要对.git 目录当中的内容进行修改

 假设现在我们想把 text_git_code 这个文件上述传到 gitee 当中的话,就只需要直接把 这个文件 cp (移动)到 本地的于gitee仓库同名的文件当中,注意不是 .git 当中。

 然后使用  git add .   这个命名,表示把仓库当中 没有添加到 远端仓库的文件添加到,先暂时添加到 仓库的缓存区当中。

然后使用 git commit -m ""  命令。注意:其中 "-m" 是必须写的,"" 当中的内容就是提交这个文件的日志,这个日志也是要写的,而且不能胡写,要写这个文件当中做了什么。

上述两步其实都还是在本地目录当中,要上传到远端仓库当中还需要最后一步是:git push  把仓库缓存区当中文件推送到 远端仓库当中,这一步需要输入 用户名和密码

 注意:如果在使用 git add .  之后,又对要上传的文件进行了修改的话,一定要再次使用  git add .   命令,以为 add 命令不是上传 文件本身全部代码,而是上述你 增删查改文件的那一部分代码。

 自己的提交记录,别人是可以查看的,使用 git log 命令就可以查看历史提交记录
 

 查看别人的仓库 提交日志也是一样的,和上述一样,找到 仓库链接,然后使用这个链接 把仓库文件夹 clone 到本地,然后,cd 到这个仓库当中去使用 git log  就可以查看这个仓库当中的提交日志。 


 git status 命令

我们还可以使用  git status  命令来查看当前的本地作业环境下,有没有没有提交的文件,也就是在 从远端拉取到本地的目录当中,有没有 没有提交的文件,或者是修改文件的之后没有提交的文件。

如果没有就会提示:
 

 有就会提示,当前有几个文件没有提交进去,对应文件名也会显示。

 如你愿意尝试的话,上述提到的三板斧,你的文件提交 三板斧 的 哪一步了,他都是会有提示的,而且会提示你当前这个文件应该怎样操作。

 指定某后缀 文件不添加到 仓库当中

 如果你已经拉取 远端仓库 到本地,那么cd 打开在本地拉取的 文件夹,你会发现一个 .gitignore 

的隐藏文件:
 

 这个文件当中就包含了 你不想要添加的 文件名后缀,和一些日志信息,调试信息,调试文件等等,后面的都不用管,我们可以直接 使用 vim 编辑这个文件,在这个文件当中 手动写上不想要 上传的文件名后缀:
 

注意:上述 后缀名之前的 "*" 不能遗漏。 

此时,我们 在本地拉取的 库文件当中创建 这两个后缀的 文件,然后使用 git status 命令,发现给出提示,这些文件是不能上传的,已经被识别出来了:
 

git提交 免密 提交代码

git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客

 git 当中交提交代码本来是要输入密码的,但是可以进行免密操作,具体请看上述博客。

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

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

相关文章

OJ项目——用户的登录拦截,我是如何实现的?

目录 前言 1、关于Session该如何处理 简单session回顾: 回顾session的setAttribute、getAttribute : 项目中如何做? 2、登陆拦截器实现 自定义拦截器: 自定义拦截: 前言 博主之前也有出过一期关于拦截器的,大…

Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建

文章目录 1. zabbix-proxy的分布式监控的概述1.1 分布式监控的主要作用1.2 监控数据流向1.3 构成组件1.3.1 zabbix-server1.3.2 Database1.3.3 zabbix-proxy1.3.4 zabbix-agent1.3.5 web 界面 2. 部署zabbix代理服务器2.1 前置准备2.2 配置 zabbix 的下载源,安装 za…

零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表

bookroo网页上有很多不错的英文图书书目。比如这个关于儿童花样滑冰的书单: https://bookroo.com/explore/books/topics/ice-skating 怎么批量下载下来呢? 这个网页是动态网页,要爬取下来比较麻烦,可以先查看源代码,…

Golang中gRPC使用及原理探究

文章目录 概述gRPC的优势: 1、gRPC入门1.1 protobuf安装1.2 使用gRPC1.2.1 定义proto文件1.2.2 编译proto文件1.2.3 编写客户端和服务端代码 2、gRPC的通信模式2.1 一元RPC模式2.2 客户端流RPC模式2.3 服务端流RPC模式2.4双向流RPC模式 3、 gRPC的底层原理探究3.1 H…

P1433 吃奶酪

#include <iostream> #include <cmath> using namespace std; #define M 15 #define S(n) ((n) * (n)) double indx[M 5], indy[M 5], ans 0, sum 0;//坐标数组&#xff0c;从下标为1开始记录 int n, vis[M 5] { 0 };//vis数组&#xff0c;选过的数字标记为1…

关于pytorch不区分行向量与列向量的理解

听李沐老师讲深度学习时候解释pytorch不区分行向量和列向量&#xff0c;只相当于是一维数组&#xff0c;一维张量一定是行向量&#xff0c;相当于数组&#xff0c;而行列向量可以放到矩阵中看。 测试如下&#xff1a; rtorch.tensor([1,2,3],dtypetorch.float32) print(r,r.T…

滑动窗口算法(C语言描述)

第一种类型&#xff1a;不固定长窗口 问题1&#xff1a;*** C代码1&#xff1a; #include<stdio.h> #include<string.h> #define N 5int min_len(int len1,int len2) {return (len1 < len2 ? len1:len2); }int main() {int target 0;int num[N];scanf("…

C语言中的文件操作指南

阅读导航 前言一、文件类型1. 程序文件2. 数据文件PS.文件名 二、文件的打开和关闭1. 文件指针2. 文件的打开和关闭 三、文件的顺序读写四、文件的随机读写1. fseek() 函数2. ftell() 函数3. rewind() 函数 总结 前言 在C语言中&#xff0c;文件操作是一项重要的任务。通过文件…

阿里云在云原生领域喜获多项 OSCAR 开源尖峰案例奖

当前&#xff0c;国内开源技术正逐渐在各领域落地&#xff0c;越来越多的企业已经或准备使用开源&#xff0c;优秀的开源案例可以起到领航和参考作用。为了更好地推动开源技术在中国市场的落地&#xff0c;鼓励企业和厂商使用开源&#xff0c;鼓励企业或个人进一步探索我国开源…

矩阵系统能做什么

矩阵系统可以应用于许多领域&#xff0c;包括但不限于以下方面&#xff1a; 1. 工程领域&#xff1a;在工程项目中&#xff0c;矩阵系统可用于设计和优化结构、系统、网络、电路、热管理等。例如&#xff0c;矩阵系统可以用来分析和预测系统的稳定性、可靠性、响应时间、能耗等…

2023年中国分布式光纤传感产量、需求量及行业市场规模分析[图]

分布式光纤传感器中的光纤能够集传感、传输功能于一体&#xff0c;能够完成在整条光纤长度上环境参量的空间、时间多维连续测量&#xff0c;具有结构简单、易于布设、性价比高、易实现长距离等独特优点&#xff0c;常用的分布式光纤传感器有光时域反射仪、布里渊分析仪、喇曼反…

Outlook导入导出功能灰色,怎么解决

下载安装 Outlook 软件后&#xff0c;登陆账号&#xff0c;然后选择“文件” - “导出”&#xff0c;结果发现“导出”按钮是灰色的&#xff0c;根本无法导出。根据官方说法&#xff1a;由于配置没有完成或者office产品没有正确激活。outlook导出键为灰色原因由于配置没有完成或…

基于nodejs+vue教学辅助管理系统

学生&#xff1b;首页、个人中心、本课程设计了线上教学辅助系统 ,学生可以此系统实现在线学习&#xff0c;作业提交管理、作业成绩管理。随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。教师&#xff1a;首页、个人中心、课程信息管理、教学资料管理、作业信息管…

IDEA的使用(四)创建不同类型的工程(IntelliJ IDEA 2022.1.3版本)

1. 创建Java工程 创建之后&#xff0c;src下是空的。可以在src下创建软件包Package&#xff0c;命名采用域名倒序。在软件包下再创建Java类。Java类运行后出现中文乱码&#xff0c;就到控制台和文件编码这两个地方设置编码。 2. 创建JavaWeb工程 2.1 在win11和IDEA中配置Tomca…

《UnityShader入门精要》学习4

一个最简单的顶点/片元着色器 一个最简单的顶点/片元着色器 Unity Shader的基本结构。它包含了Shader、Properties、SubShader、Fallback等语义块。顶点/片元着色器的结构与之大体类似 Shader "MyShaderName" {Properties {// 属性}SubShader {// 针对显卡A的S…

opencv图形绘制2

目录 制作宣传语&#xff08;中文&#xff09; 制作宣传语&#xff08;英文&#xff09; 绘制标记 鼠标交互绘制十字线 鼠标交互绘制图形 鼠标交互制作几何画板 滚动条控制 鼠标事件练习 制作宣传语&#xff08;中文&#xff09; import cv2 import numpy as np from …

实现Element Select选择器滚动加载

<template><el-selectpopper-class"more-tag-data"v-model"tagId"filterableplaceholder"请选择"focus"focusTag"><el-optionv-for"(item, index) in taskTagLists":key"index":label"item.n…

互联网Java工程师面试题·Java 并发编程篇·第七弹

目录 16、CAS 的问题 17、什么是 Future&#xff1f; 18、什么是 AQS 19、AQS 支持两种同步方式&#xff1a; 20、ReadWriteLock 是什么 21、FutureTask 是什么 22、synchronized 和 ReentrantLock 的区别 23、什么是乐观锁和悲观锁 24、线程 B 怎么知道线程 A 修改了…

蓝桥杯 枚举算法 (c++)

枚举就是根据提出的问题&#xff0c;——列出该问题的所有可能的解&#xff0c;并在逐一列出的过程中&#xff0c;检验每个可能解是否是问题的真正解&#xff0c; 如果是就采纳这个解&#xff0c;如果不是就继续判断下一个。 枚举法一般比较直观&#xff0c;容易理解&#xff0…

完美解决lftp遇到put: Access failed: 553 Could not create file.

目录 一、问题 二、原因 三、解决方法 一、问题 put: Access failed: 553 Could not create file. 二、原因 &#xff08;1&#xff09;没有关闭SeLinux &#xff08;2&#xff09;linux默认安装vsftp服务之后只允许匿名用户的访问和下载&#xff0c;不支持上传。 三、解决方…