git的学习笔记

git的学习使用
  • 参考了书和好多网上搜到的连接,忘了记录参考的了,太多了()
  • 捋出来一个大致的较为全面的git个人使用流程。
(一)基本操作:

image-20240422211553139

  1. 安装配置好git

  2. 创建目录 init 初始化一个仓库,初始化完成后会出现一个.git文件夹。

  3. git status 查看仓库的状态。它会显示所处的分支以及可以提交的内容。包括工作区文件以及缓冲区文件。

  4. git add – 向缓冲区提交文件。

    (1)先创建一个文件,然后add一下,这里可能会出现一个警告。

    image-20240425222004764

    这里我们了解一下LF,以及CRLF:

    CR是换行符“\r”,LF是回车符“\n”,windows用CRLF“\r\n“来结束这一行,而linux用”\n"来结束这一行。

    windows编译器会把行尾转换成“\r\n”

    解决方案:git config --global core.autocrlf input 它会在提交时把换行转化为LF,拉回本地时在转化为对应系统的换行方式。

​ (2)git add也被称为跟踪文件,可以用git add .来一次性添加所有的文件("."与add之间要有空格)

  1. git commmit – 进行文件的提交(先跟踪后才可以提交)

    (1)直接使用该命令在vim界面中写,最后用一个空行留白。这里可以直接写多行提交。

    (2)用git -m "message"进行提交,如果是多行

    git commit -m "fix:bi标题
    1、你好
    2、世界"
    

    也可以用多个-m

    (3)git commit --amend 修改信息,加上-m 可以不打开vim终端直接进行更改。

  2. git log 查看提交日志

    image-20240426152334634

    git log --graph 可以用图表的形式查看分支

  3. git diff – 查看更改add前后的区别

  • 文件被增添的部分用绿色字符,加号来标识;文件被删减的部分用红色字符减号来标识。
  • 注意:只有文件被add到缓冲区之后,才能跟工作区进行比较。
  • 可以在后面加文件名来指定查看区别,如果不加,默认输出全部的被修改的文件。
(二)分支的操作

不同的分支可以同时进行完全不同的任务,等到完成后再与master合并,分支可以使得团队高效的进行并行开发。

image-20240426154804775

  1. git branch

    • git branch + 分支名 创建分支。
    • git branch 查看本地分支
    • git branch -r 查看远程分支
    • git branch -a 查看本地和远程分支
    • git branch -d 分支名 删除本地的分支
    • git push origin --delete 远程分支名 删除远程对应的分支
    • git branch -vv 查看本地和远程分支的关系
  2. git checkout

    (1)git checkout 分支名 切换到相应的分支

    (2)git checkout -b 分支名 创建并切换到该分支

    (3)git checkout - 切换回上一个分支。

  3. 特性分支

    ​ 通常master(main)分支作为主分支,存放已经开发好的代码,在master的基础上创建其他特性分支,里面是创建中的代码。

  4. git merge --合并分支

(1)git merge 的指令有三种,–ff ,–no-ff,–ff-only

(2)-ff代表可以快速合并(fast-forward)时,采用快速合并的方式;不能快速合并时,采用–no-ff(non-fast-forward),即非快速合并。–ff-only代表只能使用快速合并,如果无法快速合并,就会拒绝该请求。

  • 注意:只有被跟踪,提交后的库发生合并时才会提示记录。需要先将新的分支跟踪,然后再合并;如果是快速合并不会有记录,只有选择–no-ff时,真正发生结点的合并,才会提示写记录。
    image-20240427110248207
    • 用git log --graph可以更鲜明的看出合并的方式。

image-20240427110500682

​ 将mater合并到test的最简单流程:

git checkout test
git merge master
不可简化为一句话:git merge master test(经测试,会提示已执行,但是不会真正执行)

image-20240427123247023

关于fast -forward 与non-fast-forward的区别

下图便是一次fast forward的流程,它本质上是直接移动了指针。

流程

而non-fast-forward会创建出一个新的结点,合并差异后,将其置于头部,再把master对应过去。

  1. git rm 的使用

    (1)rm:只删除工作区的文件,如果需要删除版本库文件,还需要再追踪。(不推荐使用)

    如图是一次删除3.md文件的过程:

    image-20240427121725488

    (2)git rm:删除工作区和缓存区的文件,还需要commit才能删除版本库。如果工作区文件与版本库文件不同,需要加参数-f。

  2. 使用git reset回退版本

    (1)先用git log 查询删除前的hash值

    image-20240427121929088

​ (2)利用该值进行回退image-20240427122014829

​ (3)查看状态,用git restore 恢复文件

image-20240427122108249

注:由于git log 只能查看以当前状态为终点的历史,所以可以用git reflog查看仓库的操作日志。

