git仓库的基本使用

news2025/7/18 8:19:49

首发自:本然道软件:git仓库的基本使用

前言

在软件研发的过程中,我们如何将自己的代码管理起来,其实是一个很重要的话题。这里的管理往往包含了这样几个方面:

  • 如何共享代码?我们一般不是一个人在研发,即使是你一个人在研发,你也需要将代码进行备份一下。
  • 如果我们犯错了怎么办?是的,我们可能会写出很糟糕的代码,那我们如何回到从前呢?
  • 如何共同维护一套代码?这是一个很重要的事情。一个人写代码,和一群人写代码,区别是很大的。而且,我们需要更多的人一起开发一套代码以加快整个工程的速度。
  • 在不同的环境中,我们如何管理我们的代码?产线有产线环境,测试有测试环境,开发有开发环境。这些环境都有不同的人在同一时间使用。客户用着你的产线环境的时候,你们的测试人员正在测试环境上测试下一个版本的代码。而你在修复bug的空闲期间,在做记下来的技术调研和尝试。三个版本的代码如何管理与更迭。

为了解决这些问题,我们会引进一种叫做版本控制软件的东西。

为什么是Git

主流的版本控制软件有CVS、SVN和Git。现在CVS已经基本推出江湖了,在2010年前后还可以看到它的身影,现在已经很少见了。当然了,中途也出现过一些其它的,比如微软vs studio继承的团队管理工具。不知道现在是不是还在用,由于我现在的接触面,基本上就只剩下SVN了。

CVS

还是先聊聊CVS。CVS是一个客户机-服务器架构的软件,它的使用一般需要在企业环境中,具有良好的网络环境,开发过程中会受到严格的控制。因为所有的信息都在服务器上。我记得当初使用CVS的时候,编辑文件是需要先进行锁定的。编辑完了要记得解锁,要不然别人是无法使用的。这种协作方式,在大型项目中是很不方便的。

SVN

svn现在依然是一种很流行的版本控制系统。它可以将权限授权道目录,非常方便。但是,当我们无法连接到svn服务器的时候,我们是无法提交任何代码的。而且,svn的分支管理本质上是使用了不同的目录,非常的重。在我的公司里,我们更倾向于使用svn来管理文档而不是代码。

Git

Git的诞生是由于linux的创始人Linus想要一个新的版本控制系统用来维护linux的内核,于是他就写了这么一个版本控制系统(要么说大神就是大神呢,不过其实我们也可以)。Git带跟我们的特性主要有这样一些:

  • 本地仓库:我们将Git中的代码拉取到本地后实际上是将远程仓库拉取到了本地仓库。然后我们提交代码的时候实际上是提交到本地仓库的。在Git中需要通过push这个操作动作将代码推送到远程仓库中去。
  • 轻量级的分支:在Git中,所有的文件都只有唯一的版本,分支只是对这些文件的不同的组合罢了。所以,创建一个分支,合并一个分支都不是一个太重的东西。真正的问题其实是不要向Git仓库中传入不必要的文件,因为来了就删不掉了(还是有途径删的,麻烦点罢了。)
  • 基于本地仓库,我们拥有了强大的离线版本控制能力,以及将版本推到另一个仓库的能力。
    基于轻量级的分支,我们可以大量得使用分支来进行版本管理。而在svn中,我们并不会随意创建分支,更多的是保证我们的代码可以回退。

创建一个版本库

本地安装Git

在官方网站上可以找到下载链接,下载安装即可:Git - DownloadingPackage (git-scm.com)

所有的安装选项都可以选择默认,这里我们就不逐一截图安装过程了。你需要注意的是,你要知道你的Git被安装到哪个目录下了。

安装Tortoisegit

这是个什么东西呢?Tortoisegit是一个Git的图形化操作软件,为Git中的指令提供图形化的操作界面。因为Git本身的交互都是通过命令行进行的,对初学者不是很友好,另外对频繁的操作也不是很方便。所以,平时我都是通过图形化操作进行的。这个东西,在Ideal中也有,不过我平时还是习惯通过Tortoisegit进行操作。这是下载地址:TortoiseGit –Windows Shell Interface to Git

安装过程也只是需要输入自己的用户名和邮箱。这是其实是给Git登记的信息。

对了,由于Tortoisegit的图标是一直小乌龟,所以也有人叫他小乌龟。另外就是,并不推荐安装中文版。因为英文版和Git的命令是可以对上的,但是中文版就不好说了。

搞一个远程仓库

为啥说是搞一个远程仓库呢?这个问题我们分三个方面来聊:

  1. 啥是远程仓库
  2. 都可以怎么搞到一个远程仓库
  3. 具体搞一个远程仓库

啥是远程仓库

远程,是和本地相对的。前面我们在本地安装了Git,就可以创建本地仓库了。你在命令行里执行如下指令,即可创建一个本地仓库:

git init

