Git 本地库基本教程

目录

一. Git 概述

1.1   何为版本控制 

1.2   为什么需要版本控制 

 1.3   版本控制工具

1.3.1   集中式版本控制工具

1.3.2   分布式版本控制系统

1.4   Git简介

1.5   Git工作机制 

1.6   Git 和代码托管中心

1.6.1   局域网

1.6.2   互联网

二. Git 安装

 三. Git 常用命令

 3.1   设置用户签名 

3.1.1   基本语法

 3.1.2   说明

3.2   初始化本地库

3.2.1   基本语法

3.2.2   案例实操 

3.3   查看本地库状态

3.3.1   基本语法

3.3.2   初次查看:工作区没有任何文件

3.3.3   新增文件 & 再次查看状态(检测到未追踪的文件)

3.4   添加暂存区

 3.4.1   基本语法

3.4.2   查看状态(检测到暂存区有新文件)

3.5   提交本地库

3.5.1   基本语法

3.5.2   查看提交(没有文件需要提交)

3.6   修改文件

3.6.1   基本语法

​编辑

3.7   历史版本(版本穿梭)

3.7.1   查看历史版本

​编辑

3.7.2   版本穿梭

四. Git分支操作 

4.1   什么是分支?

4.2   分支的好处

4.3   分支的操作

4.3.1   查看分支

①基本语法

②实操案例

4.3.2   创建分支

①基本语法

②实操案例

4.3.3   切换分支

①基本语法

②实操案例

4.3.4   修改分支

①基本语法:vim 文件名

②修改

③查看本地库状态(git status)

4.3.5   合并分支

①基本语法

②实操案例

4.3.6   产生冲突

①冲突产生的原因

②制造冲突

③产生冲突

④手动合并

4.3.7   解决冲突

①add(添加到暂存区)

②commit(执行提交)

4.3.8   删除分支

①基本语法

②删除本地分支

​编辑

③删除远程分支

4.4   创建分支和切换分支图解


一. Git 概述

  • Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
  • Git易于学习、占地面积小、性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具。

1.1   何为版本控制 

  • 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
  • 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

1.2   为什么需要版本控制 

  • 从个人开发过渡到团队协作。

 1.3   版本控制工具

1.3.1   集中式版本控制工具

CVS、SVN(Subversion)、VSS……

  • 集中化的版本控制系统诸如CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新。多年以来这已经成为版本控制系统的标准做法。

优缺点: 

  • 优点:每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌握每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来的轻松容易。
  • 缺点:中央服务器的单点故障期间,谁都无法提交更新,也就无法协同工作。

1.3.2   分布式版本控制系统

Git、Mercurial、Bazaar、Darcs……

  • 像Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
  • 分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行)
  2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

1.4   Git简介

1.5   Git工作机制 

  • 工作区:代码存放的磁盘的目录位置 

1.6   Git 和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。(从本地库推送(push)到远程库)

1.6.1   局域网

        GitLab(基于局域网)

1.6.2   互联网

        Github(基于外网)

        Gitee码云(基于国内网站)

二. Git 安装

1.搜索git官网,会有最新版git下载链接Giticon-default.png?t=N7T8https://git-scm.com/

 2.点击Download for Windows,进入如下界面中点击下载(自动下载与电脑位数匹配的程序)

 3.下载之后双击安装

①GNU霸王条款,无脑同意next就行

②安装路径(最好放在没有中文且没有空格的路径里面)

 

③Git选项配置,推荐默认配置,直接next

 ④后面一直next就行了 

4.如何看是否安装成功

  • 右击桌面选择显示更多选项,有下面的选择则安装成功

 三. Git 常用命令

命令名称作用
git config --global user.name   用户名设置用户签名
git config --global user.email   邮箱设置用户签名
git init初始化本地库

git status

