Git复习

news/2024/3/28 18:23:39/文章来源:https://blog.csdn.net/qq_37746927/article/details/125558794

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.luyixian.cn/news_show_71679.aspx

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

相关文章

Vue3搭建记录

一、初始化项目&#xff1a;项目名称vue3-element-admin npm init vitelatest vue3-element-admin --template vue-ts 二、整合Element-Plus 1.本地安装Element Plus和图标组件 npm install element-plus npm install element-plus/icons-vue 2.全局注册组件 // main.ts imp…

【LeetCode】No.232. 用栈实现队列 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/implement-queue-using-stacks/ 1. 题目介绍&#xff08;232. 用栈实现队列&#xff09; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff…

【前端】小程序开发入门:安装开发工具、目录结构与项目配置

文章目录前期准备目录结构app.jsonpageswindow其他前期准备 开发小程序要先申请一个对应的AppID&#xff1a;微信小程序 (qq.com) 微信官方小程序开发文档&#xff1a;微信开放文档 (qq.com) 然后安装一个小程序开发工具&#xff1a; 选择稳定版&#xff1a; 安装后打开&…

如何在SpringBoot项目上让接口返回数据脱敏,一个注解即可

1 背景需求是某些接口返回的信息&#xff0c;涉及到敏感数据的必须进行脱敏操作2 思路①要做成可配置多策略的脱敏操作&#xff0c;要不然一个个接口进行脱敏操作&#xff0c;重复的工作量太多&#xff0c;很显然违背了“多写一行算我输”的程序员规范。思来想去&#xff0c;定…

【linux】——gcc/g++,make/makefile的简单使用

目录 1.gcc的基本使用 2.Linux下的静态库和动态库的理解 3.Linux项目自动化构建工具——make/makefile 1.gcc的基本使用 gcc是专门用来编译c语言的 g是专门用来编译c的&#xff0c;但是g也能够用来编译c语言 预处理&#xff08;进行宏替换&#xff09; 预处理功能主要包括宏…

【前端提效】-- VsCode 实用插件推荐

EditorConfig for VS Code ***** 作用&#xff1a;多人协同开发&#xff0c;规范缩进风格&#xff0c;缩进大小&#xff0c;tab长度以及字符集等&#xff0c;解决不同IDE的编码范设置&#xff0c;在这里配置&#xff08;.editorconfig&#xff09;的代码规范规则优先级高于编辑…

java诊断与调优常用命令jmap、jstack、jstat使用实战

java应用运行过程中难免会出现问题&#xff0c;特别是在生产环境&#xff0c;发生异常或宕机情况&#xff0c;需要诊断与分析&#xff0c;定位原因&#xff0c;进行优化&#xff0c;避免下次再次出现问题。 虽然现在有很多可视化工具&#xff0c;使用起来比命令行更方便&#x…

Julia 语言环境安装

Julia 语言支持以下系统&#xff1a; LinuxFreeBSDmacOSWindowsAndroid Julia 安装包下载地址为&#xff1a;Download Julia。 Github 源码地址&#xff1a;GitHub - JuliaLang/julia: The Julia Programming Language。 国内镜像地址&#xff1a;Index of /julia-releases/…

逻辑回归—二元分类问题的操作顺序

对于二元分类问题来说&#xff0c;分类的结果和数据的特征之间仍呈现相关关系&#xff0c;但是y的值不再是连续的&#xff0c;是0&#xff5e;1的跃迁。但是在这个过程中&#xff0c;什么仍然是连续的呢&#xff1f;”是概率&#xff0c;概率是逐渐升高的&#xff0c;当达到一个…

AI制药 - TMScore(US-align)、RMSD、Sequence 源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467 参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align 官网地址:https://zhanggroup.org/US-align/ TMScore TMScore,…

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

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

数据挖掘,计算机网络、操作系统刷题笔记50

数据挖掘&#xff0c;计算机网络、操作系统刷题笔记50 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;orac…

(考研湖科大教书匠计算机网络)第五章传输层-第八节1:TCP连接管理理论部分(三次握手与四次挥手)

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航此部分内容借鉴博主【小林coding】 &#xff0c;其对计算机网络内容的图解可以说是深入浅出&#xff0c;尤其是三次握手和四次挥手这一部分&#xff0c;堪称全网最佳。所这…

webpack5打包工具的使用

目录 -----------------------------基础篇------------------------------- 一、为什么需要打包工具 二、基本使用 1、模式 2、使用步骤 三、基本配置 1、五大核心概念 2、准备 Webpack 配置文件 3、运行指令 四、开发模式 五、处理样式资源 1、处理CSS资源 2、处…

100份简历才找一个合适的,2023,软件测试岗位饱和了吗?

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。 另一面企业招人真的…

闪光桐人の实习日记(2023年2月20-27日)

前往闪闪の小窝以获得更好的阅读和评论体验 文章目录2023年2月20日&#xff08;Vue入门&#xff09;概念Vue基础Vue中的MVVMVue的体验Vue的生命周期Vue指令Vue组件VueRouter前后端路由的区别工作原理两种模式比较route跟router的区别路由属性导航守卫Vuex概述5种基本对象基本使…

Qt线程QThread详解

目录前言1.QThread介绍2.QThread示例一3.QThread示例二4.线程同步前言 在程序中使用线程可以提高程序的性能、并发性、响应性和稳定性&#xff0c;使得程序设计更加灵活和简单。但是&#xff0c;线程编程也有一些挑战&#xff0c;如线程安全性和死锁等问题需要格外注意。我们使…

【1】linux命令每日分享——mkdir

大家好&#xff0c;这里是sdust-vrlab&#xff0c;Linux是一种免费使用和自由传播的类UNIX操作系统&#xff0c;Linux的基本思想有两点&#xff1a;一切都是文件&#xff1b;每个文件都有确定的用途&#xff1b;linux涉及到IT行业的方方面面&#xff0c;在我们日常的学习中&…

【机器学习】决策树-ID3算法

1.ID3算法 ID3算法利用信息增益进行特征的选择进行树的构建。信息熵的取值范围为0~1&#xff0c;值越大&#xff0c;越不纯&#xff0c;相反值越小&#xff0c;代表集合纯度越高。信息增益反映的是给定条件后不确定性减少的程度。每一次对决策树进行分叉选取属性的时候&#x…

网络计划--时间参数的计算和优化

根据网络图的基本概念和原则绘制出网络图之后&#xff0c;我们可以计算网络图中有关的时间参数&#xff0c;主要目的是找出关键路线&#xff0c;为网络计划的优化、调整和执行提供明确的时间概念。如下图中从始点①到终点⑧共有4条路线&#xff0c;可以分别计算出每条路线所需的…