因为你安装Git的时候,安装程序已经自动将你的git.exe所在的路径加入了path,所以你在命令行可以直接执行上述指令。它的结果就是把执行指令的目录初始化成为一个git仓库。这个时候你打开查看隐藏文件夹就可以看到在这个目录下面创建了一个隐藏的名字叫.git的目录。它里面存放了git仓库所有需要的东西。如果我们不希望将这个目录变成git仓库,删掉这个文件夹,一切就都恢复了。文件夹里文件将只是正常的文件而不是受git版本控制的文件。

而远程仓库,顾名思义就是不在本地的git仓库。理论上来说我们在另外一台机器上安装了Git也算。但是,由于我们对远程仓库的使用方法不同,所以我们安装的Git程序是没有办法被当做远程仓库使用的。

都可以怎么搞到一个远程仓库

这里之所以用搞是因为,搞到一个可用的软件仓库有很多种途径:自己装一个,免费仓库注册一个,企业管理平台中自带的。

先说自己装吧。有很多开源免费的程序可以安装,比如GitHub、GitLab。我们在服务器上安装它们之后,就可以那他们当做远程仓库了。自己安装Git仓库的好处就是,这东西是你自己的,没有人拿得走,你想怎么玩就怎么玩。问题嘛,就是你得管它。确实,程序挺稳定的。但是,它运行的机器得一直开机嘛,所处的网络得持续可用嘛,存储数据的空间得够用嘛,真出了什么问题还是要自己上服务器去调试的。推荐高阶用户使用,一般的用户以及小型的企业用户还是在外面的平台上注册一个划算。

再说说网上的免费仓库。前面说的GitHub、GitLab,它们既是可以免费安装的开源软件,也是可以免费注册仓库的开放平台,国内的还有Gitee等。这些平台大多还富含收费项目,不过免费仓库是真的可用就是了。另外Gitee还附带一套团队管理工具,其实蛮好用的。但是吧,毕竟本质是开源平台,企业办公的支持有限,大多还是为开源团队提供支持的角度。所以,个人和开源团队建议使用,公司办公是不推荐的。

最后说说企业管理平台中自带的。按说,它其实和刚才说网上的免费仓库如出一辙,但是它有个本质的区别,就是它本质上是为企业办公服务的,仓库只是它的一个附加服务。比如,阿里云的云效
云效

具体搞一个远程仓库

如上图所示,它几乎可以对全部的软件研发生命周期进行管理。当然了,非常重要的一点是,它还免费。所以,当我认识它以后,就放弃了自己搭建各种Git仓库、Maven私服等等的想法。当然了,肯定有坑,但是至少在代码提交这块,我没发现它有啥坑。点击“代码提交”按钮,进入代码库的管理。
进入代码管理
点击新建代码库
填写代码库信息
如上图所示,我创建了我HelloWorld的仓库。结果如下图:
新创建的代码库
可以看到这里是有教程的。

Git仓库的基本使用

我们按照它方法二,已有文件夹或仓库的教程进行操作。
先配置全局设置(注意,图里的是错的):

git config --global user.email "linghuanxu@qq.com"
git config --global user.name "nature"

另外,在初始化之前,在仓库的根目录放一个.gitignore文件,如下图所示:
代码目录
内容如下:

# Default ignored files
.idea/
*.iml
*/target

解释一下这个文件。这是Git默认的读取忽略信息的地方。文件里每行都是一个需要Git默认忽略的内容。第一行是ideal项目信息的文件夹,第二行是ideal项目文件,第三行是maven的目标文件夹。这样我们就不用总是费心选择要哪些文件不提交哪些文件要提交了。
然后初始化仓库

cd D:\codes\nature_workspace

进入目标目录

git init

初始化Git仓库

git remote add origin https://codeup.aliyun.com/61cacd4e03ecfc3a1a252ddc/nature-tech/HelloWorld.git

配置仓库的远程仓库

git add .

这一行是添加本地内容到Git仓库中,我们是直接选中了当前目录。

git commit

这个时候会跳到一个编辑界面里。这里其实是vi。是用来编辑提交记录用的。当我们保存退出后,提交就完成了。提交的意思就是本地仓库已经保存下了这些代码。然后执行以下指令:

git push -u origin master

这行指令是将仓库推送道远程仓库origin的master分支上。但是,这个时候我们会遇到一个非常困难的问题——输入账号密码

是的,它不是你登陆阿里云的账号密码。他需要你在云效——代码管理的个人设置里去设置它。入口在右上角的头像下,然后我经历可绑定邮箱,激活邮箱,修改用户名和密码的操作,才能正常使用。

至此,我们已经完成了git仓库的创建,刚才的添加文件、提交文件、推送仓库就是Git仓库最常用的基本操作。如果一个人使用,不出意外,你只会用到这些

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

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

相关文章

Kafka 消息队列 ( 二 ) 安装

3.安装kafka 3.1下载 Kafka官网下载安装包 http://kafka.apache.org/downloads.html 安装前提(zookeeper安装) 参考 http://www.cnblogs.com/qingyunzong/p/8634335.html#_label4_0 3.2.分步安装 此处使用版本为kafka_2.11-0.8.2.0.tgz 3.2.1 上…

