【git实际应用填坑解决】

news/2025/3/19 2:50:10/文章来源:https://www.cnblogs.com/lingXie/p/18231936

工作中git填坑之路,有时候用小乌龟,有时候也用git命令。

- git 如何管理多个项目仓库?

1. git subtree 实现管理多仓库

A、 B 、 lib 都是仓库,其他lib是公共模块,在A,B中都有使用

优点: 提交方便,直接在当前项目目录就可修改公共模块lib并提交

在项目A 和 B 中创建公共模块Common

git subtree add --prefix=src/Common https.xxx.git master

在项目中A 修改公共模块Common后提交

git subtree push --prefix=src/Common https.xxx.git master

在项目B中 拉取公共模块Common,此时也同步了commit修改的内容

git subtree pull --prefix=src/Common https.xxx.git master

操作例子:
image

2. git submodule 实现管理多仓库

缺点: submodule添加子模块lib,如修改了lib ,提交子模块必须在子模块lib的项目如lib中才行。

 git submodule add http://xxx.xxx/lib.gitgit submodule add http://xxx.xxx/module.git

3. git subtree 与 git submodule区别?

subtree与submodule的作用是一样的,但是subtree出现得比submodule晚,它的出现是为了弥补submodule存在的问题:

submodule不能在父版本库(project1,project2)中修改子版本库的代码,只能在子版本库(lib)中修改,是单向的;

submodule没有直接删除子版本库的功能;

- git版本回退

注意!!!: 当然操作需慎重,避免万劫不复...
注意!!!: head^^ 或 head~2 形式可指定回退多少

git reset 回退版本,移除不要的版本。 head指针往前移

结果:直接删除指定的commit

hard回退

  • 版本回退后,暂存区和工作区一致。 再推到远程。覆盖度之前不要的版本。并且不保留记录
git reset --hard head

soft回退

  • 版本回退后,暂存区依旧有原来的commit,实际工作区的内容依旧存在

  • 实质:就是删除最近(某个)的写错或者不想要的commit信息,但不影响工作区

  • 场景:删除最近的commit信息

git reset --soft head

git revert 撤销某次提交【回滚提交】,新建一个提交。 head指针往后移 。

结果:用一次新的commit来回滚之前的commit,在创建一个新的commit

优点:会保留完整的历史提交记录

git revert --hard head 
git revert --soft head

- 将feature分支的某个文件f.txt合并到master分支上。

git checkout master
git checkout --patch feature f.txt

- 修改历史提交代码的commit信息

1. git 如何修改最近一次的commit信息

  1. git commit --amend

  2. 进入vim操作界面之后, 点击字母键 i 然后进入INSERT模式,然后对commit信息进行修改,然后ESC 然后 :wq 保存退出

  3. 然后执行 git log 会发现最近的一次commit信息被修改成功了

2. git 修改已经提交到git远程仓库的commit信息

  1. 首先回撤到上一次提交,不修改本次提交的改动 git reset --soft HEAD~1

  2. 重新做一次提交 git commit -m “重新提交commit信息”

  3. 强推本地分支到远程仓库 git push -f origin master

  4. 查看远程仓库中的是否已经修改commit信息

git恢复 stash丢失的内容

找回丢失的STASH~

如果执行git stash pop之后将恢复的内容被手动删掉了(比如手贱点了vsCode的Discart All Changes,刚恢复的所有东西都消失了~~)

由于git stash pop恢复的同时把stash内容也删掉, 所以stash list不再会有之前的stash。

但是git stash pop出的change是可以找回的,因为每次git stash都会生成一个新的commit,只要知道commitID, 通过git stash apply commitID 就可以应用之前的stash

寻找commitID有两种方法:

1、git stash pop 最后会打印出pop掉的commitid值,若这个记录还存在直接使用即可。

2、git fsck --lost-found, 会打印出所有dangling commit,慢慢找就行了。一般是最近的几个

- git取消合并

git merge --abort

-git打标签tag

git tag
git tag -a Test1.0 -m "发布Test1.0正式版本"
git tag
git push origin Test1.0

- git 本地仓库 与 远程仓库关联遇到报错

git remote add origin https://gitee.com/xxx.git
git branch --set-upstream-to=origin/master 
git push -u origin master

1.遇到报错 failed to push some refs to 'https://gitee.com/xxx.git'

根本原因:本地 和 远程 内容不匹配 或 权限不足问题

image

解决:最好保证代码一定是最新的。

git push -f -u origin master(master为指定分支)

