GIT 入门详解指南

前言:


 注:本博客仅用于记录本人学习过程中对git的理解,仅供学习参考,如有异议请自行查资料求证


安装

使用git之前必须完成git的安装,Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行

git 安装教程


基本概念


git基础命令

定义:git 指令使用前准备先使用git命令配置用户的名字和用户的邮箱

//git指令配置用户名
git config --global user.name "userName"

// git 指令配置用户的邮箱地址
git config --global user.email "email.com"

注:Local 表示配置到本地,此处做出省略【本地配置,只对本地仓库有效 】,--global : 全局配置,所有仓库生效,--system :系统配置,对所有用户生效,这两个指令只需要执行一次。


git 指令保存用户名与密码

git config --global credential.helper store

查看git的配置信息

git config --global --list

新建版本库


定义:新建版本库的目的是更好的对本地的仓库进行管理,git 仓库分为两种,一种是本地仓库,一种是远程仓库

初始化一个本地仓库

git init ----------------> 在自己电脑的本地创建一个仓库

注:使用git init 指令进入对应的目录,可以将本地的文件初始化为一个本地仓库


创建本地仓库的步骤

1.0 mkdir learn-git       // 创建一个名字为learn-git的文件夹

2.0 cd learn-git          // 进入刚刚创建的文件夹

3.0 git init              // 初始化文件夹为本地仓库

实操演示:


创建远程仓库


远程克隆一个仓库

git clone "远程仓库的地址"

 注:远程仓库克隆不做实际演示


1.0 工作区域和文件状态

git 的工作区与文件状态

git 的工作区:工作区可以理解为我们本地的目录,也就是我们电脑可以看到的目录

git 的暂存区:可以理解为临时存储文件的地方【或者文件的中转站】

git 的本地仓库:可以理解为git的版本库里面有一个.git的目录

注:从以上的这张图可以了解到暂存区就像是一辆转运卡车用来将工作区中的文件转运提交到本地仓库中,版本控制系统中保存文件的方式就称之为提交


2.0 git中文件的工作状态

 各个文件不同状态讲解

3.0 如何将文件添加到仓库

git init        创建仓库

git status      查看仓库的状态

git add         将仓库文件添加到暂存区

git commit      将暂存区中的文件添加到本地仓库

 实操演示

查看文件状态指令

git status     // 显示文件的状态

注:文件显示为红色表示文件还未被提交到暂存区

git add .        // 将当前所有文件添加到暂存区

git add fileNamw // 将指定文件添加到暂存区

 -m 参数的后面跟着的是文件的提交信息

git commit -m "这是提交文件的信息"   // 将文件提交到本地仓库

实操演示

注:git 文件的提交,将文件提交到本地的仓库,在将文件提交到本地仓库的同时需要使用-m指令将文件提交的信息同时提交大本地仓库中

注 :git commit 只会提交暂存区中的文件而不会提交本地中的文件,在使用git commit 这个命令的时候需要加上 -m 来显示提交的信息。


4.0 通配符

通配符的定义

通配符是用于在文件系统中匹配文件名或文本模式的特殊字符。它们在很多操作系统、命令行工具和编程语言中都有应用

通配符的使用

【星号】:   *        表示匹配 “零” 个或者 “多个” 字符,如:*.txt 表示匹配以txt结尾的所有文件

【问号】:     ?        表示匹配单个字符,如:file?.txt 表示匹配 file1.txt 或者 file2.txt等文件

【方括号】:  [ ]       表示匹配方括号内列出的任何一个字符。例如,file1[123].txt可以匹配    file1.txt、file2.txt 或 file3.txt

【大括号】:{ }        用于创建模式组合如 {*.jpg, *.png} 可以匹配所有以 .jpg.png 结尾的文 件名。


5.0 git 中通配符的使用

使用git add *.txt 将所有以txt结尾的文件添加到暂存区中  

注:git add . 可以将当前文件夹中的所有文件添加到暂存区中


在 git 中可以使用git log 指令查看提交的信息

git log --oneline --graph --decorate all 指令:查看文件的提交树

git 仓库中指令总结


6.0 git reset 指令


定义:git reset命令有三种不同的用法,后面可以跟着不同的参数:分别代表的含义是软的,硬的,混合的。


 回退版本的三种模式

git reset --soft 表示的是回退到某一个版本,并且保存工作区和暂存区的修改

git reset --hard 表示的是回退到之前的某一个版本,并且丢弃掉工作区和暂存区的修改

git reset --mixed 回退到某一个版本,只保留工作区的修改内容,丢弃暂存区的修改内容

实际操作

...随后补充