计算机毕业设计之java+springboot基于vue的大学生体质测试管理系统

项目介绍 大学生体质测试管理系统提供给用户一个简单方便体质测试管理信息,通过留言区互动更方便。本系统采用了B/S体系的结构,使用了java技术以及MYSQL作为后台数据库进行开发。系统主要分为系统管理员、教师和用户三个部分,系统管理员主要功能包括首页、个人中心、用户管理、…

Visual Studio 2022 版本 17.5 预览版 正式上线,有你期待的功能吗?

目录 此次发布的 Visual Studio 2022 版本 17.5 预览版中的新增功能摘要 C 代码搜索和导航 Git 工具 Markdown 调试和诊断 一元搜索汇报 集成终端中的 ASP.NET 输出 按正则表达式着色制表符 编辑 Markdown 文件 快速添加新文件 在没有 Dockerfile 的情况下生成容器…

XSS跨站脚本攻击原理与实践

目录预备知识实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写…

基于STM32结合CubeMX学习Free-RT-OS的源码之事件集(event-group)

关于cubeMX配置及事件集概述 用cubemx使用事件集时只有使用了cmisis v2 才能使用事件集这个数据结构。 创建一个事件集的高8位不用,低24位用做标记(事件位)。每一个位可相当于裸机开发时的flag,同时,每一位都可以当做二值信号量…

FPGA实现千兆/百兆自适应以太网UDP传输

0、前言 笔者最近在项目中需要使用到ZYNQ中PL端做以太网UDP传输并且需要支持100M/1000M自适应切换。使用的PHY型号为RTL8211。以下分享的主要为利用已有的1000M协议栈修改为100M并且实现二者自适应切换,IP核主要实现以下功能 1、实现100M/1000M自适应 2、回环测试…

基于微信小程序的青少年素质教育培训系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…

高性能计算和并行计算的关系

高性能计算 百度百科的定义为: 高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境…

windows环境CLion调试SRS流媒体服务器源码

环境介绍: SRS支持JetBrains的CLion,它是基于cmake编译的,在windows环境使用CLion,通过SSH远程调试SRS,调试环境安装在CentOS 7虚拟机上。 资源下载: CLion官网下载地址:https://www.jetbrains.…

构造函数与原型对象

一、构造函数与原型对象 1、构造函数 作用:主要用于创建对象,初始化对象的属性 1、ES5中创建构造函数然后创建对象 function Student(id,name){this.id id,this.name name }let s1 new Student(001,小王) 2、ES6中创建类,给类单独定义…

Java反应式编程(3)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 在前面的文章中已经把vert.x框架给跑起来了,但是实际开发中服务端是需要响应客户端的请求的,所以肯定需要增加接口,但是该怎么…

【华为OD机试真题 python】 绘图机器【2022 Q4 | 100分】

■ 题目描述 绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。 1. 尝试沿着横线坐标正向绘制直线直到给定的终点E 2. 期间可以通过指令在纵坐标轴方向进行偏移,offsetY为正数表示正向偏移,为负数表示负向偏移 给定的横坐标终点值E 以…

Timesnet: Temporal 2d-variation modeling for general time series analysis

Timesnet: Temporal 2d-variation modeling for general time series analysis (ICLR 2022) 时间序列分析在天气预报、异常检测、行为识别等领域有着广泛的应用。针对时序变化建模这一广泛分析任务的共同关键问题进行了研究。之前的方法试图直接从一维时间序列中实现这一点,由…

Java线程池如何实现线程复用

线程池把线程和任务进行解耦,线程归线程,任务归任务,摆脱了通过 Thread 创建线程时“一个线程必须对应一个任务”的限制。在线程池中,同一个线程可以从 BlockingQueue 中不断提取新任务来执行,其核心原理在于线程池对 …

学生动漫网页设计模板下载你的名字 大学生HTML网页制作作品 简单漫画网页设计成品 dreamweaver学生网站模板

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业,茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作…

图像增强之灰度变换和直方图均衡化(附代码python+opencv)

一、图像增强的概念和分类 概念:图像增强是采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。例如采用一系列技术有选择地突出某些感兴趣的信息,同时抑制一些不需要的信息,提高图像的…

(JVM)双亲委派机制

Java 虚拟机对 class 文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的 class 文件加载到内存生成 class 对象。而且加载某个类的 class 文件时,Java 虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任…

文档基础模型引领文档智能走向多模态大一统

编者按:自2019年以来,微软亚洲研究院在文档智能领域进行了诸多探索,开发出一系列多模态任务的文档基础模型 (Document Foundation Model),包括 LayoutLM (v1、v2、v3) 、LayoutXLM、MarkupLM 等。这些模型在诸如表单、收据、发票、…

MySQL中find_in_set函数的使用

1.语法 FIND_IN_SET(str,strlist) (1)str 要查询的字符串 (2)strlist 字段名; 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的…

5G无线技术基础自学系列 | 物理上行控制信道

素材来源:《5G无线网络优化实践》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 PUCCH用于传输上行控制信息(U…