2. git pull时报错fatal: refusing to merge unrelated histories

image
解决:

git pull origin master --allow-unrelated-histoories

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

36氪研究院 | 2023年中国工业软件行业洞察报告

36氪研究院 | 2023年中国工业软件行业洞察报告 36氪研究院2023-04-12 10:53关注国产替代蓝海市场,ChatGPT掀起智能化浪潮1、行业定义及发展历程 工业软件指应用于工业领域,以提高工业企业研发、生产、管理水平和工业装备性能为目的的应用软件,包括在工业互联网平台上运行的工…

git实际应用填坑解决

工作中git填坑之路,有时候用小乌龟,有时候也用git命令。 - git 如何管理多个项目仓库? 1. git subtree 实现管理多仓库 A、 B 、 lib 都是仓库,其他lib是公共模块,在A,B中都有使用 优点: 提交方便,直接在当前项目目录就可修改公共模块lib并提交 在项目A 和 B 中创建公共…

Kubernetes – 节点

Kubernetes 节点是实际工作发生的工作器或主机。每个 Kubernetes 节点都有执行 Pod 所需的服务,并由控制平面控制。每个 Kubernetes 节点可以有多个 Pod,Pod 内有容器运行。每个节点中有 3 个进程用于调度和管理这些 Pod。 Container runtime:需要容器运行时来运行在 pod 内…

leetcode 876. 链表的中间结点(快慢指针法)

题目描述 https://leetcode.cn/problems/middle-of-the-linked-list/description/给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1:示例 2:思路分析 用两个指针 slow 与 fast 一起遍历链表。slow 一次走一步,…

浅谈如何优化 Milvus 性能

浅谈如何优化 Milvus 性能发布于 2023-01-10 14:53:303.5K0举报文章被收录于专栏:Reinvent Data ScienceMilvus 是全球最快的向量数据库,在最新发布的 Milvus 2.2 benchmark[1] 中,Milvus 相比之前的版本,取得了 50% 以上的性能提升。值得一提的是,在 Master branch 的最新…

Kubernetes – Namespaces

Kubernetes 命名空间是一种让您能够组织资源的机制。它就像集群内的虚拟集群。命名空间将资源与其他命名空间的资源隔离开来。例如,您需要在一个命名空间中为部署/服务使用不同的名称,但您可以在两个不同的命名空间中为部署使用相同的名称。 初始命名空间kube-system: Maste…

opengauss双region流式容灾搭建

opengauss双region流式容灾搭建 云和恩墨-戚钰2023-05-30openGauss本文出处:https://www.modb.pro/db/626197 一、主备双集群部署 架构:主集群:一主一备;灾备集群:一主一备 1. 安装集群 1 主节点:...41 备节点:..***.***45 xml 文件参考:<?xml version="1.0&…

leetcode160 相交链表

题目描述 https://leetcode.cn/problems/intersection-of-two-linked-lists/description/给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: …

联想ThinkServerRD440进入管理界面

1.开机按F1进入BIOS找到【Server Management】-选择【BMC network configuration】设置DHCP,F10保存2.将路由器下的网线连接到服务器的MGMT口3.重启进入BIOS查看获取的地址,在浏览器输入IP4.提示这个错误可以用Edge浏览器的IE模式打开,或者其他浏览器有IE/兼容模式就行默认账…

Kubernetes – 标签和选择器

一个名为Kubernetes的开源容器管理平台可自动执行容器的部署、扩展、降级和负载平衡(也称为容器编排工具)。它由 Google 使用 Golang 创建,因此拥有一个相当大的社区。Google 最终将其捐赠给了 CNCF(云原生计算基金会)。本质上,部署是 pod 上方的一层抽象。它类似于 pod …

OOP第4-6次作业总结

前言: 这三次作业中第四次作业是对前三次作业答题判题程序的迭代,而从第五次作业开始,则是新的家居强电电路模拟程序题目。就难度而言,第四次作业比第五、六次作业难,第五次作业是家居强电电路模拟程序的开头,所以自然简单,而且第六次作业还减少了两道题目,使得第六次作…

​ChatTTS:Win11本地安装和一键运行包!

ChatTTS 是一个专为交互式语音准备的AI语音合成项目,特点是自然,逼真,可把控声音细节,能说能笑能停顿。 音频播放器00:00 00:00 使用上 / 下箭头键来增高或降低音量。 具体内容,已经在另外的文章中介绍过。本文主要是关注两个点。如何在Windows上安装这个项目。分享一个已…