git小白进阶之路

git是最常用的版本控制工具,我对其进行了整理后续补充,这个文档欢迎大家来讨论,当前我的视频梳理: git小白进阶之路_哔哩哔哩_bilibili,非常希望大佬们能够批评指正,并多多交流。

目录

初始配置

配置账号密码

配置ssh-key

添加公钥在远程仓库

git工作流

git文件状态

git别名

git撤销

1.从本地仓库 到 暂存区

2.从暂存区 到 工作目录

3.从本地仓库到工作目录

4.修改刚才提交的注释

5.回滚提交

git commit注释格式

git分支

拉取代码

提交代码

追溯代码

合并代码

git merge相关

git cherry-pick 相关

打补丁

git format-patch

git apply

git am

历史记录

调整历史记录

贮藏改动

git stash贮藏

列出所有贮藏的改动:

应用stash:

丢弃贮藏

远程仓库Remote

其他整理

1.解决git无法处理wsl虚拟机中的项目,

2.设置git内部环境变量

图形工具

参考文档

初始配置

配置账号密码

git config --list
# 设置git的name
git config --global user.name "determination"
# 设置git的邮箱
git config --global user.email "XXXX.@XX.conm"

配置ssh-key

ssh-keygen -t rsa -C "username@email.com"  

添加公钥在远程仓库

获取公钥:在~/.ssh目录下

C:\Users\24964\.ssh目录下

cd ~/.ssh
ls
# 查看公钥
cat id_rsa.pub

git工作流

git文件状态

对换行符的替换

git config --global core.autocrlf false

git别名

参考:Git - Git 别名

格式:git config --global alias.<­al­ias­-na­me> <co­mma­nd>

设置 Git 命令别名,例如:

$ git config --global alias.st status

# 设置commit别名
git config --global alias.ci commit
# 设置status别名
git config --global alias.st status

git撤销

https://www.cnblogs.com/lfxiao/p/9378763.html

撤销commit并保留刚才的commit:

1.从本地仓库 到 暂存区

# 不删除工作目录代码,撤销到commit到暂存区
git reset --soft HEAD^

2.从暂存区 到 工作目录

# 不删除工作目录代码,撤销到工作区
git reset HEAD .

3.从本地仓库到工作目录

# 不删除工作空间代码,撤销commit、add
git reset --mixed HEAD^
# 相当于上述两个,即 git reset --soft HEAD^ 和 git reset HEAD .# 删除工作代码,撤销commit、add
git reset --hard HEAD^

4.修改刚才提交的注释

# 修改最后一次­提交,­可用来­修改提交信息。
git commit --amend

5.回滚提交

# 回滚提交,创建一个commit,其实内容是回滚版本的
git revert

git commit注释格式

对于小型项目格式可以参考:使用 commitizen 规范 Git 提交说明

类型

说明

example

feat

新功能

feat:添加XXX接口

fix

修复bug

fix:修复XXX bug

style

格式化变动,不影响代码逻辑

style:格式化代码

improvement

对当前功能改进

improvement:改进功能

refactor

重构

refactor:重构

test

添加或修改test代码

test:添加XX测试代码

chore

杂项,不修改源代码与测试代码

chore:

revert

撤销

revert:

git分支

git分支本质就是指向提交对象的指针,HEAD指针指向当前的本地分支。

# 查看当前本地分支
git branch# 切换分支
git checkout <branch_name># 合并分支
git merge <branch_name>

默认:快进合并fast-forward merge,简单的将指针推进

非快进合并:多出一个合并节点,看起来会更清晰。

拉取代码

从远程仓库取­回所有­分支的­更新,­但不会­修改本­地工作­目录的内容,拉取后的更新需要本地再合并,此时HEAD指针不变

# 拉取仓库代码更新
git fetch# 将会提示分支可以快进
git status# 合并分支
git merge  或 git rebase

git pull = git fectch + git merge

拉取远程代码,并且自动与本地的合并

git pull

git pull --rebase = git fectch + git rebase

rebase 会重新应用本地的提交,这会使历史记录是线性的。在开发过程中,推荐总是使用git pull --rebase 更新代码。

git pull --rebase

提交代码

# 暂存
git add <dir># 提交到本地仓库
git commit -m "<message>"# 修改最后一次提交
git commit --amend# 提交到remote
git push

追溯代码

由于commit-id一般不方便记忆,开发过程中在简单情况可以用~和^来追溯版本。

ref~表示第一个父级(等价ref~1),ref~2表示 第一个父级的第一个父级

ref^表示第一个父级(等价于ref^1),ref^2表示提交的第二个父级

