Git 入门指南

news2024/11/26 5:57:23

什么是 Git?

Git 的目前最流行的分布式版本控制软件,可以帮助我们高效敏捷的处理任何项目。

版本管理

要理解 Git 我们首先要理解版本管理。
版本管理就是开发过程中用于管理对文件、目录或者工程等内容的修改历史,可以让我们方便的查看历史记录,备份和恢复以前版本的软件工程技术。

作用

有了版本控制可以做到什么呢?下面来看一下它的应用场景:

  1. 实现跨区域的多人合作开发:我们可以将代码保存到本地仓库,不需要连接服务器就能实现修改,并且通过远程仓库实现跨区域开发。
  2. 追踪和记载一个或者多个文件的历史记录,方便我们查看这个版本的修改内容。
  3. 组织和保护源代码和源文档
  4. 统计工作量、实现并行开发、提高开发效率
  5. 追踪记录整个软件的开发过程
  6. 减轻开发人员负担,节省时间,同时降低人为引发的错误,通过回滚我们可以快速的返回上个版本,来降低损失。

版本控制的分类

  1. 本地版本控制:记录文件每次的更新,对每个版本做一个快照,或者是记录补丁文档,适合个人使用
    image.png
  2. 集中式版本控制:将版本数据存储在服务器上,协同开发的人员从服务器上同步更新和上传自己的修改,用户本地只有之前同步的版本,不联网的话就无法得到历史版本。集中式版本控制数据都存储在单一的服务器上,一旦这个服务器损坏就有极大的风险,需要定期备份。
    image.png

分布式版本控制

  1. 所有版本信息的仓库全都存储到本地的每个用户。
  2. 可以在本地查看所有的版本历史,可以离线在本地提交,只需要联网的适合 push 到响应的服务器。
  3. 每个用户保存了所有的版本信息,换言之每个用户的本地数据都是一个仓库
  4. 不会因为服务器出现问题就导致工作停滞的情况

它的代表软件就是今天要说的 Git
image.png

Git 的下载与安装

Git 官网:https://git-scm.com/

安装

  1. 一直下一步即可,建议安装到非系统盘
  2. 安装的路径不要带中文、空格、特殊字符

常用资料

Git 大全:https://gitee.com/all-about-git
Git 互动学习:https://oschina.gitee.io/learn-git-branching/

Git 基本配置

常用指令

  1. 设置用户名和邮箱:使用 Git 前需要设置用户名和邮箱,每次提交的时候都会使用到这个信息
git config --global user.name "Your Name"
git config --global user.email "YourEmali"
  1. 查看配置的指令
# 查看所有配置
git config -l
# 查看当前用户的配置
git config --global -l
# 查看系统配置
git config --system -l

Git 的配置文件

  1. System 配置文件:位于 Git 安装目录下的 .gitconfig
  2. Global 全局文件:位于 C 盘下的 .gitConfig 只适用于当前用户的配置

Git 的工作原理(重点)

Git 的四个工作区域

Git 在本地有三个工作区域:工作目录、暂存区、资源库,再加上远程的 git 仓库就可以分为四个工作区域,文件在这四个区域之间转换关系如下
image.png

  1. Working Directory:工作目录,平时存放项目代码的地方
  2. Stage(Index):暂存区,用于暂时存放你的改动,事实上它只是一个文件,保存即将提交的文件的列表信息。
  3. Repository:仓库区(也可以叫本地仓库),就是安全存放数据的位置,这里有所有版本的数据,其中 Head 指向最新放入仓库的版本。
  4. Remote Directory:远程仓库,用户托管代码的服务器,比如 GitHub 或者 Gitee,可以简单的认为是远程存放数据的用户。

Git 的工作流程

  1. 在工作目录中对文件进行修改操作
  2. 将需要进行版本管理的文件放入暂存区域
  3. 将暂存区域的文件提交到本地的 Git 仓库

由上面的三个步骤,Git 管理的文件有三种状态:已修改、已暂存和已提交
image.png

Git 仓库的创建

创建工作目录的常用指令

工作目录一般就是你希望 Git 来管理的文件夹,可以是项目的目录,可以是空目录,但注意不要有中文。
image.png

创建本地仓库

这里来演示使用一个空文件夹作为我们的本地仓库

  1. 在本地创建一个空目录,在目录下点击右键,选择显示更多选项
    image.png
  2. 执行 git-init 命令,执行后会发现目录中多出了一个 .git 目录,关于版本等的信息都在这个目录里面。需要注意的是这个目录默认是隐藏的,需要打开显示隐藏的项目这个选项。
  3. 这样我们就在本地创建了一个仓库,并且将其交给 git 管理

