git命令使用详情

2024-08-31 09:04
文章标签 使用 命令 git 详情

本文主要是介绍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冲突

五. 修改历史提交

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

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

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

3.1 合并提交(s)

3.2 修改提交信息(r)

3.3 修改提交的内容

3.4 删掉提交(d)


一. 安装教程

安装教程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

五. 修改历史提交

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 修改提交的内容

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命令使用详情的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123460

相关文章

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