Git最简入门

news2025/1/21 6:30:01

文章目录

  • 几个基本概念
    • 版本控制
    • Git的由来
    • 分布式 vs 集中式
      • Git
      • SVN
    • Git、GitHub、GitLab、GitWeb、Gitee的区别
  • 动手进行版本控制
    • 初始化Git
    • 使用情景一:开发新项目
    • 使用情景二:在已有项目上开发
    • 设置代理
  • 参考

几个基本概念

版本控制

在工作学习中,备份是一个十分重要的习惯,只有经历了硬盘损坏才明白数据无价的道理。

回想过去自己的备份习惯,通常是整个项目文件夹拷贝加上日期,有时候会加上个版本号。然而,这种方式虽然简单但却有着致命的缺点。首先,没有对文件进行更改追踪,就不能具体知道每个版本分别修改了什么(常常出现找不到代码的情况);其次,整个项目拷贝通常占用较大的存储空间。个人开发者还勉强能够接受,一旦涉及多人协同开发,这种管理方式往往是不可行的。

Git作为各大企业使用的版本控制工具,就像一个高级的时间机器,不仅仅能够让你回溯过去查看历史,甚至还能更改历史。

为了提高开发效率,学习并掌握Git是十分有必要的。

Git的由来

话说Git和著名的Linux是同宗同源,都是由Linus Torvalds开发的。21世纪初,Linux在世界上引起了一波开源浪潮,许多的开发者都向Linux提交代码,当时代码管理的任务是由微软的BitKeeper工具来实现的。但本着开源的思想,Linux开发者希望将 BitKeeper开源,因此触犯了微软的利益,结束了BitKeeper提供的服务。

这迫使 Linux 社区寻找或创建一个新的版本控制工具,最终,Linus Torvalds 用了两周时间开发了 Git,一直流传至今,成为当下最热门的分布式版本控制系统

分布式 vs 集中式

与分布式版本控制系统相对的还有集中式版本控制系统,最经典的就是Git和SVN,它们的差别如下:

Git

完整的代码库:每个参与者的机器上都有代码的完整拷贝。这不仅包括当前的代码快照,还包括整个历史记录。
不依赖中央服务器:虽然可以有一个“主”存储库供开发者推送更改,但每个开发者的本地存储库都可以独立工作。
更强大的分支和合并:DVCS通常提供更高级和灵活的分支和合并功能。
离线工作:由于每个开发者都有完整的代码库,因此他们可以离线工作,并在稍后同步更改。

SVN

中央存储库:所有的版本历史都存储在一个中央服务器上,开发者通常只获取代码的最新版本。
完全依赖中央服务器:如果中央服务器出现问题,可能会暂时阻止开发者进行版本控制操作,或者在最坏的情况下导致数据丢失(除非有备份)。
速度:由于所有操作都需要与中央服务器通信,某些操作可能会较慢。
需要网络连接:开发者需要连接到中央服务器才能提交更改,虽然本地工作可能仍然是可能的。
在这里插入图片描述

Git、GitHub、GitLab、GitWeb、Gitee的区别

  • GitHub:全球最大的代码托管平台
  • Gitee:国内最大的代码托管平台,因GitHub在国内较慢应运而生
  • GitWeb:轻量化的基于Web界面的Git存储库,适用于个人搭建在服务器上
  • GitLab:与GitHub类似的代码托管平台,相对于GitWeb有较好的权限管理功能,适用于搭建在团队的服务器上
  • Git:以上这些平台都是基于Git工具

动手进行版本控制

实践出真知。这里以GitHub为例,提供了两种最常见的情况下使用Git的方法。推荐在Windows环境下使用Git Bash
在这里插入图片描述

初始化Git

初始化在环境配置阶段仅需要完成一次,在不更换电脑和不修改Github账户的情况下无需再操作。

  1. 初始化本地的git用户信息,该信息只用于标记操开发者,不用于身份验证:
git config --global user.name "Your Name"
git config --global user.email "Your Email"
  1. 建立安全连接,建议使用SSH(Secure SHeel)的方式进行连接。首先在本地生成ssh key,回车按照默认信息即可:
ssh-keygen -t rsa -C "Your Email"
  1. 添加ssh key到GitHub,GitHub上依次点击头像->settings->SSH and GPG keys->New SSH keys