克隆远程仓库

  1. 执行代码 git clone [url],可以将远程服务器上的仓库完全镜像复制一份到本地。
  2. 以 Gitee 平台为例,点击克隆即可获取 url 地址。

Git 文件管理

我们上面说的三种状态是 Git 管理的文件的状态,与这里说的文件做区分

Git 仓库下文件的四种文件状态

  1. Untracked:此文件在目录中,但是没有加入到 Git 库,不参与版本的控制,通过 git add 可以将它的状态变为 Staged
  2. Unmodify:文件已经入库,但是没有被修改过,也就是和本库中文件的快照内容完全一致,这些文件有两种处理方式:如果他被修改就会变为 Modified,我们可以使用git rm将其移出版本库,这时候他就会编程 Untracked。
  3. Modified:文件已经修改,但还未对其执行任何 Git 的操作,这种文件也有两种去处:通过 git add将其变为 Stage 状态,使用 git checkout从库中取出文件覆盖掉当前的修改,退回到 Unmodify。
  4. Stage:暂存状态,执行 git commit将其同步到库中,这时候库中的文件和本地的文件变为一致,这些文件退回 Unmodify 状态,我们也可以使用
    git reset HEAD filename将这个文件取消暂存,文件的状态为 Modify

文件操作指令

# 产看文件的状态,去掉文件名就是查看所有文件的状态
git status [filename]
# 添加文件到暂存区,去掉文件名就是所有文件
git add [filename]
# 提交暂存区中的内容到本地仓库
git commit -m

忽略文件

既然版本控制这么方便,为什么我们还要让一些文件被忽略呢?
我们来看一些不需要被纳入版本控制的文件,比如数据库文件、临时文件、设计文件,这些是不需要进行版本控制的,可以被忽略。
来看一下具体的实现:

  1. 在主目录下面创建 .gitignore,此文件的默认执行规则为:忽略文件中的空行或者 # 开始的行
  2. 支持 Linux 通配符,比如 * 代表任意多个字符,?代表一个字符,方括号 [abc] 标识可选的字符范围,大括号 {string1, string2, …} 表示可选的字符串
  3. 如果名称前面有感叹号,标识除了 xxx 以外,这个 xxx 将不会被忽略
  4. 如果名称前面是一个路径分隔符,表示忽略 .gitignore 文件所在的目录下的文件

对于这些我们只需要记住一些常用的,其他查看文档即可

# 忽略所有以 java 结尾的文档
*.java
# my.java 除外
!my.java

利用 Gitee 创建代码仓库

创建仓库

Gitee 官网:https://gitee.com/
注册好后我们就可以创建我们的仓库了
image.png

绑定密钥

一般来说我们开发项目都是私密项目,这时候我们执行一些操作的时候就需要登录 Gitee 来验证我们的身份,可以通过给本机绑定 SSH 公钥的操作实现免密登录

  1. 打开 C:\Users\lenovo.ssh 文件,没有就手动创建该文件夹
  2. 检查文件夹中是否有这两个文件:
    image.png
    如果有的话可以先删除,通过在本文件下执行 ssh-keygen 即可(一直回车就行)
  3. 将公钥的信息添加到 Gitee 账户,在设置中找到公钥选项
    image.png
  4. 将 id_rsa.pub 中的信息复制到文本框即可

IDEA 集成 Git

需求

将我们刚刚创建好的仓库拉到本地的用 IDEA进行编辑

操作

  1. 新建文件中可以选择来自版本控制的项目
    image.png
  2. image.png
    输入正确的地址,这时候就可以将代码拉取到本地了,同时我们也绑定了这个远程仓库,可以在有权向的情况下将我们的代码提交到远程仓库了。
  3. 新建一个模块来测试 Git 的提交
    image.png
  4. image.png
    这里我们使用提交就可以将代码提交到本地的仓库,其实执行的就是git commit -m指令
  5. image.png
    如果只点击提交那就是提交到本地仓库,如果是提交并推送的话就会同时推送到远程仓库,这时候我们再去看远程仓库的界面就会发现多了这个文件
    image.png

Git 分支管理

分支

在 Git 中,分支是指向 Git 仓库中某个提交对象的可变指针。每个分支都是一个引用,指向你项目中的某个提交。默认情况下,新创建的仓库会有一个主分支,通常叫做 master,指向最新的提交。你可以创建新的分支,并在这些分支上进行工作,而不影响主分支。