在简单情况可以用ref~或^来追溯,复杂情况直接用commit-id会更方便。

合并代码

git merge相关

# 默认,快进合并
git merge 
# 非快进合并
git merge --no-ff 

git cherry-pick 相关

git cherry-pick:git cherry-pick 教程 - 阮一峰的网络日志

# 合并提交,-x 在提交信息末­尾追加­来源,-s 追加操作者签名。
git cherry­-pick -x <co­mmi­t># 合并多个连续­的提交­,左开右闭区间。
git cherry­-pick <co­mmi­t1>­..<­co­mmi­t2># 合并多个连续­的提交­,左闭右闭区间。
git cherry­-pick <co­mmi­t1>­^..<­co­mmi­t2>

打补丁

git提供两种打补丁方式,1:git diff 生成的UNIX标准补丁.diff文件,不带有commit记录 2. git format-patch 生成的git专用.patch文件,带有commit记录信息

可以参考:https://www.cnblogs.com/ArsenalfanInECNU/p/8931377.html

git format-patch

# 生成最近n次提交的补丁
git format-patch HEAD~n

git apply

git apply不会将commit message等打上去,打完patch后需要重新git add和git commit,相当于你改动的代码

git apply XXXX.patch# 查看patch的情况
git apply --stat XXXX.patch# 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
git apply --check XXXX.patch

git am

git am会将patch的所有信息打上去,并且不用add、commit,因为他会应用commit上去,信息是patch上面的的author、message等等,不是打patch的。


# 打入补丁(会­生成提­交),­--k­eep-cr 防止回车符被­移除导­致打补丁失败,冲突时可使用 --reject 查看冲突。
git am --keep-cr XXXX.patch# 添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
git am --signoff XXXX.patch 

历史记录

# 查看与某个字­符串 ­str­ing­ 相关的改动,可用来查看某个函数相关的改动。
git log -S <st­rin­g># 查看一个文件­或目录­的历史­记录,­可用来查看某­个文件­是何时被删除的。
git log -- <pa­th>

Git 会在后台保存一个引用日志(reflog),引用日志只存在于本地仓库。每一次提交或改变分支,引用日志都会被更新。可以此恢复丢失的提交。

# 查看本地仓库 HEAD 指针的所有变­更,可­用于恢­复丢失的代码。
git reflog# 追踪代码改动。实际开发过程中建议使用 Git 可视化工具。
git blame

调整历史记录

在开发过程中,很多情况我们都可能需要修订历史记录,eg:信息填错、某条记录代码有问题、某条记录代码太多想要拆分,在代码提交到远程仓库之前,我们可以随便在本地修改历史记录。

git没有修改历史记录的工具,但是可以通过变基命令来变基系列提交来达到修改历史记录的目的。

# 以交互方式重­新应用最近n次的提交,可­对提交进行修改,注意不要修改到已经推送到远程仓库的提交。
git rebase -i HEAD~n

git rebase -i 合并多个commit提交-Git-安卓笔记本

git 为我们提供了以下几个命令:

  • pick:保留该commit(缩写:p)
  • reword:保留该commit,但我需要修改该commit的注释(缩写:r)
  • edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
  • squash:将该commit和前一个commit合并(缩写:s)
  • fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
  • exec:执行shell命令(缩写:x)
  • drop:我要丢弃该commit(缩写:d)

在编辑模式中,修改,最后保存。

例如我想把我写的这两个commit合并到一块:

git rebase -i HEAD~2

编辑当前合并之后的commit message

对多个本地commit合并完成。

贮藏改动

使用git stash命令保存和恢复进度_git stash用法-CSDN博客

https://www.cnblogs.com/zndxall/p/9586088.html

当你工作做一半的时候,你的代码已经有了一些改动,你可能需要切换到另一个分支干活,或更紧急的事情处理,这是你不想因为这个没做完的改动而commit。这时就可以git stash将代码贮藏。贮藏的代码保存在一个栈上,可以在任何时候重新应用。

或者是你在拉取代码时遇到冲突,你可以先git stash贮藏起来,那么就可以顺利拿到最新代码,在重新应用解决冲突。

git stash贮藏

贮藏文件的修改,请注意未跟踪untracked的不会贮藏,例如:新增的文件没有add的话,不会贮藏

使用 -u 也会贮藏未跟­踪(U­n­t­ra­­cke­­d)的文件。

# 跟踪改动Modified的文件,请注意untracked不会贮藏
git stash# untracked也会贮藏
git stash -u# 可以添加备注,可以方便查找
git stash save "save message"

列出所有贮藏的改动:

git stash list

应用stash:

