我的 git 实战记录

news2024/11/24 0:18:58

我的 git 实战记录

1. 将本次提交追加到上一次提交

1.1. 情景描述

有些时候,我提交东西太勤快了,导致有部分内容没有提交上去。分为两种情况:

  1. 已经 push 远程仓库
  2. 还没有 push 到远程仓库

1.2. 已经 push到远程仓库

git add 提交修改的文件,就是下面的操作了

`git commit --amend`   # 修改上一次的提交
# 进入提交信息编辑界面
# 修改保存退出
# 推送 (本地分支:远程分支)
git push  origin master:master
# 如果推送不上去,就用这个命令
git push -f origin master:master

然后,我们就提交,有可能普通提交上不去,那么我们就强制提交。

1.3. 未 push 到远程仓库

先git add提交修改的文件,就是下面的操作了

git commit --amend     # 修改上一次的提交

# 进入提交信息编辑界面
# 修改保存退出

1.4. 参考博客

  • git 提交过的追加提交
  • git commit --amend

2. git upstream

2.1. 情景描述

在一些提交的时候,我们需要提交到 upstrem,这个时候我们就需要知道什么是 upstream.
有时候一些提交需要我们提交到 upstream.

那我们要了解 orgin 和 upstream

2.2. orgin

在使用过程中经常可以看到origin这个名词,origin(原点)这次词是从哪来的呢?
要查看当前配置有哪些远程仓库,可以用git remote命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,git 默认使用这个名字来标识你所克隆的原始仓库。
这就是 origin 的由来,如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 这个标识名下。

upstream

upstream 这个名词是在github的Fork功能上衍生出来的。
对于一些有名的开源项目(这里我选的是spring-framework项目),我们常常会把把这些项目Fork到自己的github上,然后再从自己的github把这个项目clone到本地,这时用git remote -v命令查看一下远程仓库的情况,可以看到:

$ git remote -v
origin  https://github.com/Flamingo93/spring-framework.git (fetch)
origin  https://github.com/Flamingo93/spring-framework.git (push)
upstream        https://github.com/spring-projects/spring-framework.git (fetch)
upstream        https://github.com/spring-projects/spring-framework.git (push)

从输出可以看出upstream与origin是并列的关系,他们都是远程仓库的名字,只不过origin是你所克隆的原始仓库的默认名字,upstream是fork的原项目的远程仓库的默认名字。

在这里插入图片描述

可以用git fetch [remote-name]命令从远程仓库抓取数据到本地:

$ git fetch origin        #抓取在你的GitHub仓库上新的提交数据到本地仓库
$ git fetch upstream        #抓取在著名开源项目的GitHub仓库上新的提交数据到本地仓库

3. git submodule

3.1. 添加当前submodule

使用https 格式,不要使用ssh格式

git submodule add https://github.com/username/repository

我们添加的module可以在 .git/modules 里面看到。

3.2. 删除submodule

git rm --cached <submodule path>

3.3 当我克隆远程仓库,更新我的submodule

当我一开始克隆了我以前的远称仓库,我就遇到一些问题就是git submodule update没有用
那么是为什么呢?

我发现是我里面用的 git 远程格式是 ssh 格式,我也不知道为啥,反正改成 https 就好了。

然后我们就要修复git submodule 里面的路径,让我们打开文件 vim .gitmodules

git submodule init && git submodule update

下面的<path>是这个远程相对于.git 的路径。

[submodule <path>]
	path = <path>
	url = <remote_repository_url>

而且我们还要删除一些我们已经错误的submodule
就用 git rm --cached <submodule_path>

git submodule sync
然后我们就用 git submodule update –init 来跟据.gitmodule来更新submodule.
ok,解决问题!!!

github克隆项目中的子模块submodule时遇到的问题

4. 当我们 fork 了一个项目,在本地修改,想提交进入自己的 fork 仓库

一般我们还在原仓库进行修改,那么我们推送上去的还是原仓库,那么我们想要推送进自己的仓库,那么我们就需要修改 git remote

使用 git remote -v

$ git remote -v
origin  git@github.com:looniink/hotelManage.git (fetch)
origin  git@github.com:looniink/hotelManage.git (push)

然后,我fork的 orgin 是:

  • git@github.com:Leiyi548/hotelManage.git(fetech)
  • git@github.com:Leiyi548/hotelManage.git(push)

然后修改

方法一、直接修改:

git remote set-url origin git@github.com:Leiyi548/hotelManage.git

方法二、删除再修改:

git remote rm origin
git remote add origin git@github.com:Leiyi548/hotelManage.git

修改好了,我们就能直接 git push

5. 本地建立了新分支,推送到远程去

  • 使用 git branch 查看本地分支:
$ git brach
* coc
main

可以看到我们本地分支这里有两个分支,一个是 coc,一个是 main分支,当前我处于coc分支。

  • 使用 git branch -r 查看远程分支:
