GIT:git 教程

news2025/1/13 19:50:51

1. 版本控制

版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看备份

它的作用如下:

  1. 实现跨区域多人协同开发。
  2. 追踪和记载一个或者多个文件的历史记录。
  3. 组织和保护你的源代码和文档。
  4. 统计工作量。
  5. 并行开发、提高开发效率。
  6. 跟踪记录整个软件的开发过程。
  7. 减轻开发人员的负担,节省时间,同时降低人为错误。
    简而言之就是用于管理多人协同开发的技术。

1.1Git 与 SVN 区别

SVN 是集中式版本控制系统,版本库是放在中央服务器的。

请添加图片描述
工作的时候,首先要从中央服务器得到最新的版本,完成工作后,需要把自己的代码推送到中央服务器。集中式版本控制系统是必须联网才能工作,且对网络带宽要求较高。

Git 是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。

请添加图片描述
工作的时候不需要联网,因为版本都在自己电脑上。待有网络后,把本地的版本推送到远程即可。

1.2 Git工作流程图

请添加图片描述

命令如下:

clone(克隆): 从远程仓库中克隆代码到本地仓库

checkout (检出):从本地仓库中检出一个仓库分支然后进行修订

add(添加): 在提交前先将代码提交到暂存区

commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本

fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge

push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

2. Git的下载与安装

本教程里的git命令例子都是在Git Bash中演示的,会用到一些基本的linux命令,在此为大家提前列举:

ls/ll 查看当前目录 ll是查看当前文件夹下的所有文件,包括隐藏文件

cat 查看文件内容

touch 创建文件

vi vi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、editPlus、notPad++等其它编辑器)

2.1 下载

方式一:打开 Git 官网,点击 Download for Windows(由于国内网络限制,一般下载会很缓慢)。

方式二:国内可以使用 淘宝镜像下载 或者 华为镜像下载(其他的国外资源也都可以在这两个镜像下载)。

2.2 安装

2.2.1、傻瓜式安装一路下一步

在这里插入图片描述

3 Git的启动

在这里插入图片描述
在这里插入图片描述
备注:

Git GUI:Git提供的图形界面工具

Git Bash:Git提供的命令行工具

3.1 配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

Git版本控制要记录哪个人什么时候做了什么事情,Git就是通过邮箱去辨识是哪个人的

所有的配置文件,其实都保存在本地。

Git\etc\gitconfig:Git 安装目录下的 gitconfig,存储系统级配置。
C:\Users\Administrator.gitconfig:用户目录下的 gitconfig,只适用于当前登录用户的配置。
当安装 Git 后首先要做的事情是设置用户名称邮箱地址。每次 Git 提交都会使用该信息,它会被永远的嵌入到操作记录中。

git config --global user.name "用户名"
git config --global user.email "邮箱地址"

--global参数为全局配置,Git 将总是会使用该配置来处理用户在系统中所做的一切操作。如果希望在特定项目中使用不同的用户名或邮箱,可以在该项目中运行该命令不加 --global 参数。

以上操作也可以通过编辑 C:\Users\用户名.gitconfig 文件来实现,效果完全一致。

3.2 查看配置信息

git config --global user.name

git config --global user.email

4 Git理论知识

4.1 四个区域

Git 本地有 3 个工作区域

工作目录(Workspace):存放项目代码的地方。
缓存区(Stage):存放临时的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
资源库(Repository):安全存放数据的位置,这里面有提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本。

Git 远程有 1 个工作区域

远程库(Remote):托管代码的服务器,可以简单的认为是项目组中的一台电脑,用于远程数据交换。

文件在这四个区域之间的转换关系如下:
在这里插入图片描述

5. 仓库搭建

5.1 搭建本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
2)进入这个目录中,点击右键打开Git bash窗口
3)执行命令git init
4)如果创建成功后可在文件夹下看到隐藏的.git目录。
在这里插入图片描述

5.2 克隆远程仓库

