GIT —— 基本操作,分支管理,远程操作

news2024/12/22 19:35:42

GIT 企业开发

最近找实习,在完善简历,遂发一发存货,有待持续完善,我认为这部分非常的有意义

1. 基本操作

1.1 创建,配置本地仓库

创建

mkdir gitcode
cd gitcode
git init

配置

git config user.name "bts"
git config user.email "xxx"
git config -l

将配置生效于当前机器的所有仓库

git config --global user.name "xxx"

删除配置/删除全局配置

git config --unset user.name
git config --global --unset user.name

1.2 认识工作区,暂存区,版本库

  • .git:版本库,不允许手欠做任何修改!

  • stage/index/:暂存区,索引

  • gitcode/: 工作区

image-20230622202958468
  • 修改的工作区内容会写入**对象库objects**的一个新的git对象

1.3 添加文件

可查看提交记录

git log 

提交全部文件/指定的一些

git add .
git add [file]

将暂存区内容提交,请不要瞎写

git commit -m "你憋瞎写"

1.4 关于文件的修改

**git追踪管理的是修改!!**而不是文件

查看对于文件状态

git status

查看暂存区和工作区的差异

git diff [file]

查看版本库和工作区的差异

git diff HEAD --[file]

1.5 版本回退

前提!!commit后还没有push!!这也是我们回退的目的,不玷污远程仓库的代码

本质回退版本库中的内容,git log可查看commit id

git reset [--soft | --mixed | --hard][HEAD]
  • --soft:只回退版本库中内容
  • --mixed:只回退版本库和暂存区中内容(默认项)
  • --hard:全部回退(慎用!!)

撤销回退,那就拿着你想退到那儿的commit id,如果你已经清过屏了,但它被冲掉了也没后悔药了

git reflog

根据提交状态,可分为如下三种情况:

  1. 撤销工作区

你当然手动改咯,但是!太容易改出bug了,你写了一段时间你都不记得你干了啥了

回到最近一次add/commit状态

git checkout -- [FILE]

所以学会版本控制真的很重要,哎想当年我手动回滚相当痛苦了

  1. 撤销工作区和暂存区

reset还可以回退到版本区的当前版本,回退暂存区

git reset HEAD [file]

HEAD 当前版本,HEAD^上一版本,HEAD^^

这样就回到了场景1

git checkout -- [FILE]
  1. 撤销工作区,暂存区和版本库
git reset --hard HEAD^

1.6 删除文件

删除版本库中的文件

删除工作区中内容 - 将变动提交到暂存区 - 提交至版本库

rm [file] 
git add [file]
git commit -m "delete file"

我们可以将前两条简化为一条命令

git rm [file]
git commit -m "delete file"

2. 分支管理

  • 日常开发的代码并未经过测试验证
  • 多人协作开发

2.1 分支的创建,删除,切换,合并

查看当前仓库有几个本地分支

git branch
image-20230623094208171

HEAD可以指向其他任何分支(不止master),指向的就是工作分支(前面有*)

分支的创建

站在当前最新版本上创建分支

git branch [dev]
image-20230623095229878

分支的切换

git checkout [dev]
image-20230623100458710

也可以用一条命令来解决

git checkout -b dev

分支的合并

git checkout master
git merge dev
image-20230623100616807

分支的删除

必须在其它分支上删除dev分支,我们鼓励删除无用的(已完成任务)的分支

git branch -d dev

2.2 合并冲突

我们最有可能在merge过程中产生冲突

image-20230623102448691

无法确定保留那个,打开[file],需要手工解决

可以清晰看到记录 ——

git log --graph --abbrev-commit

3. 远程操作

如上所有内容都是在本地完成的!那么Git是分布式版本控制系统

“中央服务器”仓库(远程仓库) —— 用来交换修改,推送-拉取

image-20230623111018851
  • issue:用来和仓库的管理者沟通issue的,那么我科研也对github issue数量进行了调研
  • pull request:实际上我们不允许直接merge的,那我们先要提交“合并申请单”

3.1 克隆仓库

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

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

相关文章

HTTP 超文本传输协议

1.HTTP(Hypertext Transfer Protocol,超文本传输协议) 是一种用于传输超媒体文档(例如HTML文件,可以包含文本,视频,图片,音乐,地图定位)的应用层协议&#x…

【windows10】查看计算机的WIFI密码

【windows10】查看计算机的WIFI密码 1、背景2、操作 1、背景 无线路由器设置完密码后,经常会忘记。 当有新的设备需要接入网络的时候,如何能快速获得wifi密码呢? 本博客分享一种通过已联网的计算机来查看wifi密码。 2、操作 -step-2.1、打…

阿里云服务器的备案流程和规定如何?如何办理备案手续?

阿里云服务器的备案流程和规定如何?如何办理备案手续?   一、备案流程概述   阿里云服务器的备案流程分为五个主要步骤:1)实名认证;2)填写备案信息;3)上传资料;4&…