git diff 查看工作区,暂存区,本地仓库之间的差异

git diff后面什么文件都不加的话显示的是工作区和暂存区的内容

比较工作区和暂存区之间的差异 git diff

比较工作区和版本库之间的差异 git diff HEAD

比较暂存区和版本库之间的差异 git diff --cached

git diff master HEAD^    ----------> 对比本次提交和上次提交的差别

git diff master HEAD~3  ----------->对比本次提交和前面3次提交的差别

提交文件到本地仓库

git commit -m "commit4"


7.0  git 中HEAD的含义


head含义表示的是指向当前最新的提交节点

git diff HEAD~ HEAD                          -------> 比较当前版本和上一个版本的区别

git diff HEAD^ HEAD                          -------> 也是比较当前版本和上一个版本的区别

git diff HEAD~3 HEAD                        -------> 表示比较当前版本和前面三个版本的区别

git diff HEAD~3 HEAD file3.txt            -------> 查看file3的差异内容

git diff 还可以查看两个分支之间的差异【这个时候直接加上两个分支的名字即可】



8.0 如何从版本库中删除文件

定义:如何删除本地仓库中的内容?使用 rm 指令删除指令中的内容

rm flie1.txt         // 删除文件

查看当前目录下的文件

ls                  查看当前目录下的文件

git add file.txt  表示将这个文件从暂存区中删除掉

如何使用git rm 这个命令删除我们不需要的版本库,git rm file2.txt 将程序从咱们的版本库中删除,同时暂存区中也删除


 9.0 gitignore的作用

忽视gitignore文件,被该文件引用的文件不提交

gitignore 的作用忽视省略不提交相关文件

...后续补充


推送到远程仓库


以下是常见的远程代码托管平台

github 代码托管平台

github注册指南:windows安装git(全网最详细,保姆教程)-CSDN博客


gitee 代码托管平台

gitee 注册指南 :10、Git之国内项目托管平台(Gitee码云) - Javaer1995 - 博客园


如何注册 github

github注册指南:注册Github账号详细教程【超详细篇 适合新手入门】_github注册-CSDN博客


1.0 创建github仓库

 注:由于github是一个外国的网站访问的时候需要挂梯子

第一步:登录github创建自己的仓库

 第二步:创建远程仓库

第三步:将本地仓库和远程仓库关联起来


2.0 克隆远程仓库

注:使用git clone 指令克隆远程仓库

git clone “远程仓库的地址”

访问远程仓库有两种方式一种是https的方式,一种是ssh方式

https 的方式需要在拉取远程仓库的时候提供自己的用户名和密码

ssh 的方式不需要在拉取的时候提供自己的用户名和密码,但是需要配置ssh秘钥


3.0 配置ssh秘钥

1.0  cd ~   进入用户的根目录

2.0  cd .ssh 进入用户的ssh目录

3.0 ssh-keygen -t rsa -b 4096 生成咱们的ssh秘钥

远程仓库生成秘钥之后需要进入公钥将里面的钥匙放进远程仓库

注:当指定一个新文件名的时候需要进行这一步操作

tail  -5   config

将以下的5行内容添加到github里面,这个文件的意思是当我们访问github.com的时候指定使用ssh下的test这个秘钥

注:当前面的步骤指定新的文件名的时候需要使用这个步骤,否则不需要进行这个步骤


4.0 克隆远程数据库

定义:使用克隆命令将远程创建的仓库克隆到本地


5.0 git 简介


git 是一种分布式的版本控制系统,本地仓库和远程仓库是2个仓库它们之间是相互独立的,本地仓库的修改不会影响到远程的仓库,远程仓库的修改也不会影响到本地的仓库


这个时候我们需要一种机制来同步远程仓库和本地仓库的修改内容,让本地仓库和远程仓库的状态保持一致

git push 将本地仓库的内容推送到远程仓库

使用我们的推送命令将本地仓库的内容推送到远程仓库成功,查看远程仓库进行验证


本地已经有一个仓库的情况下如何将程序放到远程仓库?

在github上新创建一个仓库回到命令行将本地的仓库推送到远程

使用 git remote add origin 远程仓库的地址

执行完成之后使用 git remote -v 查看我们当前仓库对应的远程仓库别名和地址

执行完以上两个命令之后本地仓库就已经被推送到我们的远程仓库了,这个origin表示的是远程仓库的地址名。


git branch -M main   这一行代码的意思是指定分支的名称为main

(注:如果本地仓库和远程仓库的别名不同需要将本地仓库的地址切换到远程仓库)

git push -u origin main 这一行代码的含义是把本地的main分支和远程的origin仓库的main分支关联起来,实际上补全的写法是git push -u origin main:main。