我们还可以克隆创建好的远程仓库到本地仓库,这种方式是将远程服务器上的仓库完全镜像一份至本地,就像克隆,所以使用 git clone

git clone +仓库地址

5.3 本地项目上传到远程仓库

大家可以看这篇文章 如何将本地文件上传到Gitee

6. 基础操作指令

Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git

的命令而发生变化。

6.1 查看修改的状态(status)

  • 作用:查看的修改的状态(暂存区、工作区)
  • 命令形式:git status

6.2 添加工作区到暂存区(add)

  • 作用:添加工作区一个或多个文件的修改到暂存区
  • 命令形式:git add 单个文件名|通配符
  • 将所有修改加入暂存区:git add .

6.3 提交暂存区到本地仓库(commit)

  • 作用:提交暂存区汇总所有内容到本地仓库的当前分支
  • 命令形式:git commit -m ‘注释内容’

提交时候添加的备注会被放到日志中
提交完后显示缓冲区没有东西可以提交了

6.4 版本回退

撤回到之前的某个操作,他回去删除我们撤回到位置之后的版本

作用:版本切换
命令形式:git reset --hard commitID
commitID 可以使用 git-log 或 git log 指令查看

如何查看已经删除的记录?

git reflog
这个指令可以看到已经删除的提交记录

我们可以在reflog里面知道删除文件的id,我们可以直接使用命令git reset --hard commitID 还原

所以git reset --hard commitID既可以做版本回退,也可以做版本还原

6.5 忽略文件

有时候我们不想把某些文件纳入版本控制中,比如数据库文件、临时文件、设计文件等。

在主目录下建立 .gitignore 文件,此文件有如下规则

  • 忽略文件中的空行或以 # 开始的行代表注释行,将会被忽略。
  • 可以使用 Linux 通配符。例如:* 代表任意多个字符,? 代表一个字符,[ ] 代表可选字符范围,{ } 代表可选的字符串。
  • 如果名称的最前面有一个 !,表示例外规则,将不被忽略。
  • 如果名称的最前面是一个 /,表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  • 如果名称的最后面是一个 /,表示要忽略的是此目录下的所有文件。