查看本地库状态
git add   文件名添加到暂存区
git commit -m "日志信息"   文件名提交到本地库
git reflog查看历史记录
git reset --hard   版本号版本穿梭

 3.1   设置用户签名 

3.1.1   基本语法

git config --global user.name   用户名

git config --global user.email   邮箱

  1. 打开open git bash here
  2. 按照基本语法设置用户名和邮箱(实际和虚拟的皆行)
  3. 设置好了之后去c盘用户文件夹找到.gitconfig打开,显示你设置的用户名和邮箱即为成功。

 3.1.2   说明

        签名的作用是区分不同的操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

        注意:这里设置的用户签名和邮箱与将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

3.2   初始化本地库

3.2.1   基本语法

git  init

3.2.2   案例实操 

如图,初始化成功后该文件夹就会出现一个 .git 的文件夹。(如果没有,点击文件夹上方查看打开隐藏项目)

  • Windows系统有D:、C:的盘符存在,所以在文件夹中进入git bush here比较好。
  • git bash here界面里面的命令操作和Linus系统是一样的。

3.3   查看本地库状态

3.3.1   基本语法

git status

3.3.2   初次查看:工作区没有任何文件

  • On branch master  // 当前本地库位于分支master
  • No commits yet  //目前还没有提交过任何东西
  • nothing to commit   //没有东西可以提交

3.3.3   新增文件 & 再次查看状态(检测到未追踪的文件)

  • untracker files   //未被追踪的文件(只存在工作区域,git并未追踪 )
  • 使用git add去追踪文件

3.4   添加暂存区

 3.4.1   基本语法

git add name(这个name是你要添加的文件或者文件夹的名称)

3.4.2   查看状态(检测到暂存区有新文件)

文件从红色字体变成了绿色字体,说明git已经追踪(知道)了这个文件。

使用“git rm --cached 文件名”可以从暂存区删除你要删除的文件。

3.5   提交本地库

3.5.1   基本语法

git commit -m "日志信息" name(文件名)

3.5.2   查看提交(没有文件需要提交)

  • git bash窗口中第三行显示的就是你commit成功的状态,后面 test hello world 就是基本语法中的“日志信息”。

  • git bush窗口第四行提示:1个文件被改变,7行内容被插入。

3.6   修改文件

3.6.1   基本语法

  • vim name(文件名)
  • 也可以直接打开文件进行修改,不需要在 git bash here 窗口通过指令进行修改。

文件已被修改(相当于新文件),需要从工作区再次add到暂存区,并且需要commit。

3.7   历史版本(版本穿梭)

3.7.1   查看历史版本

  • git reflog   查看版本信息
  • git log   查看版本详细信息

3.7.2   版本穿梭

git reset --hard 版本号(上图中黄色的字符串就是版本号,分为详细版本号和精简版本号)

穿越之后,你的指针就指向你的穿越目标所对应的版本,并修改时从指针所指为基础开始修改。

附:cat 文件名——可以查看文件内容

四. Git分支操作 

  • 从右向左看!!!

4.1   什么是分支?

        在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个人物的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也就是指针的运用)

4.2   分支的好处

        同时并行推进多个功能开发,提高开发效率。

        各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

4.3   分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

4.3.1   查看分支

①基本语法

git branch -v

②实操案例

4.3.2   创建分支

①基本语法

git branch 分支名

②实操案例

(创建一个test分支,图中我的test分支有内容是因为他会把主分支master的内容复制了一份)

!git后面括号内有个蓝色的master,说明当前分支仍处于master分支

4.3.3   切换分支

①基本语法

git checkout 分支名

②实操案例

(括号内蓝色的分支为test)

4.3.4   修改分支

①基本语法:vim 文件名

②修改

细节讲解:Windows下 git commit 后会进入vim界面。 输入小写字母 i ,此时进入编辑模式,可以输入你想输入的内容。 按下 esc 键,此时退出编辑模式,输入英文语法下的冒号 : ,再输入 wq 即可保存退出

  • 可以看到我的代码已经经过了修改