(三)推送至远程仓库
  1. 用git remote add 添加远程仓库

    git remote add origin git@github.com:xyyr-c/hello--world.git
    

    这里我们用origin作为远程仓库的标识符(名称)

  2. git push 推送到远程仓库

    (1)git push -u origin master 将本地的master推送至远程的master分支,并且建立关联,关联后直接git push 就会默认选择master。

    (2)-f 指令是强制覆盖,不要轻易使用,这里是由于原本的库里有README,与本地产生冲突,所以先强制覆盖了。

    image-20240427140231195

  3. git clone 直接获取远程的仓库,克隆出一个以仓库名作为名字的文件夹,以及相应的文件。

  4. git pull 获取远程的仓库分支

本地修改,然后推送至远端的一次过程。

在test分支:
git pull origin master //拉取主分支
vim README.md//修改文件
git add . //追踪文件
git commit -m "change README"//提交到版本库
git checkout master //切换回master分支
git merge test //合并分支
git push//推送到远程仓库

如果出现下面这个图片,说明推送成功:

image-20240427142106042

如果出现这个,不会发生文件的变化,一定有地方错了(比如忘记提交到版本库)

image-20240427142157444

  1. git rebase 删除commit的使用方法(这个也叫变基合并请求)

    由于小组修改READEME.md出现过多的无用记录,尝试删除掉这些记录。

    在这里插入图片描述

    (1)先git pull 拉取

    (2)git rebase -i hash,hash是要保留的那一次的提交的值

    (3)解决冲突就是把它冲突的地方删除掉,然后add,commit

    (4)解决冲突解决后git rebase --continue

    (5)git push到远程。

    成功删掉了一串无用且重复的README的更新消息

(1)先git pull 拉取

(2)git rebase -i hash,hash是要保留的那一次的提交的值

(3)解决冲突就是把它冲突的地方删除掉,然后add,commit

(4)解决冲突解决后git rebase --continue

(5)git push到远程。

成功删掉了一串无用且重复的README的更新消息

在这里插入图片描述

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

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

相关文章

Golang | Leetcode Golang题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; // 贪心算法 func canJump(nums []int) bool {cover : 0n : len(nums)-1for i : 0; i < cover; i { // 每次与覆盖值比较cover max(inums[i], cover) //每走一步都将 cover 更新为最大值if cover > n {return true}}return false } …

2024通信会|迈向智慧配电网建设新时代,锐捷网络发布双平面配电通信解决方案

近期,以“加快推进通信数智化,助力构建新型能源体系”为主题的2024年能源网络通信创新应用大会在四川成都圆满结束,会议围绕构建新型能源体系和新型电力系统建设需求,探讨能源网络通信创新应用的最新趋势与成果、“主、配、微”通信网一体化融合、配电通信网、通信数智化转型等…

41-数组 _ 数组作为函数参数

41-1 冒泡排序函数的设计 数组传参的时候&#xff0c;形参有2种写法&#xff1a; 1、数组 2、指针 往往我们在写代码的时候&#xff0c;会将数组作为参数传个函数 如&#xff1a;实现一个冒泡排序&#xff0c;将数组的数据排成升序 冒泡排序的核心思想&#xff1a; 1、两…

NGINX发布动态页面的方法

一、建立 [rootserver100 html]# vim index.php [rootserver100 html]# pwd /usr/share/nginx/html 二、下载PHP文件 [rootserver100 conf.d]# dnf install php.x86_64 -y 正在更新 Subscription Management 软件仓库。 无法读取客户身份 本系统尚未在权利服务器中注册。可…

国内十大CRM软件盘点2024:专家推荐+用户真实反馈

Zoho CRM软件即客户关系管理系统&#xff0c;这个概念自1999年由GartnerGroup公司提出以来逐渐演变&#xff0c;最初是为了填补ERP系统在客户关系管理方面的缺失&#xff0c;后来发展成了企业战略中不可或缺的工具。随着企业对客户管理的重视程度不断提升&#xff0c;越来越多的…

Socket套接字(UDP数据报)篇