*.txt        # 忽略所有 .txt 结尾的文件,这样的话上传就不会被选中。
!lib.txt     # lib.txt 除外
/temp        # 仅忽略项目根目录下的 temp 文件,不包括其它 temp 目录。
build/       # 忽略 build/ 目录下的所有文件。
doc/*.txt    # 忽略 doc/notes.txt 但不包括 doc/server/arch.txt。

7.分支

7.1 概述

分支用于管理不同的线路的版本内容。类似于科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那就没什么影响;如果在某个时间点,两个平行宇宙合并了,就需要处理一些问题了。

7.2 命令

  • 列出所有本地分支:
git branch

*号表示所在的分支

  • 列出所有远程分支:
git branch -r
  • 新建分支

新建本地分支并停留

git branch 分支名

新建本地分支并切换

git checkout -b 分支名

新建远程分支:

git push origin 远程分支名:本地分支名

建议两个分支同名,方便管理。

7.3合并分支

合并本地分支到当前分支:

git merge 分支名

合并远程分支到当前分支则加上 origin/

git merge origin/分支名

删除本地分支:

git branch -d 分支名

删除远程分支:

git branch -dr [remote/branch]
或者
git push origin --delete [branch-name]

7.4 冲突解决

如果同一个文件在合并分支时本地和远程都修改了则会引起冲突。解决的办法是修改冲突文件后重新提交。这里就要做出选择,保留别人的代码还是自己的代码还是综合各自的代码。

master 作为主分支应该非常稳定,用来发布新版本,一般情况下只允许合并,不允许修改。开发工作一般情况下从 master 上新建 dev 分支进行开发,开发完成后,如需上线发布,dev 分支代码再合并到 master 分支上来。

8 在Idea中使用Git

8.1 在Idea中配置Git

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找到Version Control下的git选项:
在这里插入图片描述
在这里插入图片描述

点击Test按钮,现在执行成功,配置完成

8.2 在Idea中操作Git

场景:本地已经有一个项目,但是并不是git项目,我们需要将这个放到码云的仓库里,和其他开发人员继续一起协作开发。

8.2.1 创建项目远程仓库

在这里插入图片描述

8.2.2 初始化本地仓库(将当前项目初始化为仓库)

在idea中创建文件的时候,它会询问你是否要将文件添加到git中,修改文件的时候,idea会自动帮我们去add,我们只需要去commit就好了
在这里插入图片描述
此时我们的项目目录就变成了一个本地仓库
在这里插入图片描述

绿色的文件代表已添加到git中
爆红的文件没有被添加到git当中,被Git识别为冲突文件
灰色的文件代表已忽略的文件,可以在gitignore文件中配置

8.2.3 设置远程仓库

远程仓库名默认为origin
在这里插入图片描述

8.2.4 提交到本地仓库

在这里插入图片描述

8.2.5 推送到远程仓库

在将本地仓库的修改推送到git远程仓库的时候,我们要先pull,先拿到此时远程仓库的版本信息,再去此版本信息上修改
在这里插入图片描述

8.2.7 克隆远程仓库到本地

在这里插入图片描述

8.2.8 创建分支
  • 最常规的方式
    在这里插入图片描述
  • 最强大的的方式
    在这里插入图片描述

9. IDEA常用GIT操作入口

9.1 第一张图上的快捷入口可以基本满足开发的需求。

在这里插入图片描述

9.2第二张图是更多在IDEA操作git的入口。

在这里插入图片描述

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

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

相关文章

Java EE企业级应用开发(SSM)第9章

第9章MyBatis入门 一.预习笔记 1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0:导…

RFID安全的三次认证

一.RFID介绍 RFID是Radio Frequency Identification的缩写,即射频识别。它是一种通过用电磁场收集数据并从远距离自动识别物体的技术。它使用无线电波来将信息从一个电子标签传输到读卡器中,而不需要直接接触。这些标签可以嵌入到物品中或附加到物品表面…

用Python给模板邮件加彩蛋

需求是这样来的,笔者写了很多的邮件通知模板,里面的内容都是千篇一律的,比如说,***你好,请查收附件什么什么报告,然后在署名,结束。这样的模板邮件会一直发下去,用户看久了会很单调。…

基于C#制作的锁屏小工具,点击图片内容解锁

自己制作的一个无厘头电脑锁屏工具被同事发现了,纷纷要求给他们量身定制安排一套 一、开发步骤1.1 创建项目1.2 窗体设置1.3 键盘钩子事件1.4 解锁按钮设置 一、开发步骤 1.1 创建项目 打开Visual Studio,右侧选择创建新项目。 搜索框输入winform&#…

makefile 结构规则,依赖,伪目标

文章目录 前言一、Makefile 规则格式二、依赖示例:依赖的规则 三、伪目标1. makefile 中的伪目标:2. 伪目标的语法3. 伪目标的规则调用4. 绕开 .PHONY关键字定义伪目标 四、小技巧:1. 命令无回显。2. 可执行文件 和 all 同时作为 makefie 中的…

MOS管常见的故障分析

MOS在控制器电路中的工作状态:开通过程(由截止到导通的过渡过程)、导通状态、关断过程(由导通到截止的过渡过程)、截止状态。MOS主要损耗也对应这几个状态,开关损耗(开通过程和关断过程&#xf…

学java注解,看这一篇文章就够了

一、注解的概念 Annotation(注解)是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰包、类、接口、字段、方法参数、局部变量等。 常见…

Powered by 平行云 | 我们与大有艺术一起,在玩儿一种很新的戏剧

可以用VR看的,才是真元宇宙! 平行云赋能大有艺术,开启孟京辉导演的元宇宙「沉浸式」戏剧《浮士德》。"全球第一场可以用VR看的元宇宙戏剧"是什么的体验? 让我们一起一探究竟! 你慢慢地走进了一片无边无际的…

巧用千寻位置GNSS软件| 铁路放样必备技巧

铁路放样是在铁路测量施工前的一项重要工作,千寻位置GNSS软件可轻松实现铁路放样,本期就和大家分享具体操作步骤。 点击【测量】->【铁路放样】,在线路库中选择一条线路点击【确定】直接进入线路中 心线放样,如图 5.16-1所示。…

实现方法、构造器位置的自动装配

1.Autowired注解概述 Autowired注解的源码 package org.springframework.beans.factory.annotation;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPoli…

Uint8Array文件下载

vue项目,自己调用了阿里云OSS的SDK,进行文件的上传以及下载,有个功能是列表中的附件需要支持点击下载,这里就用到阿里云oss的文件下载,使用了Nodejs的SDK const OSS require(ali-oss); const client new OSS({...op…

nodejs+vue网上学生社团管理系统

并运用Photoshop CS6技术美化网页,辅之以CSS技术。系统是基于面向对象编程的web应用程序。本系统主要实现的功能有系统用户管理、社团信息管理、社团类别管理、社团活动管理、社团论坛管理、系统管理、个人资料管理、学生入团管理、社团公告管理、社团活动管理、社团…

Ubuntu22.04安装opencv依赖包libjasper-dev出现unable to locate libjasper-dev的终极解决办法

执行 sudo apt install libjasper-dev 提示 执行 sudo apt install libjasper1 libjasper-dev 仍然提示 更换软件源: sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt-get update提示 该仓库没有数…

tiechui_lesson05_内核小文件拷贝

主要学习在内核中的文件操作,包括文件的打开,创建,读取,写入,查询文件属性等。 涉及的API和宏函数 ZwOpenFileZwCreateFileZwQueryInformationFileZwReadFileZwWriteFileZwCloseInitializeObjectAttributes 1.文件的…

学习日记,java学习

题目 生病了,可能是羊了,喉咙好干,好难受 每日一题 1010. 总持续时间可被 60 整除的歌曲 难度中等268收藏分享切换为英文接收动态反馈 在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。 返回其总持续时间(以秒为单位)可被 60 整除的…

vue+elementui在线教学互动学习考试系统nodejs师生互动交流网站kpm58

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 前端vueelementui, (1) vue引入elementui 1.使用npm安装element-ui npm i element-ui -S 2.在main.js中导入使用vue import element-u…

Android WorldWind的使用与加载数方瓦片

明确下定义,数方瓦片也叫五层十五级瓦片。现记录下如何在World Wind Android中加载数方瓦片的方法。 原理 加载数方瓦片最核心的方法是WorldWindAndroid加载图片的方法,更加详细的使用说明请访问worldwind官网。核心代码如下: Sector sect…

Daimayuan Online Judge #613. 好序列(思维题 暴力/启发式分裂)

题目 思路来源 知乎严格鸽 (暴力/启发式分裂)代码源每日一题 Div1 好序列 - 知乎 题解 启发式分裂,可以认为是启发式合并的逆过程 比较直白的想法是找到第一个只出现一次的数的位置x,然后分治[1,x-1]和[x1,n] 但是这样最坏复杂度是O(n^2)的&#xf…

数字化转型对企业的好处有哪些(上)

过时的技术、流程和客户关系管理困难是当前阻碍企业增长的主要障碍,CRM系统是企业数字化转型的主要工具,帮助企业简化操作、提高效率,为客户提供更加卓越的客户体验。下面说说,企业数字化转型的十大好处。 放眼全球来看&#xff…

第四十三章 Unity 开关 (Toggle) UI

本章节我们介绍开关 (Toggle)和开关组 (Toggle Group)。首先,我们点击菜单栏“GameObject”->“UI”->“Toggle”,然后调整它的位置,效果如下所示 相信大家在很多网页中也看到过类似的UI元素,它通常用于让用户勾选某些选项。…