Git学习

2023-09-19 13:06:38

什么是 Git?

Git 是一个分布式版本控制系统,用于追踪文件和项目的变化。它可以帮助开发者或团队有效地协同工作,并提供版本管理、分支管理、代码合并等功能。Git 的设计目标是速度快、简单易用。

Git 的基本概念

  1. 仓库(Repository):Git 仓库是存储代码和历史记录的地方。它可以位于本地计算机或远程服务器上。每个仓库都有一个唯一的标识符,称为仓库地址。

  2. 提交(Commit):一个提交代表一个代码变更,包含了若干个文件的状态。每个提交都有一个唯一的标识符(commit hash),用于标记和检索。

  3. 分支(Branch):分支是基于主线发展的独立线路,用于实现不同的功能或处理不同的任务。在 Git 中,每个分支拥有自己的提交历史。

  4. 远程仓库(Remote Repository):远程仓库是存储在网络上的仓库,用于多人协作和备份代码。常见的远程仓库服务包括 GitHub、GitLab 等。
    引用km学长的博客
    在这里插入图片描述

Git 的基本操作

以下是几个常用的 Git 命令和操作:

  1. 初始化仓库git init 用于在当前目录下创建一个新的 Git 仓库。

  2. 添加文件git add <file> 将文件添加到 Git 的暂存区,准备进行提交。

  3. 提交变更git commit -m "commit message" 将暂存区中的变更提交到本地仓库,-m 参数用于添加提交消息。

在这里插入图片描述

  1. 查看状态git status 可以查看当前仓库的状态,包括已修改但未提交的文件和分支信息。

在这里插入图片描述

git status 命令可以输出仓库当前的状态,上面的命令输出告诉我们,cc.txt 被修改过了,但还没有准备提交的修改。
git status 命令的输出十分详细,但其用语有些繁琐。Git 有一个选项可以帮您缩短状态命令的输出,这样可以以简洁的方式查看更改。使用 git
status -s 命令或 git status --short 命令,将得到一种格式更为紧凑的输出。
输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。
新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。在这里插入图片描述
用 git diff 这个命令能看看具体修改了什么内容

在这里插入图片描述

  1. 查看提交历史git log 用于查看当前分支的提交历史记录,包括提交标识符、作者、提交时间等。
    在这里插入图片描述

  2. 创建分支git branch <branch-name> 创建一个新的分支。

  3. 切换分支git checkout <branch-name> 切换到指定的分支。

  4. 合并分支git merge <branch-name> 将指定分支的提交合并到当前分支。在这里插入图片描述在dev分支上正常提交修改后的cc.txt 切换回main分支后打开 cc.txt的修改会消失
    用git merge dev会合并工作成果

git checkout -b dev 创建并切换分支
git branch dev 创建新的分支
git checkout dev 切换到分支
git branch 查看分支
git branch -d dev 删除分支
git merge <name> 合并某分支到当前分支

当git无法自动合并分支时,必须首先解决冲突,解决冲突后再提交合并完成,解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容。
git log --graph能看到分支合并图

  1. 远程仓库: 在本地创建了Git仓库后,可以在Github上创建一个Git仓库 让两个仓库进行远程同步。
    在这里插入图片描述
    在这里插入图片描述
    从现在起,只要本地作了提交,就可以通过命令:
    git push origin master把本地 master 分支的最新修改推送至 GitHub。
  2. 推送到远程仓库git push <remote> <branch> 将当前分支的提交推送到远程仓库。
  3. 从远程仓库克隆:从零开发 最好的方式是先创建远程库 再从远程库克隆在这里插入图片描述在这里插入图片描述
    从远程仓库抓取git fetch <remote>将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
    git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作 必须注意 git fetch 命令只会将数据下载到本地仓库——它并不会自动合并或修改当前的工作
    推送到远程仓库:git push <remote> <branch>在这里插入图片描述

在这里插入图片描述

查看远程仓库的更多信息:git remote show <remote>
修改远程仓库的简写名:git remote rename
删除远程仓库:git remote rm

git remote -v 查看远程仓库的简写名