如果我们在远程仓库修改了部分的内容,那么我们需要将远程仓库的内容拉取到本地

github上的文件是可以直接编辑的


【演示----> 在github上的修改模拟远程仓库的修改和拉取,通常远程仓库的内容是程序员在本地修改之后推送到远程仓库的,我们需要将远程仓库上修改的内容推送到本地】

这个时候远程仓库已经有了一个新的文件,但是我们本地仓库还有一个文件的内容没有被获取,这个时候我们需要使用pull 命令将远程仓库的内容拉取到本地仓库。


git pull命令详解

git pull <远程仓库名> <远程分支名>:<本地分支名>

可以直接使用 git pull 进行拉取省略远程仓库名,远程分支名【这个时候默认拉取的就是远程仓库中名字为origin的分支】。

如果不省略的话拉取的就是指定仓库的指定分支名。

使用 ls 命令查看咱们本地的文件仓库目录显示远程目录中的内容已经同步到本地仓库了


注:在我们从远程仓库拉取代码的同时,本地本地仓库中的内容会自动的和远程仓库中的内容做比对,如果本地仓库的内容和远程仓库的内容有冲突是不会进行合并操作的。

从远程仓库获取内容还可以使用fetch命令,区别在于fetch命令只是获取远程仓库的修改,但是并不会自动合并到本地仓库中,需要我们手动的将文件合并到本地仓库中

总结:


国内代码托管平台

如何使用国内的平台托管我们的仓库,gitee 和 gitLab


1.0 gitLab的使用

GitLab代码管理_源代码管理工具_代码仓库_代码托管平台_代码安全审计-极狐GitLab

私有化部署表示的是我们可以在自己的服务器上部署一个自己的代码托管服务

部署的过程可以参考gitLab的官方文档

..................


如何使用GUI工具和IDE如何使用git

了解市面上常见的GUI工具【后续补充】


2.0 如何在VSCode中使用git

如何在VSCode中使用git------重要-----


3.0 git 中的分支介绍


分支的使用场景适用于协同开发的场景

git 中分支的基本操作

mkdir branch-demo         创建一个branch-demo文件夹

cd branch-demo               进入branch-demo文件夹

git init                              初始化本地仓库       


分支的命名方式

git 中分支的基本操作,使用分支名加序号的方式来命名文件,分支名加冒号加序号的方式来编写提交记录

在此次的git文件命令中使用


echo mian1 > main1.txt 创建一个文件

git add . 将文件添加到暂存区

git commit -m "描述" 将文件添加到本地仓库


echo mian2 > main2.txt 创建一个文件

git add . 将文件添加到暂存区

git commit -m "描述" 将文件添加到本地仓库


echo mian3 > main3.txt 创建一个文件

git add . 将文件添加到暂存区

git commit -m "描述" 将文件添加到本地仓库


如何创建一个新的分支 git branch "branch-name" 创建一个新的分支

使用git branch “branch-name”  ----------------创建一个新的分支

git branch dev

【注:使用git checkout切换分支的时候可能会存在一些潜在的问题】

git checkout 命令不仅仅可以用来切换分支还可以用来修改之前的一些相关文件,为了解决这个问题git官方还为我们提供了一个解决问题的方案,就是使用swtich指令切换分支


git switch 切换分支的名称

如何将代码分钟中的功能合并到主线,可以使用git merge功能将分支中的代码合并到主线

git merge dev 【注:merge 后面的分支名称是将要被合并的分支,当前所在的分支是合并后的目标分支】

如果我们要把dev 分支合并到main分支的话就需要首先切换到main分支中,然后执行git merge dev命令

将分支中的内容合并到主干分支

在命令行中可以通过git log 查看我们的分支图

git log --graph --oneline

查看git的提交树

git log --graph --oneline --decorate --all

如何使用分支图查看分支的提交过程


4.0 删除分支

git branch -b “branchName”            表示的含义是删除已经合并的分支

git branch -D “branchName”           表示的含义是删除还没有合并的分支


5.0 分支合并冲突

git commit -a -m "feat:1" 在提交命令的后面加上 -a 这个参数就可以一次性完成暂存和提交的任务 

冲突指的是在分支中修改了文件的内容,同时在主分支中也修改了文件的内容,两个文件的内容修改都不一样,如果对分支进行合并这个时候就会出现文件冲突,此时我们需要手动修改文件的内容,得到我们想要的效果,对文件进行重新的提交。

【以上是在合并时解决冲突的过程】


6.0 不同分支合并