分支的作用

  1. 并行开发: 分支使得团队成员可以在不互相干扰的情况下并行工作。每个开发者都可以在自己的分支上进行修改,而不会影响到主分支或其他开发者的工作。
  2. 特性开发: 分支可以用来开发新的特性或功能。你可以创建一个新分支,专门用于实现某个特定的功能,而不会影响主分支上的其他代码。一旦新特性完成,你可以将其合并回主分支。
  3. 版本控制: 每个分支代表着项目的一个不同状态。通过创建不同的分支,你可以在不同的分支上进行不同的修改和实验,从而更好地控制项目的版本。
  4. Bug 修复: 如果在主分支上发现了 bug,你可以创建一个新分支来进行修复,而不会干扰正在进行的其他工作。修复完成后,可以将修复合并回主分支。
  5. 实验性工作: 有时候,你可能想要尝试一些实验性的修改,但不确定是否应该将其合并到主分支。通过在新分支上进行实验,你可以更轻松地决定是否保留这些修改。

分支合并

image.png

  1. 分支可以有多个(根据业务需求)
  2. 如果各分支没有交集就会始终平行发展
  3. 如果两个分支需要合并,就执行 merge 操作

Git 分支指令

# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地和远程分支
git branch -a
# 新建一个分支,但仍停留在当前分支
git branch [branch-name]
# 新建一个分支,并且切换到该分支
git checkout -b [branch]
# 新建一个分支,指向指定的 commit
git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪挂你先
git branch --track [branch] [remote-branch]
# 切换到指定分支并更新工作区
git checkout [branch-name]
# 切换到上一个分支
git checkout -
# 在现有的分支和远程分支之间建立追踪关系
git branch --set-upstream [branch] [remote-branch]
# 合并分支到当前分支
git merge [branch]
# 选择一个 commit,合并进当前分支
git cherry-pick [commit]
# 删除分支
git branch -d [branch]
# 删除远程分支
git push origin --delete [branch]
git branch -dr [branch]

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

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

相关文章

react-virtualized报bpfrpt_proptype_WindowScroller引入错误

背景 vite构建阶段react-virtualized报错 报错信息 ✘ [ERROR] No matching export in "node_modules/_react-virtualized9.22.5react-virtualized/dist/es/WindowScroller/WindowScroller.js" for import "bpfrpt_proptype_WindowScroller"node_module…

Python神技:轻松找出文本文件最热门单词

更多资料获取 📚 个人网站:ipengtao.com 当想要深入了解一段文本,最常见的需求之一就是找到其中出现频率最高的单词。这篇文章将引导你使用Python编写程序,通过简单而强大的技术,准确地找出文本文件中那个频率最高的单…

解决d3dcompiler_43.dll文件丢失的方法,最详细的d3dcompiler_43.dll修复指南

如果你的电脑出现了d3dcompiler_43.dll文件丢失的问题,你知道要怎么去解决么?其实要解决这个问题还是比较简单的,只要你了解清楚d3dcompiler_43.dll文件,那么就知道有多种不同的方法可以去解决它,下面我们一起来看看吧…

记一篇Centos7安装innodb_ruby

安装innodb_ruby过程非常坎坷,这里记录下安装过程,有些坑当时没有记录下来,主要把完成安装过程就记录下来 yum安装ruby默认的会安装ruby2.0.0版本,但是在安装innodb_ruby时,会报错,提示至少需要2.4版本以上…

微信小程序上传报错TypeError: Failed to fetch

上传之后报message:TypeError: Failed to fetch这个错误。 关掉项目 > 选择项目的ide界面右上有个齿轮设置 > 代理

Spring Cloud Gateway集成SpringDoc,集中管理微服务API

本文目标 Spring Cloud微服务集成SpringDoc,在Spring Cloud Gateway中统一管理微服务的API,微服务上下线时自动刷新SwaggerUi中的group组。 依赖版本 框架版本Spring Boot3.1.5Spring Cloud2022.0.4Spring Cloud Alibaba2022.0.0.0Spring Doc2.2.0Nac…

老师怎么选班干部

对于老师来说,选择合适的班干部是一项重要任务。班干部不仅是学生的榜样,也是班级秩序维护者。 了解学生的情况是必要的。老师需要了解每个学生的性格、能力和潜力,为他们分配适合的职务。对于新班级,可以观察学生在课堂上的表现、…

【古月居《ros入门21讲》学习笔记】12_服务端Server的编程实现