$ git branch -r
origin/HEAD -> origin/main
origin/mainB
  • 使用 git branch -a 查看所有分支:
$ git branch -a
* coc
main 
remotes/origin/HEAD -> origin/main
remotes/origin/coc
remotes/origin/main

将新建立的 coc 分支推送到远端

git push origin coc

然后我们去远程仓库,看coc就推送上去了。

在这里插入图片描述

6. git 提交文件大于100mb

有些时候,我会用git来提交东西,有时候,我提交的东西过大,那么我就无法提交……

解决这个问题,运行如下命令即可:

使用Git LFS

  1. 在官网 https://git-lfs.github.com/下载 git-lfs-windows-v2.8.0.exe 并安装。
  2. 新开一个bash命令行输入git lfs install安装
  3. 跟踪你要push的大文件git lfs track "/path/filename",这时会生成一个.gitattributes文件。
  4. 这里很重要,一定要先将上一步生成的.gitattributes文件上传到仓库也就是要上传三部曲

然后我们再运行 git push,就可以了。

更详细的信息请看解决GitHub上传大于100M文件失败

在 windows 使用 wsl2 操作 git

如果您在Windows、WSL 或容器之间使用相同的存放库资料夹,请务必设定一致的行尾。

由于Windows和 Linux 使用不同的预设行尾端,Git 可能会报告大量修改过的档桉,除了其行尾端之外没有差异。 若要避免发生这种情况,您可以使用档桉或在Windows端全域停用行结束转换 .gitattributes 。 请参阅此VS Code文档,以解决 Git 行结尾问题。

那么我们在我们的项目的根目录创建一个 .gitattribute,因为这个文件对其他人也有用!

* text=auto eol=lf
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf

上面的设置含义是:
将会让所有都以 lf 来进行换行,除了windows的特定文件

7. 参考博客

  • origin vs upstream - Git名词解释
  • 解决GitHub上传大于100M文件失败

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

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

相关文章

Windows免费MQTT服务器搭建及使用

1、EMQ X&#xff08;简称 EMQ) 简介 EMQ的源代码完全开源&#xff0c;支持百万级并发连接&#xff0c;支持完整的MQTT协议&#xff0c;可以简单方便地部署在Linux、Mac OS X或Windows等平台上&#xff0c;支持MySQL、Redis等扩展插件&#xff0c;总的来说&#xff0c;EMQ满足…

Java设计模式-访问者模式Visitor

介绍 访问者模式&#xff08;Visitor Pattern&#xff09;&#xff0c;封装一些作用于某种数据结构的各元素的操作&#xff0c;它可以在不改变数据结构的前 提下定义作用于这些元素的新的操作。主要将数据结构与数据操作分离&#xff0c;解决 数据结构和操作耦合性问题访问者模…

day15|513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

513.找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 问题分析&#xff1a; 递归法&#x…

【基础篇】3 # 数组:为什么很多编程语言中数组都从0开始编号?

说明 【数据结构与算法之美】专栏学习笔记 什么是数组&#xff1f; 数组&#xff08;Array&#xff09;是一种线性表数据结构。它用一组连续的内存空间&#xff0c;来存储一组具有相同类型的数据。 线性表和非线性表 线性表&#xff08;Linear List&#xff09;&#xff1…

第07章 面向对象编程(中级部分OOP)

文章目录IDE(集成开发环境)IDEA介绍idea运行包包的作用包基本语法包的本质分析(原理)包的命名命名规则命名规范常用的包如何引入包注意事项和使用细节访问修饰符【modifier】基本介绍使用的注意事项封装【encapsulation】介绍封装的好处和理解封装的实现步骤封装练习继承【exte…

【阶段四】Python深度学习02篇:深度学习基础知识:神经网络可调超参数:优化器

本篇的思维导图: 神经网络可调超参数:优化器 优化器相当于是用来调解神经网络模型的‘手柄’。 代码 # 编译神经网络,

【C语言】小王带您轻松实现动态内存管理(简单易懂)

在上文通讯录制作中&#xff0c;动态通讯录的使用中就用到了动态内存管理&#xff0c;如果有同学想看一看是如何运用的内存管理函数的&#xff0c;请参考这篇文章&#xff0c;接下来我们一起学习动态内存管理的相关知识。【C语言】使用C语言实现静态、动态的通讯录&#xff08;…

浅显易懂的三次握手与四次挥手

目录 一、三次握手 什么是三次握手&#xff1f; 三次握手图解&#xff1a; 过程解析&#xff1a; &#xff08;1&#xff09;第一次握手&#xff1a; &#xff08;2&#xff09;第二次握手&#xff1a; &#xff08;3&#xff09;第三次握手&#xff1a; 二、四次挥手 …

已解决Python读取20GB超大文件内存溢出报错MemoryError