在git 中想要将不同分支的内容整合到一起可以使用rebase 中文翻译过来就是变基的意思

使用Merge合并的效果

rebase 和main分支的不同

使用rebase的话,可以在任意的分支上执行,可以在main分支上执行rebase操作,也可以在子分支上执行。

如果在dev分支上执行rebase操作结果就是dev分支上的两次提交记录就会变基到main分支上

如果是在main分支上执行提交记录,那么main分支上的提交记录就会变基到dev分支上


7.0 HEAD 的作用

在分支中,每一个分支的提交记录都会有一个最新的指针指向当前最新的提交记录,这个指针的名称称之为HEAD

实际演示

如何使用指令删除已经提交的分支:git checkout -b branchName branch_id

由于命令太长可以使用alias命令将文件定义成一个简短的命令

alias graph = "git log --oneline --graph --decorate --all"

linux 复制文件夹的命令

cp -rf file-name option-name

知识回顾,第一个rebase命令需要切换到面分支然后变基到main分支中进行合并

如果使用rebase就想是嫁接移植的方式进行管理

切换目录修改文件

-----将当前的项目文件嫁接到另外的一个分支文件中-----

Rebase 和 merge 的区别,该如何区分使用

避免在一个共享分支上进行rebase操作【在公共的分支上不要执行rebase操作】

git rebase 一定要避免在共享分支中使用


git 分支管理中的工作流模型

主线分支中的代码一般是直接发布到生产环节的,主版本号主要表示的是功能的变化和更新

gitHub Flow模型:主分支上的代码是直接部署到生产环境中的,团队的成员可以对代码进行review评审

注:以上内容均基于本人理解撰写,仅供学习参考


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望

作者&#xff1a;金峰&#xff08;项良&#xff09;、朱永林、赵世振&#xff08;寰奕&#xff09; 公司简介 杭州热联集团股份有限公司成立于 1997 年 10 月&#xff0c;是隶属杭州市实业投资集团的国有控股公司。公司专业从事国际、国内钢铁贸易黑色大宗商品及产业服务&…

【微软:多模态基础模型】(4)统一视觉模型

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html&#xff09;原创作品 【微软&#xff1a;多模态基础模型】&#xff08;1&#xff09;从专家到通用助手 【微软&#xff1a;多模态基础模型】&#xff08;2&#xff09;视觉理解 【微…

机器学习——期末复习 重点题归纳

第一题 问题描述 现有如下数据样本&#xff1a; 编号色泽敲声甜度好瓜1乌黑浊响高是2浅白沉闷低否3青绿清脆中是4浅白浊响低否 &#xff08;1&#xff09;根据上表&#xff0c;给出属于对应假设空间的3个不同假设。若某种算法的归纳偏好为“适应情形尽可能少”&#xff0c;…

Web3浪潮下的区块链应用:从理论到实践的全面解析

随着Web3的兴起&#xff0c;区块链技术作为其核心支撑&#xff0c;正迎来前所未有的应用爆发。Web3不仅仅是技术的革新&#xff0c;更代表了一种去中心化、开放、透明的互联网愿景。在这一背景下&#xff0c;区块链技术的应用正从理论走向实践&#xff0c;推动着各行各业的数字…

学习大数据DAY61 宽表加工

目录 模型设计 加工宽表 任务调度&#xff1a; 大表 - 把很多数据整合起来 方便后续的明细查询和指标计算 模型设计 设计 建模 设计: excel 文档去编写 建模: 使用建模工具 PowerDesigner Navicat 在线画图工具... 把表结构给绘 制出来 共享\项目课工具\pd 加工宽表 数…

ChromeDriver驱动下载地址更新(保持最新最全)

说明&#xff1a; ChromeDriver 是 Selenium WebDriver 用于控制 Chrome 的独立可执行文件。 为了方便下载使用&#xff0c;本文保持ChromeDriver的最新版本更新&#xff0c;并提供115.0.5763.0-133.0.6841.0版本的下载地址&#xff1a; 所有版本和下载地址&#xff1a; &am…

QT基本绘图

QT绘图 1.概述 这篇文章介绍如何绘图 2.绘图基本操作 创建一个普通的widget类型的项目 在widget.h 文件中重写绘图事件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : p…

[ACTF2020]Upload 1--详细解析

信息收集 题目告诉我们是一道upload&#xff0c;也就是文件上传漏洞题目。 进入界面&#xff0c;是一个灯泡&#xff0c;将鼠标放在图标上就会出现文件上传的相应位置&#xff1a; 思路 文件上传漏洞&#xff0c;先看看有没有前端校验。 在js源码中找到了前端校验&#xff…