请注意:

    1. git stash apply,不会在对应的栈中删除
    2. git stash pop 会应用最近的一次贮藏改动,并出栈
# 应用最近一次的 贮藏 改动
git stash apply# 跟上shach@{n}指定对应记录
git stash apply stash@{n}# 应用最近一次的贮藏的改动,并丢弃这条
git stash pop

丢弃贮藏

# 丢弃最近一次­贮藏的­改动,后面跟上 stash@{n} 可指定对应的记录
git stash drop# 丢弃所有的贮藏改动
git stash clear

远程仓库Remote

克隆代码到本地仓库

git clone XXXX.git

管理远程

git remote作用:

1.git remote 不带参数,列出已经存在的远程分支

2.git remote -v | --verbose 列出详细信息,在每一个名字后面列出其远程url,此时, -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址。

3.git remote add url 添加一个远程仓库

4、git remote rm name # 删除远程仓库
5、git remote rename old_name new_name # 修改仓库名

# 删除远程仓库分支emergent-fix
git push origin --delete emergent-fix

其他整理

1.解决git无法处理wsl虚拟机中的项目,

fatal: detected dubious ownership in repository at '//wsl.localhost/Ubuntu/home/wps/projects/ksogit/xfx'

To add an exception for this directory, call:

git config --global --add safe.directory "*"

2.设置git内部环境变量

~/.bashrc 中加入

例如我的

# 在windows中:C:\Program Files\JetBrains\GoLand 2023.3\bin
export PATH="/c/Program Files/JetBrains/GoLand 2023.3/bin:$PATH"

那么就可以在git当中使用goland64 . 用goland来打开当前文件夹作为项目了。

图形工具

tortoisegit:

tortoise git无法管理wsl下的库-CSDN博客

文件上的图标,可以反映出当前文件或者文件夹的状态.例如:

sourcetree:https://www.cnblogs.com/Can-daydayup/p/13128633.html

参考文档

  1. Git官方推荐书籍:Git - Book
  2. Learn Git Branching

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

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

相关文章

《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(5)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述&#xff08;4&#xff09; 4.1.2 PCIe总线使用的信号 PCIe设备使用两种电源信号供电&#xff0c;分别是Vcc与Vaux&#xff0c;其额定电压为3.3V。其中Vcc为主电源&#xff0c;PCIe设备…

上位机图像处理和嵌入式模块部署(linux开发板的选择)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多图像算法是通过上位机来完成的&#xff0c;比如说工业视觉当中的halcon&#xff0c;一般都是要运行在windows平台上面&#xff0c;并且需要高性…

Fashion MNIST数据集介绍及基于Pytorch下载数据集

Fashion MNIST数据集介绍及基于Pytorch下载数据集 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;Fashion MNIST数据集简介&#x1f333;Fashion MNIST数据集的类别说明Fashion MNIST数据集图片示例 &#x1f333;基于PyTorch下载Fashion MN…

卸载Ubuntu双系统

卸载Ubuntu双系统 我们卸载Ubuntu双系统&#xff0c;可能出于以下原因&#xff1a; 1、Ubuntu系统内核损坏无法正常进入 2、Ubuntu系统分配空间不足&#xff0c;直接扩区较为复杂 3、以后不再使用Ubuntu&#xff0c;清理留出空间 123无论出于哪种原因&#xff0c;我们都是要…

Python调取Excel数据类似VLOOKUP

当需要通过某一信息&#xff0c;获取表格中其他信息时&#xff0c;比如想通过学号&#xff0c;直接拉取该学生的其他表格信息 可以通过如下代码&#xff1a; import xlrd #xlrd 常用的Excel读取库file "test.xls" #文件地址&#xff0c;注意xlrd可能无法…

【Android新版本兼容】onBackPressed()方法被弃用的解决方案

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、使用 AndroidX API 实现预测性返回手势1.1 添加依赖1.2 启用返回手势1.3 注册OnBackPressedCallback()方法来处理返回手势 一、使用 AndroidX API 实现预测…

Vue3_基础使用_2

这节主要介绍&#xff1a;标签和组件的ref属性&#xff0c;父子组件间的传递值&#xff0c;ts的接口定义&#xff0c;vue3的生命周期 1.标签的ref属性。 1.1ref属性就是给标签打标识用的&#xff0c;相当于html的id&#xff0c;但是在vue3中用id可能会乱&#xff0c;下面是ref…

分布式事务_学习笔记

分布式事务 0.学习目标 1.分布式事务问题 1.1.本地事务 本地事务&#xff0c;也就是传统的单机事务。在传统数据库事务中&#xff0c;必须要满足四个原则&#xff1a; 1.2.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务…