③查看本地库状态(git status)

第一行on branch test说明此时不在主分支master上,然后修改过后并没有add、commit、push等行为,显示红色(具体细节往前翻至3.3、3.4、3.5)

add后

commit后并查看(cat)

4.3.5   合并分支

切换会原主线master发现并没有修改内容,仍然是原内容

①基本语法

git merge 分支名

②实操案例

(文件内容已修改,这里test分支是基于原master分支上进行修改,因此合并十分顺利,没有产生冲突,具体内容看下一小节)

4.3.6   产生冲突

①冲突产生的原因

        合并分支时,两个分支在同一文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码的内容。

②制造冲突

先修改master主线的内容

再修改test支线的代码内容

③产生冲突

(第二行显示冲突;第三行显示自动合并失败)

注意:下一行代码()中提示werging说明正在合并中

④手动合并

vim打开文件后

  • <<<<<<< HEAD 表示当前分支

(这中间是当前分支的修改内容)

  • ======= 分界线(楚河汉界)

(这中间是产生冲突的分支修改内容)

  • >>>>>>> test 表示与主线产生冲突的分支

手动合并很简单啊,只需要把你想要留下的部分留下,不想要的删除,之后再把<<<<=====>>>>这些特殊符号删除即可(这里保持代码行数不变)

这里我删除了三条分界线,第一部分的return和第二部分的printf,然后esc,wq退出即可。

4.3.7   解决冲突

由4.3.6 手动合并之后,我们还需要两步操作(add、commit)

①add(添加到暂存区)

②commit(执行提交)

注意注意!!!

        此时使用git commit命令时不能带文件名!!!

这里我尝试commit时加上了文件名,然后给git报错:不知道commit哪一个分支里面的demo.c

不带文件名之后成功合并,可以看下一行代码()中已经没有merging,而是master

!!!这时候的主线还在master上,所以手动合并的结果在master上显示,并不会在test中有所修改。

4.3.8   删除分支

注意:当你在你要删除的分支上的时候,git是不允许你去删除分支的!

①基本语法
// 删除本地分支
git branch -d localBranchName// 删除远程分支
git push origin --delete remoteBranchName
②删除本地分支

        如果你还在一个分支上,那么 Git 是不允许你删除这个分支的。所以,请记得退出分支:git checkout master

        通过 git branch -d <branch>删除一个分支,比如:git branch -d fix/authentication

        当一个分支被推送并合并到远程分支后,-d 才会本地删除该分支。如果一个分支还没有被推送或者合并,那么可以使用-D强制删除它。

③删除远程分支
  • 使用这个命令可以远程删除分支:git push <remote> --delete <branch>
  • 比如: git push origin --delete fix/authentication,这个分支就被远程删除了。
  • 你也可以使用这行简短的命令来远程删除分支:git push <remote> :<branch>,比如:git push origin :fix/authentication
  • 如果你得到以下错误消息,可能是因为其他人已经删除了这个分支。
error: unable to push to unqualified destination: remoteBranchName The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to 'git@repository_name'
  • 使用以下命令同步分支列表:
git fetch -p

-p 的意思是“精简”。这样,你的分支列表里就不会显示已远程被删除的分支了。

4.4   创建分支和切换分支图解

master 

创建hot-fix(热修)分支【热修是常用分支名称,本人为了偷懒就写了一个test】 

将hot-fix分支合并至master主线 

总结:master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。

        HEAD如果指向master,那么我们就在master分支上;如果指向hot-fix,我们就在hot-fix分支上。(在.git里面找到HEAD文件可以查看当前指针所指向分支)

        所以啊,所谓的切换分支,其实就是移动HEAD指针指向不同的地方。 (wok!真心累死我了,爆肝完第四章)

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

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

相关文章

Qt程序打包成.exe可执行文件