已解决Python读取20GB超大文件内存溢出报错MemoryError 文章目录报错问题报错翻译报错原因解决方法1解决方法2&#xff08;推荐使用&#xff09;帮忙解决报错问题 日常数据分析工作中&#xff0c;难免碰到数据量特别大的情况&#xff0c;动不动就2、3千万行&#xff0c;如果…

操作系统进程调度算法

进程调度 高级调度&#xff08;作业调度&#xff09;&#xff1a;按一定的原则从外存的作业后备队列中挑选一个作业调入内存&#xff0c;并创建进程。每个作业只调入一次&#xff0c;调出一次。作业调入时会建立PCB&#xff0c;调出时会撤销PCB。 中级调度&#xff08;内存调度…

【历史上的今天】1 月 16 日:互联网工程任务组(IETF)成立;AMD 收购 NexGen;eBay 的第一位员工出生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 1 月 16 日&#xff0c;在 26 年前的今天&#xff0c;国家电力公司组建成立。电力是运作着我们生活的基本&#xff0c;国家电力公司成立于 1997 年 1 月 16 日…

《深度学习入门基于python的理论与实现》chap2感知机 笔记

《深度学习入门:基于python的理论与实现》chap2 感知机 笔记 3个月前正式开始入坑AI的时候就是看的这本书&#xff0c;当时比较粗略地看到了第六章&#xff0c;没有记笔记&#xff0c;现在来重温一下 文章目录《深度学习入门:基于python的理论与实现》chap2 感知机 笔记2.1 什么…

【阶段四】Python深度学习05篇:深度学习项目实战:卷积神经网络的定义、卷积网络的结构与卷积层的原理

本篇的思维导图: 卷积神经网络的定义 卷积神经网络,简称为卷积网络,与普通神经网络的区别是它的卷积层内的神经元只覆盖输入特征局部范围的单元,具有稀疏连接(sparse connectivity)和权重共享(weight shared)的特点,而且其中的过滤器可以做到对图像关键特征的…

基于Power BI的品牌销售金额帕累托分析

一、原理 帕累托于1906年提出了著名的关于意大利社会财富分配的研究结论&#xff1a;20&#xff05;的人口掌握了80&#xff05;的社会财富。这个结论对大多数国家的社会财富分配情况都成立。因此&#xff0c;该法则又被称为80/20法则。 二、数据源 已知某终端表1《商品信息》…

GO 语言 Web 开发实战一

xdm&#xff0c;咱今天分享一个 golang web 实战的 demo go 的 http 包&#xff0c;以前都有或多或多的提到一些&#xff0c;也有一些笔记在我们的历史文章中&#xff0c;今天来一个简单的实战 HTTP 编程 Get 先来一个 小例子&#xff0c;简单的写一个 Get 请求 拿句柄 设置…

VMware Workstation 17 Pro的下载和安装

目录 一、下载 二、安装 三、检查网络连接 方式一&#xff08;简便版&#xff09; 方式二&#xff08;麻烦版&#xff09; 一、下载 下载地址&#xff1a; Windows 虚拟机 | Workstation Pro | VMware | CN 1、进入该网址后&#xff0c;往下翻&#xff0c;有两个选项&…

并查集是什么?怎么模拟实现?如何应用?

目录 一、什么是并查集&#xff1f; 二、并查集可以解决哪些问题&#xff1f; 三、并查集的模拟实现 3.1、并查集的定义 3.2、查询两个元素是否是同一个集合 3.3、合并两个集合 3.4、求集合个数 3.5、并查集完整代码 小结 一、什么是并查集&#xff1f; 我们可以想象这…

九、MySQL 常用函数汇总(2)

文章目录一、条件判断函数1.1 IF(expr,v1,v2)函数1.2 IFNULL(v1,v2)函数1.3 CASE函数二、系统信息函数2.1 获取MySQL版本号、连接数和数据库名的函数2.2 获取用户名的函数2.3 获取字符串的字符集和排序方式的函数2.4 获取最后一个自动生成的ID值的函数三、加密函数3.1 加密函数…

东宝商城项目(三)——用户注册功能的实现(后端)

本文是我做项目过程中记录的学习笔记&#xff0c;用于记录项目开发流程&#xff0c;第一次做项目有很多不懂的地方&#xff0c;本文可读性暂时很差。 我目前的学习目标是走完项目开发流程&#xff0c;知道独立开发一个项目并让项目上线需要经历哪些步骤&#xff0c;需要学到哪些…

java.util.ConcurrentModificationException: null异常

创作背景&#xff1a;在加强for循环中使用了remove操作 原因&#xff1a; 在官方文档中ConcurrentModificationException的介绍如下&#xff1a; public class ConcurrentModificationException extends RuntimeException 某个线程在 Collection 上进行遍历时&#xff0c;通…