git 配置、下载、提交、更新、冲突解决学习

目录

一. 安装教程

二. git配置

1. 查看git配置参数

2. 设置邮箱和用户名

3. SSH配置

4. 配置git远程库公钥

5. 编码设置

三. git 提交流程

1. 整体操作流程图

2. Git仓库包含5个区域

3. 下载、提交、更新命令

3.1. 下载

3.2. 提交

3.3. 更新(两种方式)

四. git 冲突解决

1. git 冲突的类型及合并策略

2. git pull --rebase 冲突

2.1. develop 更新时内容冲突

2.2. 内容冲突处理

2.3. 树冲突解决

3. cherry-pick冲突

4. git merge冲突

五. git 修改历史提交

1. 单个文件回退到某个历史版本

2. 修改最近一次提交内容或注释(git commit --amend )

3. 修改某次历史提交(git rebase -i)

3.1. 合并提交(s)

3.2. 修改提交信息(r)

3.3. 修改提交的内容(e)

3.4. 删掉提交(d)

六. Git 回退历史提交

1. 回退种类(--soft / --mixed / --hard)

2. 回退示例 git reset  取参(--soft   --mixed   --hard)

2.1. 使用 git reset --soft 命令回退

2.2. 通过 git reset HEAD@{1}

2.3. 使用 git reset  --mixed 参数回退(默认不加任何参数的状态)

2.3.1 使用 git reset --mixed A 回退

2.3.2 使用 git reset --hard A 回退


一. 安装教程

安装教程icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/141688528

二. git配置

1. 查看git配置参数

  • 查看Git的配置配置参数命令
# 这条命令会列出所有设置为全局(--global)的配置选项及其值
git config --global --list# 显示当前设置的全局用户名
git config --global user.name# 展示所有级别的配置,包括本地仓库的配置、用户级别的配置以及系统级别的配置
git config --list
  • 执行结果

2. 设置邮箱和用户名

  • 安装完成之后需要配置自己名称和邮箱
# 设置自己的用户名
git config --global user.name "李四"# 设置自己的邮箱
git config --global user.email "323@qq.com"
  • 如果设置名称和邮箱报错

错误信息:

        warning: user.email has multiple values error: cannot overwrite multiple values with a single value Use a regexp, --add or --replace-all to change user.email.

错误原因:
        通过 git config –list 命令 发现有多个user.name 或者多个user.email

解决问题办法:

        执行以下命令

# 执行以下命令
git config --global --replace-all user.name "李四"
git config --global --replace-all user.email "123456@qq.com"

3. SSH配置

        SSH配置需要生成公钥(http协议忽略生成公钥)

右键选择“Git Bash Here”,输入如下命令生成公钥。

并按回车3下,为什么按三下:是因为有提示你是否需要设置密码,如果设置了每次使用Git都会用到密码。
会在一个文件夹里面生成一个私钥 id_rsa和一个公钥id_rsa.pub。(可执行start ~ 命令,生成的公私钥在 .ssh的文件夹里面)

# 执行生成公钥和私钥的命令
ssh-keygen -t rsa -C '自己邮箱'

查看公钥命令

# 查看公钥内容
cat ~/.ssh/id_rsa.pub

4. 配置git远程库公钥

  • 通过【设置】->【ssh公钥】进入码云的如下界面,黏贴公钥
  • 把刚才在git bash里生成的公钥黏贴在公钥里点确定就好了

5. 编码设置

# 注释:该命令表示提交命令的时候使用utf-8编码集提交
git config --global i18n.commitencoding utf-8 # 注释:该命令表示日志输出时使用utf-8编码集显示
git config --global i18n.logoutputencoding utf-8# 注释:设置LESS字符集为utf-8
export LESSCHARSET=utf-8  

三. git 提交流程

1. 整体操作流程图

2. Git仓库包含5个区域

  1. 工作区
  2. 暂存区
  3. 本地仓库
  4. 本地远程库镜像
  5. 远程仓库