1.使用Release进行编译 2.找到编译成功的地址: 找到对应的目录 3.把SerialTool.exe文件单独复制到一个文件夹,这里我直接在桌面创建一个SerialTool文件夹,这时候直接运行是不行的,我们需要把库都导进去 4. 在安装目录找到如下这个文件,点击打开,找到你电脑对应的版本即可,我这…

Linux系统编程 day02 vim、gcc、库的制作与使用

Linux系统编程 day02 vim、gcc、库的制作与使用 01. vim0101. 命令模式下的操作0102. 切换到文本输入模式0103. 末行模式下的操作0104. vim的配置文件 02. gcc03. 库的制作与使用0301. 静态库的制作与使用0302. 动态库(共享库)的制作与使用 01. vim vim是一个编辑器&#xff0…

【ARM AMBA AXI 入门 14 -- AXI-Lite 详细介绍】

请阅读【ARM AMBA AXI 总线 文章专栏导读】 文章目录 AXI LiteAXI-Full 介绍AXI Stream 介绍AXI Lite 介绍AXI Full 与 AIX Lite 差异总结AXI Lite AMBA AXI4 规范中包含三种不同的协议接口,分别是: AXI4-FullAXI4-LiteAXI4-Stream 上图中的 AXI FULL 和 AIX-Lite 我们都把…

Python大数据之linux学习总结——day11_ZooKeeper

ZooKeeper ZK概述 ZooKeeper概念: Zookeeper是一个分布式协调服务的开源框架。本质上是一个分布式的小文件存储系统 ZooKeeper作用: 主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper结构: 采用树形层次结构&#xff0c;ZooKeeper树中的每个节点被称为—Znode。且树…

GitLab的个人仓库转移到团队仓库

文章目录 一、Gitlab权限二、转移2.1、编辑个人仓库2.2、Transfer project2.3、切换Namespace2.4、确认修改 一、Gitlab权限 Gitlab用户在组中有五种权限&#xff1a;Guest、Reporter、Developer、Master、Owner Guest&#xff1a;可以创建issue、发表评论&#xff0c;不能读写…

服务器数据恢复—OCFS2下raid5磁盘损坏导致阵列崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; IBM某型号存储&#xff0c;6块sas硬盘组建一组raid5&#xff0c;划分一个lun分配给Linux服务器并格式化为OCFS2文件系统&#xff0c;共享给虚拟化使用&#xff0c;存放的数据包括24台liunx和windows虚拟机、压缩包文件和配置文件。 服务器故障…

通过easyexcel实现数据导入功能

上一篇文章通过easyexcel导出数据到excel表格已经实现了简单的数据导出功能&#xff0c;这篇文章也介绍一下怎么通过easyexcel从excel表格中导入数据。 目录 一、前端代码 index.html index.js 二、后端代码 controller service SongServiceImpl 三、功能预览 四、后端…

[汇编实操]DOSBox工具安装——Ubuntu18.04系统

一、下载&安装 sudo apt install -y dosbox 二、启动 dosbox 三、C盘挂载 将上述文件下载放在任意路径&#xff0c;将DEBUG目录映射为虚拟C盘 MASM.EXE 是用来编译的&#xff0c;LINK.EXE 用来链接&#xff0c;这俩是必须的。 执行如下命令&#xff1a; mount c /m…

NSS [鹤城杯 2021]Middle magic

NSS [鹤城杯 2021]Middle magic 源码直接给了。 粗略一看&#xff0c;一共三个关卡 先看第一关&#xff1a; if(isset($_GET[aaa]) && strlen($_GET[aaa]) < 20){$aaa preg_replace(/^(.*)level(.*)$/, ${1}<!-- filtered -->${2}, $_GET[aaa]);if(preg_m…

java系列之 页面打印出 [object Object],[object Object]

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

【开源】基于JAVA的校园二手交易系统

