Git 入门指南

什么是 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.mzph.cn/news/178400.shtml

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

相关文章

java学习part20内部类

116-面向对象(高级)-类的成员之五:内部类_哔哩哔哩_bilibili 1.内部类

在Anaconda中用命令行安装环境以及安装包

一、下载Anaconda 下载地址 二、创建环境 1. 打开Anaconda命令行 2.创建环境 conda create -n 环境名称 python3.10(需要的python版本号) 3.激活环境 activate 环境名4.下载安装包 pip install 模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple5.下载torch 官网&…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1,字符编码(Character Encoding) 是一种将…

大数据-之LibrA数据库系统告警处理(ALM-37006 Coordinator进程异常)

告警解释 当出现如下情况时,产生该告警: CN所在机器发生硬件故障(断电、硬盘损坏等)。CN实例数据目录中的postgresql.conf配置文件不存在或者其中某个配置参数不正确。CN实例线程无法监听IP,或者无法绑定监听端口。C…

【Makefile】和【CMake】的区别

Makefile 和 CMake 的区别 Makefile 和 CMake 都是用于构建项目的工具,但它们有一些区别。 Makefile: 语法: Makefile 使用自己的语法规则,包括规则、目标、依赖等。这是一种特定于 make 工具的语法。 平台依赖: Makefile 是平…

【JavaScript框架】Vue与React中的组件框架概念

组件框架是用于构建应用程序的工具,以便将UI和逻辑划分为单独的可重用组件。目前的组件框架包括React、Vue、Angular、Ember、Svelte等。 Vue和React使用了常见的框架概念,如处理状态、道具、引用、生命周期挂钩、事件等。这两个框架在当今的web开发中被…

案例:某电子产品电商平台借助监控易保障网络正常运行

一、背景介绍 某电子产品电商平台是一家专注于电子产品销售的电商平台,拥有庞大的用户群体和丰富的产品线。随着业务规模的不断扩大,网络设备的数量和复杂性也不断增加,网络故障和性能问题时有发生,给平台的稳定运行带来了很大的挑…

项目中高并发如何处理

在项目中处理高并发主要需要考虑以下几个方面的策略: 优化数据库设计:使用合适的数据结构、索引和查询优化技术可以显著提高数据库的响应性能;分库分表使用缓存:缓存是一种非常有效的处理高并发的方法。通过将常用的数据或结果保…

[原创][第I部分][编程基础]我的C++ 98复习并升级到C++20的复习旅途

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

python激活python38

py38是我建立的anaconda下的一个python3.8环境。 命令行里使用conda activate py38会出现: conda activate error: argument COMMAND: invalid choice 因为condat已经移除了该命令。 执行 activate py38没报错,但是没有转换到py38环境。 使用 sour…

Spring源码解读之创建bean

本文章我们会解读一下Spring如何根据beanDefinition创建bean的; 代码入口: AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(AppConfig.class);applicationContext.refresh(); 当spring执行refresh(…

关于ai大模型是否开源的讨论

开源和闭源,两种截然不同的开发模式,对于大模型的发展有着重要影响。开源让技术共享,吸引了众多人才加入,推动了大模的创新。而闭源则保护了商业利益和技术优势,为大模型的商业应用提供了更好的保障。 一、开源和闭源的…

人工智能学习1

一.人工智能概述 1.AI的基础学科包括:数学(离散、模糊)、思维科学(认知心理、逻辑思维学、形象思维学)和计算机(硬件、软件)等。 2.新一代人工智能呈现出“深度学习、跨界融合、人机协同、群智…

Jmeter+influxdb+grafana监控平台在windows环境的搭建

原理:Jmeter采集的数据存储在infuxdb数据库中,grafana将数据库中的数据在界面上进行展示 一、grafana下载安装 Download Grafana | Grafana Labs 直接选择zip包下载,下载后解压即可,我之前下载过比较老的版本,这里就…

单机多卡训练

参考几个不错的帖子(还没来得及整理): 基于pytorch多GPU单机多卡训练实践_多卡训练效果不如单卡-CSDN博客 关于PyTorch单机多卡训练_能用torch.device()实现多卡训练吗-CSDN博客 Pytorch多机多卡分布式训练 - 知乎 (zhihu.com) 当代研究生…

在 The Sandbox 设置总部,SCB 10X 和 T-POP 为 4EVE 元宇宙音乐会揭幕

协作学习为全球粉丝提供了无限的可能性,让他们通过革命性的元宇宙体验沉浸在泰国流行文化中。 作为 SCBX 集团背后的创新力量,SCB 10X 很高兴宣布与 T-POP Incorporation 展开开创性合作,T-POP Incorporation 是泰国流行文化在全球舞台上的领…

【算法】快速选择算法

目录 1.概述2.代码实现2.1.基于简单交换排序2.2.基于堆排序2.3.基于快速排序 3.应用 更多数据结构与算法的相关知识可以查看数据结构与算法这一专栏。 1.概述 (1)快速选择算法 (Quick Select Algorithm) 是一种用于在无序数组中寻找第 k 小(…

鸿蒙开发已成新趋势

随着华为鸿蒙操作系统的快速崭露头角,鸿蒙开发已然成为当前技术领域的热门新趋势。本文将深入探讨鸿蒙开发的重要性和独特优势,并详细介绍一些关键的鸿蒙开发技术和工具,以及它们对开发者个人和整个行业带来的深远影响。 首先,鸿蒙…

入侵redis之准备---VMware安装部署kail镜像服务器【详细包含云盘镜像】

入侵redis之准备—VMware安装部署kail镜像服务器【详细包含云盘镜像】 kail是一个很好玩的操作系统,不多说了哈 下载kail镜像 kail官网:https://www.kali.org/get-kali/#kali-platforms 百度云盘下载: 链接:https://pan.baidu.com/s/1PRjo…

django框架ORM

1、安装mysqlclient pip install mysqlclient2、创建文件models.py from django.db import modelsclass UserInfo(models.Model):name models.CharField(max_length32)password models.CharField(max_length64)age models.IntegerField(3)3、再settings中注册app INSTALLE…