git小白之路

news2025/2/4 8:42:24

初始配置

配置账号密码

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.coloradmin.cn/o/1427283.html

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

相关文章

活用社交媒体生成二维码:拓展品牌影响力的新时代

社交媒体二维码为品牌在社交媒体平台上的拓展和互动提供了全新的可能性。在这个信息爆炸的时代&#xff0c;如何巧妙地应用社交媒体二维码&#xff0c;成为品牌拓展影响力、与用户建立深度互动的关键。本文将探讨如何精明地应用社交媒体生成二维码&#xff0c;为品牌带来更多的…

来看看思特数字创意产业的科技与狠活儿~ 冰雪大世界图集

01    哈尔滨冰雪大世界以“龙腾冰雪 逐梦亚冬”为主题&#xff0c;为世界各地游客打造一座集冰雪艺术、冰雪文化、冰雪演艺、冰雪建筑、冰雪活动、冰雪体育于一体的冰雪乐园。      02    服务商思特数字创意公司构建“龙腾之韵、雪城乐章、跳动音符、雪映流光”四…

leetcode-35.搜索插入位置

题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…

幻兽帕鲁服务器搭建

获取服务器 有如下方法&#xff1a; 阿里云提供现成的幻兽帕鲁服务器&#xff0c;支持一键部署和升级。购买通用服务器或利用已有的主机&#xff0c;配置幻兽帕鲁服务。 第一种可以零代码实现&#xff0c;本文不作赘述&#xff0c;本文主要介绍如何通过已有的Linux服务器实现…

时间序列预测 —— TCN模型

时间序列预测 —— TCN模型 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;在图像处理等领域取得了显著的成就&#xff0c;一般认为在处理时序数据上不如RNN模型&#xff0c;而TCN&#xff08;Temporal Convolutional Network&#xff09;…

基于python+django,我开发了一款药店信息管理系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 功能包括&#xff1a;药品管理、分类管理、顾客管理、用户管理、日志管理、系统信息模块。 代码结构 server目录是后端代码web目录是前端代码 部署运行…

Camille-学习笔记-web基础知识

web基础1.系统架构 B/S :Browser/Server 网站 界面层&#xff08;UI&#xff09; 业务逻辑层&#xff08;业务&#xff09; 数据访问层&#xff08;数据库&#xff09; 静态网页&#xff1a;和服务器没有数据交互 动态网页&#xff1a;网页数据可以和服务器进行数据交互 URL…

【数据结构】(四)图

目录 言 图的入门及无向图的实现 1. 图的相关概念 2. 图的相关术语 3. 图的存储结构 3.1 邻接矩阵 3.2 邻接表 3.3 邻接表实现 图的搜索算法 1. 深度优先搜索 1.1 搜索思路 1.2 代码实现 2. 广度优先搜索 2.1 搜索思路 2.2 代码实现 后记 言 数据结构分为逻辑结…

vscode 如何修改c/c++格式化风格,大括号不换行

在Visual Studio Code&#xff08;VSCode&#xff09;中&#xff0c;若要修改C代码格式化的风格以实现大括号不换行&#xff0c;通常会借助于插件C/C扩展中的ClangFormat配置。以下是具体的步骤&#xff1a; 确保已安装了C/C扩展&#xff1a; 打开VSCode的扩展市场&#xff08;…

【飞书小技巧】——飞书文档转 markdown 详细教程

飞书文档转 markdown 详细教程 基于项目:https://github.com/Wsine/feishu2md 如何使用 在线版 访问 https://feishu2md.onrender.com/ 粘贴文档链接即可&#xff0c;文档链接可以通过 分享 > 开启链接分享 > 复制链接 获得。 点击下载之后,会提示 Please wait. It ma…

回归预测 | Matlab基于POA-LSSVM鹈鹕算法算法优化最小二乘支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于POA-LSSVM鹈鹕算法算法优化最小二乘支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于POA-LSSVM鹈鹕算法算法优化最小二乘支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于POA-LSSVM…

回归预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络多变量回归预测

回归预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络多变量回归预测 目录 回归预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-LSTM【24年新算…

西圣Olite开放式耳机持续100+天霸榜:品质优势再掀数码狂潮

随着开放式耳机的市场竞争加剧&#xff0c;用户对耳机的音质和配置要求越来越高。而西圣开放式耳机的不断推陈出新&#xff0c;正是对客户需求的完美回应&#xff01;西圣开放式耳机&#xff0c;在现在鱼龙混杂的市场上&#xff0c;能够获得着卓越的研发成果并且还在不断的追求…

从源码角度透视QTcpServer:解构QTcpServer的底层原理与技术细节

深入了解QTcpServer的底层原理和技术细节 一、背景二、QTcpServer的基本原理2.1、TCP协议简介2.2、QTcpServer的概念 三、QTcpServer源码解析3.1、QTcpServer的构造函数3.2、调用listen函数启动tcpserver3.3、QSocketNotifier的实现 总结 一、背景 QTcpServer是Qt网络模块中的…

CSS3的新盒子,选择器等

新增的选择器&#xff1a; 属性选择器&#xff1a; 结构伪类选择选器&#xff1a; nth较为重要&#xff1a;但公式中的字母必须是n 区别&#xff1a; nth-child&#xff1a; 认为父类下的都是儿子&#xff0c;此时就需要有对应的需要&#xff0c;如下&#xff0c;此时即使排1&…

DataFunSummit:2023年数据科学在线峰会:核心内容与学习收获(附大会核心PPT下载)

随着大数据时代的来临&#xff0c;数据科学已经在全球范围内成为了一门炙手可热的前沿学科。 数据会说谎&#xff1f;如何正确的挖掘并使用数据&#xff1f;前沿的科学实验如何做&#xff1f;实验又是如何欺骗你的&#xff1f;数据中台如何发挥功效&#xff1f;用户增长有捷径…

win10重装Ubuntu22.04安装报错复盘

目录 一&#xff1a;补充启动盘制作 二&#xff1a;错误信息[0xC0030570] The file or directory is corrupted and unreadable. 三&#xff1a;ubuntu重装步骤&#xff1a; 四&#xff1a;磁盘冗余阵列 五&#xff1a;尝试将SCS11(2,0.0), 第1分区(sda)设备的一个vfat文…

仰暮计划|“从米票、肉票、糖果票到肥皂票、煤票、棉花票等,生活里头的方方面面都能用粮票买到”

口述人&#xff1a;牛翠英(女) 整理人&#xff1a;霍芝冉 口述人基本信息&#xff1a;现68岁&#xff0c;河南省安阳市北关区霍家村人&#xff0c;现居河南安阳市区。 奶奶一生辛劳&#xff0c;操持家务&#xff1b;亲眼见证了时代变迁&#xff0c;社会发展&#xff0c;…

【FPGA】高云FPGA之IP核的使用->PLL锁相环

FPGA开发流程 1、设计定义2、设计输入3、分析和综合4、功能仿真5、布局布线6、时序仿真7、IO分配以及配置文件&#xff08;bit流文件&#xff09;的生成8、配置&#xff08;烧录&#xff09;FPGA9、在线调试 1、设计定义 使用高云内置IP核实现多路不同时钟输出 输入时钟50M由晶…

2024年美赛C题:Momentum in Tennis思路解析

Problem C: Momentum in Tennis 网球运动中的动力 【扫描下方二维码加入群聊&#xff0c;了解更多思路~】 中文题目&#xff1a; 在2023年温布尔登男子单打决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉斯击败了36岁的诺瓦克德约科维奇。这是德约科维奇自2013年以来在温布…