Git操作的对象通常是一个仓库,因此每个项目工程都应该建立一个仓库,而不建议一个仓库下放多个项目文件。

使用情景一:开发新项目

该情景适用于在完成一个新项目的第一个版本后,需要将该版本备份的情况。

  1. 在GitHub上新建一个远程仓库,仓库名称尽量项目名称保持一致
  2. 在项目下初始化一个本地仓库:
git init
  1. 将本地仓库链接远程仓库:
git remote add origin <repository-url>
  1. 修改主分支为main,否则将会默认添加到master分支:
git branch -m main
  1. 将项目代码添加到暂存区:
git add .
  1. 提交更改至本地版本库:
git commit -m "Your commit message here"
  1. 拉取远程仓库到本地进行合并:
git pull origin main

注意:如果提示 fatal: refusing to merge unrelated histories 是因为本地仓库和远程仓库的历史修改信息不同步(此时远程仓库可能不为空)。解决方案是不考虑他们的历史是否有关联(由于是新仓库,该操作合理):

git pull origin main --allow-unrelated-histories
  1. 推送到main分支:
git push origin main
  1. 回到GitHub即可看到新提交的文件

使用情景二:在已有项目上开发

该情景适用于在已有项目上继续开发新的功能,或者基于已有项目进行学习和开发。

由于克隆的仓库中本身存在git仓库,因此不需要使用git init来初始化一个仓库

  1. 从远程仓库中克隆一个到本地仓库:
git clone <repository-url>
  1. 进入仓库目录:
cd <repository-name>
  1. 切换到要推送的分支(如果你不在那里):
git checkout main
  1. 执行所需的代码更改,并将它们添加到暂存区:
git add <changed-files>
  1. 提交更改至本地版本库:
git commit -m "Your commit message here"
  1. 拉取最新的远程更改以确保没有冲突(可选,但推荐):
git pull origin main
  1. 推送更改到远程的main分支:
git push origin main

设置代理

  1. 打开SSH配置文件,没有就新建一个:
touch ~/.ssh/config
  1. 在配置文件中添加代理,这里我用的是socks代理,开启v2ray后转发至10808端口:
Host github.com
ProxyCommand connect -S 127.0.0.1:10808
  1. 重启git后生效,即可加速下载

参考

  • https://git-scm.com/

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

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

相关文章

AI + Milvus:将时尚应用搭建进行到底

在上一篇文章中&#xff0c;我们学习了如何利用人工智能技术&#xff08;例如开源 AI 向量数据库 Milvus 和 Hugging Face 模型&#xff09;寻找与自己穿搭风格相似的明星。在这篇文章中&#xff0c;我们将进一步介绍如何通过对上篇文章中的项目代码稍作修改&#xff0c;获得更…

Java中的枚举类,为什么要用枚举类以及使用注意事项和细节

要求&#xff1a;创建季节对象 分析&#xff1a;一年中只有4个季节&#xff0c;因此就不能让随意创建对象了 原本方法&#xff1a; 私有化构造器&#xff0c;避免了随意创建对象不提供setXxx方法&#xff0c;避免了随意赋值&#xff0c;因为枚举对象值通常为只读在本类中直接…

人工智能如何颠覆和改变信息安全格局

当谈及网络信息安全领域&#xff0c;人工智能&#xff08;AI&#xff09;正扮演着关键的角色。其作用是分析庞大的风险数据&#xff0c;以及企业信息系统中不同威胁之间的关联&#xff0c;从而识别出全新类型的攻击方式。这一过程的成果为各类网络安全团队提供了重要情报&#…

ModaHub魔搭社区:WinPlan经营大脑预算编制

目录 WinPlan经营大脑预算编制介绍 WinPlan经营大脑预算编制模版 WinPlan经营大脑预算模版管理 WinPlan经营大脑预算数据录入 WinPlan经营大脑预算编制介绍 预算编制时面向企业经营管理场景,创建各个业务单位的目标,包括销售目标、财务目标、人事目标等,实现各个业务单…

spring之Spring最佳实践与设计模式

Spring最佳实践与设计模式 Spring最佳实践与设计模式 摘要引言词汇解释详细介绍Spring最佳实践1. 使用依赖注入&#xff08;Dependency Injection&#xff09;2. 使用Spring Boot自动配置3. 使用日志框架 注意事项结合设计模式提升代码质量1. 单例模式2. 工厂模式 注意事项 总结…