Web服务器群集:链路聚合与桥接

目录 一、理论 1.链路聚合 2.bond模式 3.team模式 4.bond和team区别 二、实验 1.实现bond网络接口 2.实现team网络接口 三、总结 一、理论 1.链路聚合 (1)概念 链路聚合(Link Aggregation),它是一个计算机…

【Vue】Vite基础学习

文章目录 Vite 基础学习一、单页面应用程序二、Vite 基本使用2.1 创建 vite 项目2.2 项目结构2.3 项目运行流程 Vite 基础学习 一、单页面应用程序 单页面应用程序(英文名:Single Page Application)简称 SPA,顾名思义&#xff0c…

springboot:定时任务

目录 一、实现定时任务的方法一:基于JDK 方法一:使用JDK自带的Timer类 法二:使用ScheduleExecutorsService类 二、基于Spring Task实现定时任务(推荐使用) 三、基于Quartz实现定时调度 四、使用分布式定时任务框架:elastic-j…

基础-进阶-升级~图解SpringSecurity的RememberMe流程|源码

前言 今天我们来聊一下登陆页面中“记住我”这个看似简单实则复杂的小功能。 如图就是博客园登陆时的“记住我”选项,在实际开发登陆接口以前,我一直认为这个“记住我”就是把我的用户名和密码保存到浏览器的 cookie 中,当下次登陆时浏览器…

关于Synchronized的小结

目录 一.特性 1.既是乐观锁又是悲观锁 2.是轻量级锁,也是重量级锁 3.不是读写锁,是互斥锁 4.是可重入锁 5.非公平锁 6.加锁之后,运行完毕自动解锁释放资源 二:Synchronized使用 第一种:定义一个额外的变量来控制加锁和解锁(类似于吉祥物) 第一种:直接给类/方法上锁 三…

【Linux】MySQL备份与恢复

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MySQL备份与恢复 一、数据备份的重要性1.数据库备份的分类2.常见的备份方法3.MySQL完全备份与分类 二、MySQL 日志管理三、MySQL 备份与恢复1.MySQL 完全备份1.物理冷备份与恢…

Linux 服务器以及各个系统下安装

Linux 服务器 Linux是操作系统: Linux作为自由软件和开放源代码软件发展中最著名的例子,背靠社区与商业化的使用,使其得到了广泛的应用与发展。 Linux无处不在: 世界上500个最快的超级计算机90%以上运行Linux发行版…

【MyBatis学习】动态SQL的使用,MyBatis还能这样使用?惊掉了我的下巴 ,赶快带着好奇心一起畅游动态SQL的海洋吧! ! !

前言: 大家好,我是良辰丫,今天我们来学习一下MyBatis中动态sql的使用,带着疑惑走进我们今天的学习! ! !💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句…

短视频矩阵源码开发部署技术解析

短视频矩阵源码开发涉及到多个方面的技术,包括但不限于以下几点: 抖yinAPI:需要通过API获取抖音的视频、用户、评论、点赞等数据。 抖yinSDK:如果需要开发一些原生的功能,比如分享、登录、支付等,需要使用…

深入解析大型语言模型:从训练到部署大模型

简介 随着数据科学领域的深入发展,大型语言模型—这种能够处理和生成复杂自然语言的精密人工智能系统—逐渐引发了更大的关注。 LLMs是自然语言处理(NLP)中最令人瞩目的突破之一。这些模型有潜力彻底改变从客服到科学研究等各种行业&#x…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四天 4/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

Jenkins集成Sonar与Gitlab代码质量检测

前提默认 安装docker19,与docker-compose 安装Jenkins 1、docker-compose.yaml配置 version: 3 services: jenkins: #network_mode: "host" #镜像 image: jenkins/jenkins:2.399-jdk11 #容器名称 container_name: jenkins #启动模式 res…

探索uniapp+vue3解析markdown语法|uniapp键盘撑起

最近正在尝试使用uniappvue3开发仿制chatgpt会话功能。 如上图:经过测试在h5/App端/小程序端 均支持markdown语法解析,键盘撑起后,整体页面和顶部自定义导航栏不会被顶起。 uniapp markdown解析及语法高亮 使用了markdown-it和highlight.js…

深入理解深度学习——BERT(Bidirectional Encoder Representations from Transform):输入表示

分类目录:《深入理解深度学习》总目录 BERT在预训练阶段使用了《深入理解深度学习——BERT(Bidirectional Encoder Representations from Transform):MLM(Masked Language Model)》和《深入理解深度学习——…

C++——函数重载

目录 1. 函数重载的概念 2. 函数重载注意点 3. C可以函数重载的原因 4. 总结 1. 函数重载的概念 函数重载:是函数的一种特殊情况。C语言不支持函数重载,而C允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 …

【软件设计师暴击考点】软件工程知识高频考点【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

基于Springboot+vue的汽车租赁系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…