项目编号&#xff1a; S 009 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S009&#xff0c;文末获取源码。} 项目编号&#xff1a;S009&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手商品档案管理模…

目标检测标注工具AutoDistill

引言 在快速发展的机器学习领域&#xff0c;有一个方面一直保持不变&#xff1a;繁琐和耗时的数据标注任务。无论是用于图像分类、目标检测还是语义分割&#xff0c;长期以来人工标记的数据集一直是监督学习的基础。 然而&#xff0c;由于一个创新性的工具 AutoDistill&#x…

flink入门

1.安装flink&#xff0c;启动flink 文档地址&#xff1a;Apache Flink 1.3-SNAPSHOT 中文文档: Apache Flink 中文文档 代码&#xff1a;GitHub - apache/flink: Apache Flink 2. 打开端口 端口号&#xff0c; 启动jar ### 切换到flink 目录bin下 [rootlocalhost ~]# cd /…

CentOS7安装部署Kafka with KRaft

文章目录 CentOS7安装部署Kafka with KRaft一、前言1.简介2.架构3.环境 二、正文1.部署服务器2.基础环境1&#xff09;主机名2&#xff09;Hosts文件3&#xff09;关闭防火墙4&#xff09;JDK 安装部署 3.单机部署1&#xff09;下载软件包2&#xff09;修改配置文件3&#xff0…

开源更安全? yum源配置/rpm 什么是SSH?

文章目录 1.开放源码有利于系统安全2.yum源配置&#xff0c;这一篇就够了&#xff01;(包括本地&#xff0c;网络&#xff0c;本地共享yum源)3.rpm包是什么4.SSH是什么意思&#xff1f;有什么功能&#xff1f; 1.开放源码有利于系统安全 开放源码有利于系统安全 2.yum源配置…

在线客服系统源码 聊天记录实时保存 附带完整的搭建教程

在线客服系统是一个企业网站进行网络营销的最重要的工具。企业进行网络宣传后&#xff0c;会有很多访客进入到网站&#xff0c;这时候网站就需要有在线客服人员进行接待&#xff0c;及时的与访客进行沟通&#xff0c;才能留住访客&#xff0c;变流量为销量。 在线客服系统可以…

synchronized锁膨胀过程

轻量级锁&#xff1a; 使用场景&#xff1a;如果一个对象虽然有多线程要加锁&#xff0c;但加锁的时间是错开的&#xff08;也就是没有竞争&#xff09;&#xff0c;那么可以 使用轻量级锁来优化。 轻量级锁原理 1.创建锁记录&#xff08;Lock Record&#xff09;对象&#…

十一、统一网关GateWay(搭建网关、过滤器、跨越解决)

目录 一、网关技术的实现 在SpringCloud中网关的实现包括两种: 作用&#xff1a; 二、搭建网关服务 1、新建模块&#xff0c;并添加依赖 2、新建Gateway包&#xff0c;并编写启动类 3、编写yml文件 4、启动服务&#xff0c;并在网页内测试 5、步骤 三、路由断言工厂 …

解决龙芯loongarch64服务器编译安装Python后yum命令无法使用的问题“no module named ‘dnf‘”

引言 在使用Linux系统时,我们经常会使用yum来管理软件包。然而,有时候我们可能会遇到yum不可用的情况,其中一个原因就是Python的问题。本文将介绍Python对yum可用性的影响,并提供解决方案。 问题引发 正常情况下,安装linux系统后,yum命令是可用状态,升级Python版本后,…

【AI】行业消息精选和分析(11月21日 星期二)

技术发展 &#x1f525; OpenAI 员工集体签署信件&#xff1a; - 员工要求董事会辞职并重新任命首席执行官奥特曼。 - 否则可能集体加入微软。 昨天就玩我们领导发言&#xff0c;后面大家接龙收到的那一套了。 &#x1f632; 奥特曼加入微软引发猜测&#xff1a; - 对于一个公…