基于Java+SpringBoot+vue前后端分离人口老龄化社区服务与管理平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于Java+SpringBoot+vue前后端分离宠物领养系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

安全技术和防火墙——iptables

安全技术&#xff1a; 1.入侵检测系统&#xff1a;不阻断任何网络访问&#xff0c;量化、定位来之内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全决策依据&#xff0c;类似监控系统&#xff0c;一般采用旁路部署的方式…

文件服务器实现方式汇总

hello&#xff0c;伙伴们&#xff0c;大家好&#xff0c;今天这一期shigen来给大家推荐几款可以一键实现文件浏览器的工具&#xff0c;让你轻松的实现文件服务器和内网的文件传输、预览。 基于node 本次推荐的是http-server&#xff0c; 它的githuab地址是&#xff1a;http-s…

8086汇编语言寄存器清零学习

mov ax, 0 这样应清零了&#xff1b; sub ax, ax 这样也清了&#xff1b; xor ax, ax 这样也清零了&#xff1b;自己跟自己异或&#xff0c;异或是同则结果为0、不同结果为1&#xff1b;自己和自己&#xff0c;每一位都是相同的&#xff0c;异或后结果为0&#xff1b; and …

基于CentOS7.9安装docker服务,配置镜像加速器

目录 一、安装docker服务 二、配置镜像加速器 三、下载系统镜像&#xff08;Ubuntu、 centos &#xff09; 四、基于下载的镜像创建两个容器&#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母 &#xff09; 五、容器的启动、 停止及重启操作 六、查看正…

基于Java+SpringBoot+vue前后端分离林业产品推荐系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring之微服务架构与Spring Cloud

微服务架构与Spring Cloud 微服务架构与Spring Cloud 摘要引言词汇解释详细介绍微服务架构Spring Cloud核心组件示例代码&#xff1a;注释&#xff1a; 注意事项理解微服务架构的优势 详细介绍什么是微服务架构&#xff1f;微服务架构的优势1. 可扩展性&#xff08;Scalability…

Win7安装新版本anaconda出现Failed to extract packages解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

CAD泰森多边形框架3D插件

插件介绍 CAD泰森多边形框架3D插件可用于在AutoCAD软件内生成三维Voronoi框架结构实体模型&#xff0c;适用于多孔Voronoi科研论文渲染绘图、Voronoi框架有限元建模、Voronoi空间结构优化等方面的应用。 使用说明 插件可设置生成的几何尺寸、晶格尺寸及边框直径等信息。 插…

基于Java+SpringBoot+vue前后端分离华强北商城二手手机管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

让大数据平台数据安全可见-行云管家

数字化经济在快速发展&#xff0c;大数据时代已经到来&#xff0c;大数据已经成为企业和政府决策的重要依据。然而大数据行业快速发展所带来的一系列安全问题也继续解决&#xff0c;例如数据安全更难保障&#xff0c;例如认证体系不完善等等。为此行云管家推出了大数据平台数据…

开源跨境电商ERP实战经验分享,避免坑点

开源跨境电商ERP系统是当今电商行业的利器&#xff0c;许多企业已经意识到了它在运营管理中的重要性。在本文中&#xff0c;作为该领域的专家&#xff0c;我将分享一些实战经验&#xff0c;帮助您避免在使用开源跨境电商ERP过程中可能遇到的坑点和挑战。 解析开源跨境电商ERP的…

操作系统期末考试复习——简答题总结

最近考研在复习OS&#xff0c;顺便把大二期末考试的简答题整理了一下~ 1、操作系统的定义 “操作系统&#xff08;operating system&#xff0c;简称OS&#xff09;是管理计算机硬件与软件资源的计算机程序 2、操作系统的基本类型及特征 批处理操作系统、分时操作系统、实时…

gdb 条件断点

条件断点&#xff0c;顾名思义就是有条件才会触发的断点&#xff0c;一般设置此类断点形如&#xff1a;b xxx if xxx&#xff0c;如&#xff1a; 要触发此断点则需要 is_created 0。打完断点我们也可以用 info b 查看一下当前已经设置的断点信息&#xff0c;如&#xff1a; 断…