Android Studio开发学习(五)———LinearLayout(线性布局)

一、布局 认识了解一下Android中的布局&#xff0c;分别是: LinearLayout(线性布局)&#xff0c;RelativeLayout(相对布局)&#xff0c;TableLayout(表格布局)&#xff0c; FrameLayout(帧布局)&#xff0c;AbsoluteLayout(绝对布局)&#xff0c;GridLayout(网格布局) 等。 二、…

计算机视觉在自动驾驶汽车中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机视觉在自动驾驶汽车中的应用 计算机视觉在自动驾驶汽车中的应用 计算机视觉在自动驾驶汽车中的应用 引言 计算机视觉在自动…

表格的选择弹窗,选中后返显到表格中

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 表格的下拉框可以直接显示选项&#xff0c;那如果选择框不是下拉的&#xff0c;而是弹窗&#xff0c;那么在表格中如何返显呢&#xff1f; 问题描述 如上图所示&#xff0c;点击表格中的选择&#xf…

金融领域先锋!海云安成功入选2024年人工智能先锋案例集

近日&#xff0c;中国人工智能产业发展联盟《2024年人工智能先锋案例集》&#xff08;以下简称“AIIA先锋案例集”&#xff09;在中国人工智能产业发展联盟第十三次全体会议上正式发布。该案例集由人工智能产业发展联盟&#xff08;AIIA&#xff09;、工业和信息化部新闻宣传中…

HarmonyOs鸿蒙开发实战(16)=>沉浸式效果第一种方案一窗口全屏布局方案

1.沉浸式效果的目的 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感&#xff0c;从而使用户获得最佳的UI体验。 2.窗口全屏布局方案介绍 调整布局系统为全屏布局&#xff0c;界面元素延伸到状态栏和导航条区域实现沉…

OpenAI震撼发布:桌面版ChatGPT,Windows macOS双平台AI编程体验!

【雪球导读】 「OpenAI推出ChatGPT桌面端」 OpenAI重磅推出ChatGPT桌面端&#xff0c;全面支持Windows和macOS系统&#xff01;这款新工具为用户在日常生活和工作中提供了前所未有的无缝交互体验。对于那些依赖桌面端进行开发工作的专业人士来说&#xff0c;这一更新带来了令人…

Android OpenGLES2.0开发(八):Camera预览

严以律己&#xff0c;宽以待人 引言 终于到该章节了&#xff0c;还记得Android OpenGLES2.0开发&#xff08;一&#xff09;&#xff1a;艰难的开始章节说的吗&#xff1f;写这个系列的初衷就是因为每次用到GLSurfaceViewCamera预览时&#xff0c;总是CtrlC、CtrlV从来没有研究…

独立站干货:WordPress主机推荐

WordPress作为全球最受欢迎的独立站建设平台&#xff0c;提供了灵活性和强大的功能&#xff0c;使得建站变得简单而高效。本文将为您详细介绍WordPress建站的流程&#xff0c;并推荐几款实测后觉得好用的主机商。 WordPress建站流程 域名注册 首先需要注册一个域名&#xff0c…

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法

目录 一、DMA基础知识 1、DMA简介 (1)DMA控制器 (2)DMA流 (3)DMA请求 (4)仲裁器 (5)DMA传输属性 2、源地址和目标地址 3、DMA传输模式 4、传输数据量的大小 5、数据宽度 6、地址指针递增 7、DMA工作模式 8、DMA流的优先级别 9、FIFO或直接模式 10、单次传输或突…

基于Spring Boot+Vue的多媒体素材管理系统的设计与实现

一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17 前端&#xff1a; 技术&#xff1a;框架Vue.js&#xff1b;UI库&#xff1a;ElementUI&#xff1b; 开发工具&…

如何禁用关闭奇安信天擎开机自启动教程

前言 公司要求我们员工每个电脑上都要安装奇安信防护软件&#xff0c;但是身为开发&#xff0c;这个软件占内存不说&#xff0c;还禁用我们电脑上todesk等远程软件&#xff0c;因为我们给客户部署的项目&#xff0c;部署的有软件服务&#xff0c;经常需要用到todesk等远程软件…

[Docker#8] 容器配置 | Mysql | Redis | C++ | 资源控制 | 命令对比

目录 一&#xff1a;Mysql 容器化安装 二&#xff1a;Redis 容器化安装 Redis 简介 Redis 容器创建 三&#xff1a;C容器制作 四&#xff1a;容器资源更新 常见问题 一&#xff1a;Mysql 容器化安装 进入 mysql 的镜像网站&#xff0c;查找 mysql 的镜像 mysql docker…