杂题——试题 算法训练 区间最大和

分析&#xff1a; 如果使用两个for循环遍历所有情况&#xff0c;运行会超时解决运行超时的关键点在于&#xff1a;及时停止累加&#xff0c;丢弃当前的子序列 比如【1&#xff0c;-2&#xff0c;3&#xff0c;10】从第一个数字开始的子序列的和小于从第三个数字开始的子序列的和…

PSQL常用操作

目录 前言 准备工作 添加postgres用户 初始化数据库 启动服务 创建数据库 psql连接数据库 常规操作 数据库 schema相关 插件 其他 前言 老折腾&#xff0c;还是记录点啥吧...... 基于本地PG数据库(打包为绿色版本了)&#xff0c;实操记录&#xff0c;版本pgsql12…

关于华为应用市场上架,申请权限未告知目的被驳回问题的简单处理方式

关于华为应用市场上架过程中出现的【您的应用在运行时&#xff0c;未同步告知权限申请的使用目的&#xff0c;向用户索取&#xff08;存储、拍照&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。】 使用方式&#xff1a; 1、引入 import permision from "/m…

【Jenkins】pipeline基本使用

目录 一、pipeline 二、创建pipeline项目 1、安装pipeline插件 2、创建pipeline项目 三、pipeline语法 1、pipeline组成 2、agent&#xff1a;指定流水线的执行位置&#xff0c;流水线中每个阶段都必须在某个地方执行 3、stage&#xff1a;阶段&#xff0c;代表流水线的…

编程实例分享,眼镜店电脑系统软件,配件验光管理顾客信息记录查询系统软件教程

编程实例分享&#xff0c;眼镜店电脑系统软件&#xff0c;配件验光管理顾客信息记录查询系统软件教程 一、前言 以下教程以 佳易王眼镜店顾客档案管理系统软件V16.0为例说明 如上图&#xff0c; 点击顾客档案&#xff0c;在这里可以对顾客档案信息记录保存查询&#xff0c;…

Linux(二)

远程登录 Xshell6 Xshell 是一个强大的安全终端模拟软件&#xff0c;它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议&#xff1b; Xshell 可以在 Windows 界面下用来访问远端不同系统下的服务器&#xff0c;从而比较好的达到远程控制终端的目的&#xff1b; …

java hutool工具类实现将数据下载到excel

通过hutool工具类&#xff0c;对于excel的操作变得非常简单&#xff0c;上篇介绍的是excel的上传&#xff0c;对excel的操作&#xff0c;核心代码只有一行。本篇的excel的下载&#xff0c;核心数据也不超过两行&#xff0c;简洁方便&#xff0c;特别适合当下的低代码操作。 下载…

JAVA后端上传图片至企微临时素材

1.使用场景 在使用企业微信API接口中&#xff0c;往往开发者需要使用自定义的资源&#xff0c;比如发送本地图片消息&#xff0c;设置通讯录自定义头像等。 为了实现同一资源文件&#xff0c;一次上传可以多次使用&#xff0c;这里提供了素材管理接口&#xff1a;以media_id来…

【AI绘画UI+Windows部署】Fooocus:Controlnet原作者结合了sd的开源和Midjourney重新设计的UI

代码&#xff1a;https://github.com/lllyasviel/Fooocus windows一键启动包下载&#xff1a;https://github.com/lllyasviel/Fooocus/releases/download/release/Fooocus_win64_2-1-831.7z B站视频教程&#xff1a;AI绘画入门神器&#xff1a;Fooocus | 简化SD流程&#xff0c…

深度学习(12)--Mnist分类任务

一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集&#xff0c;比较特殊&#xff0c;可以直接通过%matplotlib inline自动下载&#xff0c;博主此处已经完成下载&#xff0c;从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路…

1E,Jarvis March

四个问题&#xff1a; 一&#xff0c;Jarvis March算法借鉴了什么算法&#xff1f; 二&#xff0c;如何确定初始点 三&#xff0c;如何获取凸包的边&#xff1f; 四&#xff0c;Jarvis March算法的好处在哪里&#xff1f; 首先看第一个问题&#xff0c; 一&#xff0c;Jarvis …

了解UDP发送过快导致的问题和对应解决方案

在当今这个以数据为核心的时代&#xff0c;企业对于数据传输的速度和稳定性有着日益增长的需求。UDP凭借其低延迟和高效率的特性&#xff0c;在实时通信和大规模数据传输领域扮演着关键角色。然而&#xff0c;UDP的无连接特性和缺乏可靠性也给数据传输带来了挑战&#xff0c;尤…