3. 下载、提交、更新命令

3.1. 下载

下载:git clone + git checkout

命令说明
git clone -b  test(分支)   https:(代码url)克隆远程库到本地
git checkout  test切换到test分支

代码示例

# 克隆 master 分支到本地
git clone -b master  https://test.jjj.com# 切换分支到 test
git checkout test

3.2. 提交

提交 :git add + git commit + git push

命令说明
git add  分支添加文件到暂存区
git commit提交文件到本地版本库
git push将本地版本库中当前分支推送到默认远程片库。

代码示例

# 推送所有变更的文件到缓存区
git add .# 提交变更文件到本地库
git commit -m "提交日志"# 推送本地仓库到远程仓库
git push

3.3. 更新(两种方式)

方式一(推荐):git pull --rebase = git fetch + git rebase

命令说明

git pull --rebase

从默认远程库拉取本地库当前分支内容,并与本地库当前分支进行rebase合并

git  fetch获取远程库内容
git rebase以rebase方式合并分支

方式二(不推荐):git pull = git fetch + git merge

命令说明
git pull

从默认远程库拉取本地库当前分支内容,并与本地库当前分支进行merge合并

git fetch获取远程库内容
git merge以rebase方式合并分支

四. git 冲突解决

        git 冲突的类型和解决方法,git冲突有两种类型: 内容冲突 树冲突。内容冲突 是因为不同用户修改了同一文件的同一区域产生的;树冲突 是因为不同用户把同一文件改为不同的名字而产生。

1. git 冲突的类型及合并策略

  • 内容冲突:当产生内容冲突时,如果需要保留一方的内容,使用命令git checkout --ours/theirs < file-name > 实现,如果需要合并,可以手动修改文件。
  • 树冲突:产生树冲突时根据实际的需要,使用git rm/add  <file-name> 对文件进行添加和删除。

2. git pull --rebase 冲突

注意:在更新代码时,为了避免没有提交的文件和服务器文件产生冲突,可以先把 本地修改暂存起来,在提交完后,再弹出本地修改,流程如下。

# 1.把本地修改先暂存起来
git stash# 2.拉取代码
git pull --rebase# 3.在把本地暂存文件弹出来
git stash pop

2.1. develop 更新时内容冲突

  • 拉取代码是产生一个冲突内容冲突

2.2. 内容冲突处理

  • 查看文件状态

  • 有三种解决冲突的方式

第一种:使用服务上的修改

第二种:使用本地修改

第三种:手动合并修改

  • 冲突后续处理

2.3. 树冲突解决

  • 查看树冲突的文件状态

  • 解决冲突

  • 后续处理

3. cherry-pick冲突

        注意: cherry-pick 空提交时,会直接退出pick状态; 拣选连续的多个提交命令:git cherry-pick aa^..bb。

示例

         目前有两个分支 develop 和 master, 想把 develop 的提交拣选到 master上

1. 执行步骤
# 查看分支提交日志
git log# 切换到 master 分支
git checkout master# 拣选某个develop上的提交
git cherry-pick commitID

2. 在拣选的时候出现冲突

3. 手动解决冲突,先用 git status 查看出现冲突的文件

4. 使用 vim 手动对冲突的文件进行修改

5. 解决后的界面如下

6. 使用 git add 提交修改

7. git cherry-pick --continue 弹出提交信息交互界面,修改后保存退出,cherry-pick操作完成

4. git merge冲突

当执行merge时,会出现冲突。Git会停止合并过程,并抛出冲突信息

# 合并分支时出现冲突
git merge other-branch# 查看冲突文件
git status# 手动解决冲突
# 编辑文件,选择代码并删除 <<<<<<<, =======, >>>>>>> 标记
vi f.txt# 标记冲突已解决
git add other-branch# 完成合并
git merge --continue# 如果需要取消合并
git merge --abort

五. git 修改历史提交

