Git复习

news2024/12/24 20:18:07

1. 引言

现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》

2. 起步

git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。
在这里插入图片描述

在这里插入图片描述

  • 安装: sudo apt install git-all
  • 设置用户信息:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
  • 配置vim为默认文本编辑器:git config --global core.editor emacs
  • 查看配置情况:git config --list
  • 查看某个命令的帮助-h eg:git add -h

3. Git基础

1. 初始化:git init,跟踪 git add,取消跟踪git rm cached

git add是一个多功能命令,用于开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
在这里插入图片描述
b之前已被add,但是我又修改了一下,暂存区是之前add之后的,修改后但还没add的在工作区,不在暂存区,现在commit的话会提交add时的b的版本。
git status -s是简短的status的输出:
在这里插入图片描述
??表示新添加未跟踪的文件
A表示在暂存区
M表示修改过
D表示删除了

对某个文件取消跟踪
git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地。
git rm --f readme1.txt 删除readme1.txt的跟踪,并且删除本地文件。

2. 关于改动

看工作区内有哪些改动:git diff
看暂存区内哪些改动:git diff --staged
在这里插入图片描述

在这里插入图片描述

3. 删除

如果要删除一个已经被track的文件c.txt,首先从磁盘上删除rm c.txt,然后执行git rm c.txt从git中将其删除。
在这里插入图片描述

如果已经track了一个你不想track的文件d.txt,但是又不想从磁盘上删除,则使用git rm --cached README

4. 移动文件

git mv file_from file_to 在linux下就是重命名,git能检测到是改名
在这里插入图片描述
其实就相当于三条指令:

mv a.txt  A.txt
git rm a.txt
git add A.txt

5. 查看提交历史

git log
git log -2查看最近的两次提交
显示每次提交所引入的2条差异:git log -p -2

6. 撤销操作

如果上次提交操作有一些纰漏(如忘记添加某个文件),但是又不想弄乱提交记录,就可以使用git commit --amend -m ,来替换上次的提交而不会再多一次提交记录。

git reset HEAD b.txt可以用于取消对b.txt文件的暂存。
在这里插入图片描述
使用git reset –hard 还原到某一次提交
git reset --hard commit ID

git reset --hard commit ID

git 2.25.1中取消暂存是git restore --staged a.txt,把a.txt取消暂存
git restore a.txt就取消对a.txt文件的保存。

7. 远程仓库

git remote
git remote -v 显示远程仓库的简写和URL
在这里插入图片描述
新添一个远程仓库。
在这里插入图片描述

  1. 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写pb
git remote add pb https://github.com/paulboone/ticgit
  1. 拉取仓库中有,但是我本地没有的信息:
git fetch pb

访问远程仓库,从中拉取我还没有的数据,完成后,我会拥有那个远程仓库中所有分支的引用。

git clone之后远程仓库默认为origin,git fetch origin会抓取clonepush的所有工作,git fetch只会将数据下载到本地仓库,并不会merge,如有需要,需要手动mergegit clone会自动设置本地master分支跟踪克隆仓库的master分支(或其他名字的默认分支),git pull origin通常会抓取服务器上的数据并尝试合并到当前所在的分支。

git push origin master将本地的项目推送至origin服务器,如果在推送之前有人又推送过了,必须先fetch后再push

  1. 远程仓库的重命名
git remote rename pb paul

修改远程仓库pb名称为paul,注意这个操作同时也会修改所有远程分支的名字。

  1. 删除远程仓库
git remote remove paul

一旦删除,所有和这个远程仓库相关的远程跟踪分支以及配置信息都会一起被删除。

8. 标签

用途:用于给某个提交打标签,以示重要,典型的如发布时打上版本号。

分为轻量标签(lightweight)和附注标签(annotated)
轻量标签是某个特定提交的引用;
附注标签是一个对象,存储了annotater的名字、邮箱、日期、标签信息。
建议使用附注标签(含信息多)

打了标签的效果如下所示:
在这里插入图片描述

9. 共享标签(把本地标签推送到远程服务器上)

默认情况下git push 并不会传送标签到远程仓库服务器上,创建完标签后必须显式推送到服务器上。

git push origin v1.5

删除服务器上的标签:

git push origin --delete <tagname>

也可以本地删除之后push上去

git tag -d v1.4-lw
git push origin :refs/tags/v1.4-lw

10. Git别名

没什么大用,配置如下例:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

4. Git分支

1. 分支创建

创建一个testing分支:

 git branch testing

2. 分支切换

git checkout testing

创建一个新的分支并切换过去:

 git checkout -b <newbranchname>