Socket 概念数据报套接字DatagramSocketDatagramPacketInetSocketAddress 小结 概念 Socket套接字,是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元. 基于Socket套接字的网络程序开发就是网络编程. 数据报套接字 使用的是UDP(User Datagram Protocol…

IGM焊接机器人RTE 495伺服电机维修详情一览

在当今科技迅速发展的时代&#xff0c;机器人已成为各行各业不可或缺的重要工具。IGM机器人便是其中之一&#xff0c;其工业机械手伺服马达作为机器人的关键部件&#xff0c;确保机器人能够高效、稳定地运行。当出现IGM焊接机器人RTE 495伺服电机故障问题时&#xff0c;及时进行…

【推荐】2024年必备的技术学习网站

在学习 Java 的过程中&#xff0c;你都在用哪些网站查找资料和学习呢&#xff1f;以下是 V 哥在日常工作和学习中&#xff0c;经常会使用到的网站&#xff0c;有哪些是与 V 哥不约而同都在用的呢&#xff0c;下面来一一介绍一下&#xff1a; 1、百度开发者搜索 你是不是日常在…

[Algorithm][分治 - 归并排序][排序数组][交易逆序对的总数][计算右侧小于当前元素的个数][翻转对]详细讲解

目录 0.原理讲解1.排序数组1.题目链接2.代码实现 2.交易逆序对的总数1.题目链接2.算法原理详解3.代码实现 3.计算右侧小于当前元素的个数1.题目链接2.算法原理详解3.代码实现 4.翻转对1.题目链接2.算法原理详解3.代码实现 0.原理讲解 归并排序的流程充分的体现了**「分⽽治之」…

使用CSgetshell到3389端口远程桌面

中间使用了这个Akagi64.exe提权&#xff0c;网上可以找到&#xff0c;高版本的cs网上也可以找到。

Linux系统编程---线程池并发服务器

模型原理分析&#xff1a; 线程池的关键优势在于它减少了每次任务执行时创建和销毁线程的开销 线程池的组成主要分为 3 个部分&#xff0c;这三部分配合工作就可以得到一个完整的线程池&#xff1a; 1. 任务队列&#xff0c;存储需要处理的任务&#xff0c;由工作的线程来处理…

Linux网络服务-DHCP

一、DHCP工作原理 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;&#xff1a;用于自动获取IP地址 1.客户端会发送一个广播DHCP Discover报文去寻找DHCP服务器 2.客户端只会接收第一个回复的DHCP服务器的报文 3.服务器会发…

MATLAB非均匀网格梯度计算

在matlab中&#xff0c;gradient函数可以很方便的对均匀网格进行梯度计算&#xff0c;但是对于非均匀网格&#xff0c;但是gradient却无法求解非均匀网格的梯度&#xff0c;这一点我之前犯过错误。我之前以为在gradient函数中指定x&#xff0c;y等坐标&#xff0c;其求解的就是…

Python异步Redis客户端与通用缓存装饰器

前言 这里我将通过 redis-py 简易封装一个异步的Redis客户端&#xff0c;然后主要讲解设计一个支持各种缓存代理&#xff08;本地内存、Redis等&#xff09;的缓存装饰器&#xff0c;用于在减少一些不必要的计算、存储层的查询、网络IO等。 具体代码都封装在 HuiDBK/py-tools: …

Ubuntu TeamViewer安装与使用

TeamViewer是一款跨平台的专有应用程序&#xff0c;允许用户通过互联网连接从全球任何地方远程连接到工作站、传输文件以及召开在线会议。它适用于多种设备&#xff0c;例如个人电脑、智能手机和平板电脑。 TeamViewer可以派上用场&#xff0c;尤其是在排除交通不便或偏远地区…

Open SUSE 安装MySQL

前言 看了一圈网上关于SUSE的教程实在是太少了&#xff0c;毕竟太小众了。这两天在安装MySQL的时候老是出问题&#xff0c;踩了一晚上的坑&#xff0c;发现其实很简单&#xff0c;网上看了方法大概有这几种 通过Yast software management安装&#xff0c;但是我尝试了&#x…

Linux下的基本指令(1)

嗨喽大家好呀&#xff01;今天阿鑫给大家带来Linux下的基本指令&#xff08;1&#xff09;&#xff0c;下面让我们一起进入Linux的学习吧&#xff01; Linux下的基本指令 ls 指令pwd命令cd 指令touch指令mkdir指令(重要)rmdir指令 && rm 指令(重要)man指令(重要)cp指…

海外三大AI图片生成器对比(Stable Diffusion、Midjourney、DALL·E 3)

Stable Diffusion DreamStudio 是Stable Diffusion 的官方网页&#xff0c;价格便宜&#xff0c;对图片的操作性强&#xff0c;但同时编辑页面不太直观&#xff0c;对使用者的要求较高。 与 DALLE 和 Midjourney 不同&#xff0c;Stable Diffusion 是开源的。这也意味着&…

[图解]领域驱动设计伪创新-为什么互联网是重灾区-02

0 00:00:00,000 --> 00:00:04,737 我们并没有说&#xff0c;微信或者是美团用了领域驱动设计 1 00:00:04,737 --> 00:00:06,632 没有做这个暗示 2 00:00:06,632 --> 00:00:08,290 我只是说什么 3 00:00:09,350 --> 00:00:12,700 针对用户量很大的系统 4 00:00:…

CANoe如何实现TLS协议

TLS&#xff0c;Transport Layer Security&#xff0c;传输层安全协议。是在传输层和应用层之间&#xff0c;为了保证应用层数据能够安全可靠地通过传输层传输且不会泄露的安全防护。 TLS安全协议的实现逻辑&#xff0c;在作者本人看来&#xff0c;大致分为三个部分&#xff1…