在这里插入图片描述

  1. 撤销操作git commit --amend修改最近一次提交记录的信息
 `git commit -m 'initial commit'
git add forgotten_file
git commit --amend
  1. 版本回退:

Git 必须知道当前版本是哪个版本,在 Git 中,用 HEAD 表示当前版本,也就是最新的提交 1094adb… ,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当然往上 100 个版本写 100 个 ^
比较容易数不过来,所以写成 HEAD~100。
在这里插入图片描述
git reset --hard 1094a 回退到某个版本 根据版本号
git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区
在这里插入图片描述
用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。

在这里插入图片描述
git add 命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行 git commit 就可以一次性把暂存区的所有修改提交到分支。
12.修改管理
要从版本库中删除该文件,那就用命令 git rm 删掉,并且 git commit
git checkout – test.txt 用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

补充学习:

更多推荐

Quartz.NET,强大的开源作业调度框架

Quartz.NET是一个强大的开源作业调度框架,专为C#和.NET开发而设计。它允许开发人员在应用程序中调度、执行和管理各种类型的作业,例如定时任务、后台作业、周期性作业等。Quartz.NET具有高度可配置性和灵活性,可以满足各种复杂的调度需求。**作用:**Quartz.NET的作用在于简化作业调度的实现并提供可

高防CDN如何保护电商平台的在线支付系统安全

高防CDN如何保护电商平台的在线支付系统安全?随着移动互联网的快速发展,越来越多的用户选择在手机上进行购物和支付。这种形式的便利性和灵活性推动了电商平台的发展,但同时也给电商平台的安全带来了新的挑战。尤其是在线支付系统,由于其涉及用户的金融信息,成为黑客攻击的重点目标。为了保护电商平台的在线支付系统安全,选择合适的高防

案例实践丨基于SkyWalking全链路监控的微服务系统性能调优实践篇

1背景随着开源社区和云计算的快速推进,云原生微服务作为新型应用系统的核心架构,得到了越来越广泛的应用。根据Gartner对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。”微服务之父,马丁.福勒,对微服务概述如下:就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常

Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

Unity开发人员的城堡游戏引擎概述一、简介2.Unity相当于什么GameObject?3.如何设计一个由多种资产、生物等组成的关卡?4.在哪里放置特定角色的代码(例如生物、物品)?Unity中“向GameObject添加MonoBehaviour”相当于什么?5.Unity子目录相当于什么Assets?6.支持哪些

git基本使用

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

深度解析Java虚拟机(JVM)的垃圾回收机制

AI绘画关于SD,MJ,GPT,SDXL百科全书面试题分享点我直达2023Python面试题2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、A

浅谈大数据背景下用户侧用电数据在电力系统的应用与发展分析

安科瑞华楠摘要:随着能源互联网、互联网+、新型传感技术的持续推进,电力用户侧用电数据呈现指数级剧增、异构性增强的情况,逐渐构成了用户侧用电行为大数据。然而目前对电力领域的数据价值挖掘于电网内部和电源端,用户侧庞大且蕴含丰富价值的电力数据而未能得到很好利用。文章主要是在用户侧用电行为大数据的基础上,对用户侧电力数据价值在

机器学习(16)---聚类(KMeans)

聚类一、聚类概述1.1无监督学习与聚类算法1.2sklearn中的聚类算法二、KMeans2.1基本原理2.2簇内误差平方和三、sklearn中的KMeans3.1所用模块3.2聚类算法的模型评估指标3.3轮廓系数3.4CHI(卡林斯基-哈拉巴斯指数)四、KMeans做矢量量化4.1概述4.2案例一、聚类概述1.1无监

负载均衡算法介绍及应用连接池负载不均问题分析

在分布式系统架构下,为了满足高并发和高扩展性的要求,负载均衡设备得以广泛的使用。结合应用连接池的配置,在实际使用过程中可能会出现负载不均的问题。本文简单介绍了负载均衡算法、Druid连接池配置以及连接池负载不均的问题分析及优化方法。1、负载均衡基本概念1.1负载均衡介绍在分布式架构下随着逻辑业务的快速发展,系统架构也随

元宇宙安全与著作权相关市场与技术动态:韩国视角

元宇宙市场动态元宇宙安全与著作权维护技术现状元宇宙有可能为商业创造巨大价值,尤其是在零售和时尚领域。时尚产品的象征性价值不仅在物理空间中得以保持,在虚拟空间中也是如此。通过元宇宙平台,企业可以开发虚拟产品,降低供应链和库存管理的风险。随着虚拟化和触觉技术的发展,消费者可以通过体验产品的物理特性做出更好的购买决策。通过将

go 1.18新特性(泛性 模糊测试 WorkSpace)

文章目录泛型interface的功能扩展泛型使用模糊测试模糊测试的使用模糊测试的缺点GoWorkSpace泛型interface的功能扩展在1.18之前,官方对interface的定义是方法的集合,可以存储实现该方法的任意类型。1.18对interface的定义改为类型集合。接口类型的变量可以存储这个接口类型集合的任意

热文推荐