3. 查看分叉历史

 git log --oneline --decorate --graph --all

在这里插入图片描述

4. 分支的合并 git merge to_be_merged_branch

把develop分支合并到master分支:

git checkout master
git merge develop

这里之前一直有些混乱,现在好好捋一捋:
《Progit》上面的一个案例:
master上工作到iss53时来了个电话要修复master上的bug,切换到master分支,再切一个新分支hotfix来修复bug:
在这里插入图片描述
修复完之后把hotfix分支merge到master上:

git checkout master
git merge hotfix

就成了下面这样:
在这里插入图片描述
此时hotfix分支不需要了,直接删除:

git branch -D hotfix

变成下面这样
在这里插入图片描述

然后需要继续回到iss53分支继续来电话之前我正在做的分支,iss53分支任务完成之后,需要把iss53分支合并到master分支上,但是他们不是共同的祖先分支,master的祖先是C2,iss53的祖先是C3

git checkout master
git merge iss53

git log --oneline --decorate --graph --all查看
在这里插入图片描述

合并完之后是这样:
在这里插入图片描述

此时不再需要iss53分支了,遂删除:

git branch -D iss53

特殊地:当相同的文件在不同的分支被修改,在merge时会产生conflit,此时的merge会先暂停,等待你把这部分conflit解决(到底决定保留哪种更改)之后再merge:
在这里插入图片描述
在这里插入图片描述
上图中在master分支和iss53分支都修改了index.html文件,======上侧的代表在HEAD所指的版本(此时HEAD所指master,所以上侧代表master内的修改),==下侧代表iss53内对index.html的修改,为了解决冲突,你必须选择有=分割的两部分中的一个。

5. rsync的使用

參考博客
常用指令:
push,把本地1/文件夹下的数据推送到远程的oem/param/文件夹下

rsync -a -zz --progress 1/ root@192.168.xx.xx:oem/param/

pull,把远程的oem/param/文件夹下的文件拉到本地的此处./

rsync -a -zz --progress root@192.168.xx.xx:oem/param/ ./

6. 关于smartgit的cherry pick

cherry pick是选择另一个分支的一个提交来提交到目标分支上,但是如果遇到conflict需要手动解决才能commit。参考博客
在这里插入图片描述

7. git更改远程分支名字

参考博客
在这里插入图片描述

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

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

相关文章

上海亚商投顾:沪指放量大涨 券商等权重板块全线飙升

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪三大指数今日集体反弹&#xff0c;沪指、深成指单边拉升&#xff0c;午后均涨超2%&#xff0c;上证50大涨超2.7%&…

加入CSDN的一年,我收获了这些……

加入CSDN的一年&#xff0c;我收获了这些……加入CSDN的一年&#xff0c;我收获了这些……加入CSDN的一年&#xff0c;我收获了这些…… &#x1f680;&#x1f680;时光如白驹过隙般&#xff0c;飞逝而过。一转眼&#xff0c;我就已经是一名大二的学生了&#xff0c;也已经在…

LeetCode 每日一题2347. 最好的扑克手牌

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

Homekit智能家居一智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能…

网络高可用方案

目录 1. 网络高可用 2. 高可用方案设计 2.1 方案一 堆叠 ha负载均衡模式 2.2 方案二 OSPF ha负载均衡模式 3. 高可用保障 1. 网络高可用 网络高可用&#xff0c;是指对于网络的核心部分或设备在设计上考虑冗余和备份&#xff0c;减少单点故障对整个网络的影响。其设计应…

猜数字大小 II

力扣链接 力扣 题目描述&#xff1a; 我们正在玩一个猜数游戏&#xff0c;游戏规则如下&#xff1a; 我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字&#xff0c;就会 赢得游戏 。如果你猜错了&#xff0c;那么我会告诉你&#xff0c;我选的数…

SpringBoot 快速入门

SpringBoot简介 SpringBoot 是由Pivotal 团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。 SpringBoot 基础配置 创建一个SpringBoot项目 2.6.6 浏览器访问:http://localhost:8080/user/1 结果如下所示:

从FastJson库的不同版本源码中对比学习绕过方法

1.2.25<fastjson<1.2.41反序列化漏洞。 从这个版本的fastjson中&#xff0c;对前面的漏洞进行了修复&#xff0c;引入了checkAutoType安全机制&#xff0c;默认autoTypeSupport关闭&#xff0c;不能直接反序列化任意类&#xff0c;而打开 AutoType 之后&#xff0c;是基…

计算机网络笔记(五)—— 网络层