1. 单个文件回退到某个历史版本

1.1 查看文件修改记录:git log test.txt

1.2 回退文件到 d46d797e50c47bc 版本:git checkout d46d797e50c47bc test.txt

2. 修改最近一次提交内容或注释(git commit --amend )

1. 修改最近一次提交注释内容

  1. 执行命令:git commit --amend

2. 如果要修改内容, 则执行如下过程

  1. 修改文件内容:vi test.txt
  2. 查看文件状态:git status
  3. 添加缓存区:git add .
  4. 提交本地仓库:git commit -m "提交代码"

注意:不管是修改了内容或者是提示,commitID 都会改变

3. 修改某次历史提交(git rebase -i)

命令:git rebase -i  [commitID] (其中commitID是要修改的提交的前一次ID

此命令的交互界面命令如下

常用参数说明

r, reword编辑某次提交的提交信息
e, edit修改某提提交的内容
s, squash把本次的提交合并到上一次
d, drop删除某次提交

3.1. 合并提交(s)

3.1.1 查看提交日志,想把C提交合并到B提交上

3.1.2 运行 git rebase -i -A 后,在交互界面输入s,保存退出

弹出变基交互界面

3.1.3 保存后弹出包含两次提交的提交信息如下:其中以#开始的内容时注释,不带#的是信息

根据需要修改提交信息如下,然后保存退出

3.1.4 再次查看日志,前两个提交合并到一起了

3.2. 修改提交信息(r)

注意修改第一次提交的命令是 git rebase -i --root

3.2.1 查看提交信息

3.2.2 变基到要修改的提交的前一个提交上

git rebase -i 0138a47

在弹出的交互界面里,把 pick字段改成r

保存后,弹出交互的提交信息界面,在这个界面里修改要提交的信息即可

3.2.3 再次查看提交信息,提交信息已经改动

3.3. 修改提交的内容(e)

3.3.1 查看要修改的提交的具体内容

修改下图中id为9490d07的提交, 通过git show查看到这个提交对文件README.md进行了修改

3.3.2 使用命令 git rebase -i 0138a47 变基到要修改提交的前一次提交上

然后弹出 rebase 的操作选项,如下图,把要修改的提交前的参数修改成e

3.3.3 保存交互界面后,对文件进行修改

Vi README.md

对文档添加如下信息,然后进行保存

3.3.4 对改动进行保存

git add README.md

git commit --amend

git rebase --continue

查看改变的提交

3.4. 删掉提交(d)

3.4.1 git log --pretty=oneline -3

3.4.2 git rebase -i 0138a47  #变基

然后弹出交互界面里输入d保存

然后查看日志,刚才的提交的信息就没了

六. git 回退历史提交

1. 回退种类(--soft / --mixed / --hard)

git reset 参数

仓库区域的变化图

仓库原始状态

做了3次提交后,各个区域的文件版本图如下:

--soft

soft方式回退到上一次提交: git reset --soft HEAD~

说明:此时HEAD和Index是存在差异的,可以再次通过git commit 实现提交;

--mixed

回退到上一次提交:

git reset  HEAD~  或 git reset --mixed HEAD~

说明:此时,index和workspace存在差异,通过git add +git commit 还原提交。

--hard

git reset --hard  HEAD~

所有回退的提交丢失

2. 回退示例 git reset  取参(--soft   --mixed   --hard)

2.1. 使用 git reset --soft 命令回退

回退后: 暂存区和当前版本库的提交存在差异, 差异文件如下图,可以通过 git commit 再次进行提交。

下图有历史提交信息,要回退到提交 4.7.0 这个版本

查看本地工作区和暂存区,没有任何文件

使用 soft 参数进行回退:git reset  --soft  4.7.0

再次查看提交记录,发现已经回退到 4.7.0 这个版本了

通过 git status 查看文件状态

最终结果

2.2. 通过 git reset HEAD@{1}

其中的 HEAD@{1} 是要回退的版本,可通过 git reflog 查看

2.3. 使用 git reset  --mixed 参数回退(默认不加任何参数的状态)

使用命令 : git reset --mixed A git reset --hard A

2.3.1. 使用 git reset --mixed A 回退

回退后,暂存区和工作区存在差异,通过 git add + git commit 恢复。

2.3.2. 使用 git reset --hard A 回退

当我们不需要保留任何回退的内容,我们可以选择--hard git reset --hard A

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

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

相关文章

前端框架有哪些?

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

游戏应用|空地模型实景融合,还原《黑神话:悟空》游戏场景

古色斑驳&#xff0c;巍峨险峻&#xff0c;是历史的低语&#xff0c;诉说着千百年的沧桑与辉煌&#xff1b;飞檐翘角&#xff0c;雕梁画栋&#xff0c;凝聚着时代的文明与智慧。在数字化浪潮下&#xff0c;我们利用实景三维技术&#xff0c;翻开了中华古建筑这本伟大的史诗。 P…

基于物联网的低成本便携式传感器节点用于火灾和空气污染的检测与报警

目录 摘要 引言 材料和方法 传感器节点 IoT 微控制器 颗粒物传感器 环境和气体传感器 MQTT代理 Node-Red监控平台 系统结构 数据存储 工作描述 实验结果 讨论 结论 致谢 参考文献 这篇论文的标题是《Low-cost IoT-based Portable Sensor Node for Fire and Air…

【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度

【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度 一、题目&#xff1a;计算以空格隔开的字符串的最后一个单词的长度 二、举例&#xff1a; 输入&#xff1a;hello nowcoder 输出&#xff1a;8 说明&#xff1a;最后一个单词为nowcoder&#xff0c;长…

【超详细】Linux开发环境搭建指南 | Ubuntu

文章目录 虚拟机安装对比Virtual Box 下载ubuntu 操作系统下载Virtual Box 安装安装ubuntu设置中文语言共享文件夹设置添加输入法安装步骤&#xff0c;参考官方教程 安装 vscode解决主机不能通过ssh连接宿主机网络连接几种网络连接区别主机和宿主机相互 ping通 网络代理 虚拟机…

AI 网关基于 IP 地理位置,增强 Prompt 修饰能力

作者&#xff1a;沈鑫糠&#xff0c;来自昆仑数智瑞道云团队&#xff0c;专注于云原生领域产品研发和相关技术。 前言 什么是 Prompt Engineering 提示词工程&#xff08;Prompt Engineering&#xff09;&#xff0c;也被称为上下文提示&#xff08;In-Context Prompting&am…

云服务器+docker:还在为项目上线苦恼?一文包你解决(保姆级教程,图文并茂,万字起步!!!)

目录 Blue留言机&#xff1a; 学习视频以及参考资料 &#xff1a; 1、学习之前的必备操作&#xff1a; 第一步&#xff1a;购买服务器 选择一台免费的云服务器&#xff08;包白嫖的&#xff09; 配置服务器的一点说明&#xff1a; 查看自己是否购买成功&#xff1a; 第…

Codeforces Round 920 (Div. 3)(A,B,C,D)

A 在二维坐标轴上有一个正方形&#xff0c;给你一个正方形的四个顶点坐标&#xff0c;求面积 知道一个边长&#xff0c;平方即可 for(int i0;i<4;i)x[i]x1; Arrays.sort(x); //1122 kMath.abs(x[2]-x[1]); System.out.println(k*k); B 操作1、2是添加和修改&#xff0c;操…

Django+Vue二手交易平台的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

ubuntu14.04.5出现配环境后重启进不了图形化界面解决记录

前言 这段时间给公司接了一个需要使用到linux环境进行交叉编译的工程&#xff0c;就采用了简单易操作的图形化ubuntu系统。 镜像采用的是&#xff1a;ubuntu14.04.5-desktop-amd64.iso(官网下载的&#xff09; 配置环境的过程下载了众多依赖包&#xff0c;总之就是缺啥下载啥…

vue通过html2canvas+jspdf生成PDF问题全解(水印,分页,截断,多页,黑屏,空白,附源码)

前端导出PDF的方法不多&#xff0c;常见的就是利用canvas画布渲染&#xff0c;再结合jspdf导出PDF文件&#xff0c;代码也不复杂&#xff0c;网上的代码基本都可以拿来即用。 如果不是特别追求完美的情况下&#xff0c;或者导出PDF内容单页的话&#xff0c;那么基本上也就满足业…

HOW DO VISION TRANSFORMERS WORK

HOW DO VISION TRANSFORMERS WORK Namuk Park1,2, Songkuk Kim1 1Yonsei University, 2NAVER AI Lab{namuk.park,songkuk}yonsei.ac.kr 总结 MSA 改善模型泛化能力&#xff1a; MSA 不仅提高了模型的准确性&#xff0c;还通过平滑损失景观来提高泛化能力。损失景观的平坦化使…

ArkUI-动画

ArkUI-动画 系统能力属性动画显式动画 关键帧动画转场动画路径动画粒子动画 资源调用GIF动画帧动画 三方库LottieSVG 提升动画的流畅度使用renderGroup概述使用约束 系统能力 属性动画 通过更改组件的属性值实现渐变过渡效果&#xff0c;例如缩放、旋转、平移等。支持的属性包…

乐鑫 ESP32-P4 无线连接解决方案

ESP32-P4 是乐鑫信息科技推出的一款功能强大的芯片 (SoC) &#xff0c;专为高性能的应用打造。尽管 ESP32-P4 集成了一系列先进特性&#xff0c;但它并未设置无线连接功能&#xff0c;因此需要额外的连接方案来满足嵌入式系统的多样化需求。乐鑫为 ESP32-P4 提供了三种主要的连…

2分钟学会使用createrepo制作本地yum仓库

华子目录 createrepo介绍实验主题实验前提实验前的准备1.server端配置yum网络源&#xff08;这里以阿里云为主&#xff09;2.server端配置本地yum源&#xff08;需要挂载本地镜像&#xff09;3.关闭selinux和firewalld4.安装createrepo包 server端实验步骤1.只下载&#xff0c;…

检测SSRF漏洞的工具

免责声明此文档仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…

Self-study Python Fish-C Note19 P62to63

类和对象 (part 2) 本节主要介绍 类和对象的构造函数、重写、钻石继承、Mixin及案例源码剖析&#xff08;原视频P62-63)\ 构造函数 之前我们在函数章节里说&#xff0c;函数是可以通过参数来进行个性化定制的。类在实例化的时候其实也是支持个性化定制对象的。 定义类的时候…

idea的springboot里面的resources是什么

在IDEA&#xff08;IntelliJ IDEA&#xff09;中的Spring Boot项目中&#xff0c;resources目录扮演着非常重要的角色。这个目录主要用于存放项目的非代码资源&#xff0c;包括但不限于配置文件、静态资源文件&#xff08;如图片、CSS、JavaScript等&#xff09;、模板文件&…

如何用c++判断一个类型是vector

如何用c判断一个类型是vector 我们使用模板元编程来搞定 这里我们可以定义一个模板结构体 is_std_vector&#xff0c;并对其进行特化&#xff0c;以便专门处理 std::vector 类型。 . 下面是详细的实现和使用示例。 实现 is_std_vector 类型, 继承自false_type 首先&#xff…

EvoSuite使用总结

1.安装EvoSuite插件 以IDEA为例&#xff0c;在Plugins栏搜索EvoSuite后点击install&#xff0c;安装完成后重启IDEA 2.使用EvoSuite 选中文件右键选择Run EvoSuite 生成成功可以看到如下提示&#xff1a; 注意事项&#xff1a; 生成路径&#xff1a;src/test/java 使用juni…