目录 说明: 1. 服务模型 说明 2. 实现过程(C) 创建服务器代码(C) 配置服务器代码编译规则 编译 运行 3. 实现过程(Python) 创建服务器代码(Python) 运行效果 说…

人民的艺术家王昱玺出席巴基斯坦驻华使馆学校国际文化日活动

王昱玺和罗马尼亚驻华大使馆特命全权大使丹-霍利亚马克西姆 王昱玺,出生于抗日革命根据地山西省吕梁市。联合国金砖国家文化理事会外交官大使、安徒生世界妇女贵族天使、世界文联和平大使、世界文化大使勋章获得者、中国内地女高音歌唱演员、中央电视台CCTV艺术传…

推荐6款交互设计软件,助你事半功倍!

交互软件可以帮助设计师从“可用性”和“用户体验”的角度优化他们的作品。如果设计师想创建一个令人满意的交互设计作品,一个方便的交互设计软件是必不可少的。当然,交互软件只是我们实现目标的一种手段。根据设计师的个人喜好和方便,选择易…

气膜建筑助力体育场馆快速普及

传统的室内体育馆投入资金庞大,建设强度高,建设周期漫长。而气膜体育馆的出现,不仅显著降低了建设成本和缩短了建设周期,更符合节能环保的需求,成为推动场馆快速普及的创新建筑形式。 对于校园设施的建设而言&#xff…

第二十章多线程总结

20.1 线程简介 世间有很多工作都是可以同时完成的。例如,人体可以同时进行呼吸、血液循环、思考问题等活用户既可以使用计算机听歌,也可以使用它打印文件。同样,计算机完全可以将多种活动同时进这种思想放在 Java 中被称为并发,而…

【论文笔记】SDCL: Self-Distillation Contrastive Learning for Chinese Spell Checking

文章目录 论文信息Abstract1. Introduction2. Methodology2.1 The Main Model2.2 Contrastive Loss2.3 Implementation Details(Hyperparameters) 3. Experiments代码实现个人总结值得借鉴的地方 论文信息 论文地址:https://arxiv.org/pdf/2210.17168.pdf Abstrac…

与 PCIe 相比,CXL为何低延迟高带宽?

文章目录 前言1. LatencyPCIE 生产者消费则模型结论Flit 包PCIE/CXL.ioCXL.cace & .mem总结 2. BandWidth常见开销CXL.IO Link efficiencyPCIe Link efficiencyCXL.IO bandwidthCXL.mem/.cache bandwidth 参考 前言 CXL 规范里没有具体描述与PCIe 相比低延时高带宽的原因&…

Ros报错:The Plugin for class ‘jsk_rviz_plugin/Plotter2D‘ failed to load

一般出现这种情况,是提醒Ros缺少某种库: 图中显示的错误是说明少了jsk_rviz_plugins库,他是一个提供原始rviz插件的包。 解决办法是安装相应的库与插件: #根据自己ROS的版本选择相应的指令 # ubuntu20.04:noetic sudo apt-get i…

Django快速搭建静态网页

Django的快速搭建 这个是例子 这个是一个目录 项目名称:项目似乎被命名为DJ0928,这是Django项目的根目录。 文件都是Django项目的核心配置文件。 settings.py 包含了项目的配置设置。urls.py 定义了项目的URL路由。wsgi.py 和 asgi.py 分别用于Web服务器…

Java高级技术(反射:获取类的成员变量)

一,获取类的成员变量的常用方法 二,案例 三,赋值,取值的常用方法 四, 案例 五,获取类的成员方法的常用方法 六,案例 七,执行 八,案例

代码随想录算法训练营 ---第五十天

第一题: 简介: 做买卖股票的问题最重要的是分析状态,将状态分析清楚本题也就做出来了。我们看本题它说我们至多可以完成两笔交易,也就意味着我们有两种选择 dp状态分析 1.完成一次交易获得最大利益 完成一次交易我们用二维数组…

零代码连接钉钉宜搭与用友U8,让业财数据管理简单高效

零代码连接钉钉宜搭与用友U8,让业财数据管理简单高效 如果把企业内部的业务系统比作一条条河流,那么它们的交汇点就像江河湖海。在这些交汇点上,数据的汇集、分析和共享离不开系统之间的集成。 钉钉宜搭和用友U8是两个在企业中非常重要的系统…

智慧工地信息化管理系统源码带APP

需求痛点:建筑行业是一个安全事故多发的行业。目前,工程建设规模不断扩大,工艺流程纷繁复杂,如何搞好现场施工现场管理,控制事故发生频率,一直是施工企业、政府管理部门关注的焦点。利用现代科技&#xff0…