网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 需要解决的问题&#xff1a; 网络层提供的两种服务 1. 面向连接的虚电路&#xff08;逻辑上的连接&#xff0c;而不是物理连接&#xff09;服务 2. 无连接的数据报服务&#xff…

Vbs_To_Exe制作简易exe程序

文章目录一、准备vbs脚本文件二、工具打包exe一、准备vbs脚本文件 新建一个文本文档 复制下面代码到文本文档中 Set speech CreateObject("SAPI.SpVoice") speech.Speak "l love you!"修改文本后缀为.vbs。编码选择ANSI&#xff08;解决中文乱码问题&am…

文件系统与动静态库的基本了解

目录文件系统与动静态库的基本了解文件系统了解Access Modify Changeinode硬链接软链接静态库与动态库概念静态库的制作使用静态库动态库的制作使用动态库总结如何制作文件系统与动静态库的基本了解 文件系统 了解Access Modify Change 当文件没有被打开时&#xff0c;他们存…

广州蓝景—结合chatGPT下的教育模式变化

最近爆火的人工智能AI聊天工具ChatGPT&#xff0c;不仅在互联网&#xff0c;更是在各行各业中&#xff0c;得到了广泛的传播&#xff0c;应该没有哪一个不知道它的存在&#xff0c;但其实你又是否知道&#xff0c;其实ChatGPT是一类模型的统称&#xff0c;随着人工智能的快速发…

【vue】elemente-ui table toggleRowSelection 默认选择无效[已解决]

项目场景&#xff1a; 点击按钮&#xff0c;弹出一个弹出框&#xff0c;内部出现一个table表&#xff0c;表内数据是动态获取&#xff0c;同时得勾选上几个table表的数据&#xff0c;类似以下的图 问题描述 点击按钮显示弹出框&#xff0c;加载table中的数据&#xff0c;默…

《自动驾驶规划入门》专栏结语

一、 源起 2021年10月12日&#xff0c;化学工业出版社的金编辑根据博客中留下的微信号联系上我&#xff0c;问我有没有出书的想法。从小到大&#xff0c;书与文字在我心里是有着神圣地位的。我在“想试试”与“害怕做不好”这两种矛盾的心情中&#xff0c;还是先应了下来。签了…

计算机SCI期刊自引率一般是多少? - 易智编译EaseEditing

论文常用来指进行各个学术领域的研究和描述学术研究成果的文章&#xff0c;是探讨问题进行学术研究的一种手段&#xff0c;又是描述学术研究成果进行学术交流的一种工具&#xff0c;包括学年论文、毕业论文、学位论文、科技论文、成果论文等。 一般来说&#xff0c;论文的自引…

ros中时间的概念:ros::Time、ros::Duration、定时器ros::Timerros::Rate

1. ros时间格式说明 有时刻和持续时长(可以是负数)&#xff0c;分为秒和纳秒&#xff0c;换算关系&#xff1a;1sec1e9nsec。Time指的是某个时刻&#xff0c;而Duration指的是某个时段。 int32 sec int32 nsec 2. ros::Time::now() 记录当前时刻 3. ros::Duration 代表持续的…

RedisTemplate最常用方法

前言&#xff1a;RedisTemplate常用方法介绍&#xff0c;根据RedisTemplate封装了Redis的一些常用的原生操作RedisUtil工具类。 一、SpringDataRedis简介 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-d…

MinIo-SDK

3.2.5 SDK 3.2.5.1上传文件 MinIO提供多个语言版本SDK的支持&#xff0c;下边找到java版本的文档&#xff1a; 地址&#xff1a;https://docs.min.io/docs/java-client-quickstart-guide.html 最低需求Java 1.8或更高版本: maven依赖如下&#xff1a; XML<dependency&g…

2023爱分析· 云管理服务(MSP)市场厂商评估报告:华创方舟

目录 1. 研究范围定义 2. 云管理服务&#xff08;MSP&#xff09;市场定义 3. 厂商评估&#xff1a;华创方舟 4. 入选证书 1. 研究范围定义 数字化时代&#xff0c;应用成为企业开展各项业务的落脚点。随着业务的快速发展&#xff0c;应用的功能迭代变得越来越…

深度学习常用的优化器整理

常见优化器整理 一、SGD&#xff08;随机梯度下降&#xff09; 公式&#xff1a; 经典的mini-batch SGD使用的很多&#xff0c;效果也比较不错&#xff0c;但是存在一部分问题 选择恰当的初始学习率很困难学习率调整策略受限于预先制定的调整规则相同的学习率被应用于各个参数…