当前位置: 首页 > news >正文

Git命令使用与原理详解

1.仓库

# 在当前目录新建一个Git代码库
$ git init
​
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
​
# 下载一个项目和它的整个代码历史
$ git clone [url]

2.配置

# 显示当前的Git配置
$ git config --list
​
# 编辑Git配置文件
$ git config -e [--global]
​
# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

3.增加/删除文件

# 添加指定文件到暂存区
$ git add [file1] [file2] ...
​
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
​
# 添加当前目录的所有文件到暂存区
$ git add .
​
# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p
​
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
​
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
​
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

4.代码提交

# 提交暂存区到仓库区
$ git commit -m [message]
​
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
​
# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a
​
# 提交时显示所有diff信息
$ git commit -v
​
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
​
# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

5.分支

# 列出所有本地分支
$ git branch
​
# 列出所有远程分支
$ git branch -r
​
# 列出所有本地分支和远程分支
$ git branch -a
​
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
​
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
​
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
​
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
​
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
​
# 切换到上一个分支
$ git checkout -
​
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
​
# 合并指定分支到当前分支
$ git merge [branch]
​
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
​
# 删除分支
$ git branch -d [branch-name]
​
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

6.标签

# 列出所有tag
$ git tag
​
# 新建一个tag在当前commit
$ git tag [tag]
​
# 新建一个tag在指定commit
$ git tag [tag] [commit]
​
# 删除本地tag
$ git tag -d [tag]
​
# 删除远程tag
$ git push origin :refs/tags/[tagName]
​
# 查看tag信息
$ git show [tag]
​
# 提交指定tag
$ git push [remote] [tag]
​
# 提交所有tag
$ git push [remote] --tags
​
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

7.查看信息

# 显示有变更的文件
$ git status
​
# 显示当前分支的版本历史
$ git log
​
# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat
​
# 搜索提交历史,根据关键词
$ git log -S [keyword]
​
# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s
​
# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature
​
# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]
​
# 显示指定文件相关的每一次diff
$ git log -p [file]
​
# 显示过去5次提交
$ git log -5 --pretty --oneline
​
# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn
​
# 显示指定文件是什么人在什么时间修改过
$ git blame [file]
​
# 显示暂存区和工作区的差异
$ git diff
​
# 显示暂存区和上一个commit的差异
$ git diff --cached [file]
​
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
​
# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]
​
# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"
​
# 显示某次提交的元数据和内容变化
$ git show [commit]
​
# 显示某次提交发生变化的文件
$ git show --name-only [commit]
​
# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]
​
# 显示当前分支的最近几次提交
$ git reflog

8.远程同步

# 下载远程仓库的所有变动
$ git fetch [remote]
​
# 显示所有远程仓库
$ git remote -v
​
# 显示某个远程仓库的信息
$ git remote show [remote]
​
# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]
​
# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
​
# 上传本地指定分支到远程仓库
$ git push [remote] [branch]
​
# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force
​
# 推送所有分支到远程仓库
$ git push [remote] --all

9.撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]
​
# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
​
# 恢复暂存区的所有文件到工作区
$ git checkout .
​
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
​
# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard
​
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]
​
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]
​
# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]
​
# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]
​
暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

10.其他

1.基本命令

在这里插入图片描述

2.Git基本理论

在这里插入图片描述
在这里插入图片描述

3.Git项目搭建

在这里插入图片描述
在这里插入图片描述

4.Git基本操作命令

在这里插入图片描述
在这里插入图片描述

5.Git分支

在这里插入图片描述

在这里插入图片描述

相关文章:

Git命令使用与原理详解

1.仓库 # 在当前目录新建一个Git代码库 $ git init ​ # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] ​ # 下载一个项目和它的整个代码历史 $ git clone [url]2.配置 # 显示当前的Git配置 $ git config --list ​ # 编辑Git配置文件 $ git co…...

Linux:自定义Shell

本文旨在通过自己完成一个简单的Shell来帮助理解命令行Shell这个程序。 目录 一、输出“提示” 二、获取输入 三、切割字符串 四、执行指令 1.子进程替换 2.内建指令 一、输出“提示” 这个项目基于虚拟机Ubuntu22.04.5实现。 打开终端界面如图所示。 其中。 之前&#x…...

vue项目中中怎么获取环境变量

在 Vue 项目中,有几种获取环境变量的方法。最常用的是通过 import.meta.env 来访问。 1.首先在项目根目录创建环境变量文件: .env # 所有环境都会加载 .env.development # 开发环境 .env.production # 生产环境2.在环境变量文件…...

C#里怎么样使用正则表达式?

C#里怎么样使用正则表达式? 正则表达式是由普通字符(如英文字母)以及特殊字符(也称为元字符)组成的一种文字模式 这种文字模式可用于检查字符串的值是否满足一定的规则,例如: 验证输入的邮箱是否合法 输入的身份证号码是否合法 输入的用户名是否满足条件等 也可以…...

《生成式 AI》课程 第5講:訓練不了人工智慧?你可以訓練你自己 (下)

资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Springhttps://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php 摘要 这一系列的作业是为 2024 年春季的《生成式 AI》课程设计的,共包含十个作业。…...

Vue 动态给 data 添加新属性深度解析:问题、原理与解决方案

在 Vue 中,动态地向 data 中添加新的属性是一个常见的需求,但它也可能引发一些问题,尤其是关于 响应式更新 和 数据绑定 的问题。Vue 的响应式系统通过 getter 和 setter 来追踪和更新数据,但 动态添加新属性 时,Vue 并不会自动为这些新属性创建响应式链接。 1. 直接向 V…...

【Pytest+Yaml+Allure】实现接口自动化测试框架

一、框架思想 requestsyamlpytestallure实现接口自动化框架。结合数据驱动和分层思想,将代码与数据分离,易维护,易上手。使用yaml编写编写测试用例,利用requests库发送请求,使用pytest管理用例,allure生成…...

el-input绑定点击回车事件意外触发页面刷新

小伙伴们在项目中应该还是比较常用键盘指定按键事件的&#xff0c;尤其是一些筛选条件的通过点击键盘回车按键去触发搜索 例如&#xff1a; <el-form><el-form-item label条件title><el-input v-modelformData.searchKey keydown.entersearch></el-input…...

Golang的语言特性与鸭子类型

Golang的语言特性与鸭子类型 前言 什么是鸭子类型&#xff1f; Suppose you see a bird walking around in a farm yard. This bird has no label that says ‘duck’. But the bird certainly looks like a duck. Also, he goes to the pond and you notice that he swims l…...

如何在Linux系统中排查GPU上运行的程序

如何在Linux系统中排查GPU上运行的程序 在Linux系统中&#xff0c;随着深度学习和高性能计算的普及&#xff0c;GPU资源的管理和监控变得越来越重要。当您遇到GPU资源不足或性能下降的问题时&#xff0c;需要能够快速定位并解决这些问题。本文将介绍几种常用的方法来帮助您排查…...

VSCode 新建 Python 包/模块 Pylance 无法解析

问题描述&#xff1a; 利用 VSCode 写代码&#xff0c;在项目里新建一个 Python 包或者模块&#xff0c;然后在其他文件里正常导入这个包或者模块时出现&#xff1a; Import “xxxx” could not be resolved Pylance (reportMissingImports) 也就是说 Pylance 此时无法解析我们…...

Unet++改进44:添加MogaBlock(2024最新改进模块)|在纯基于卷积神经网络的模型中进行判别视觉表示学习,具有良好的复杂性和性能权衡。

本文内容:添加MogaBlock 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 通过将内核尽可能全局化,现代卷积神经网络在计算机视觉任务中显示出巨大的潜力。然而,最近在深度神经网络(dnn)内的多阶博弈论相互作用方面的进展揭示了现代卷积神经网络的表示瓶…...

计算机网络(14)ip地址超详解

先看图&#xff1a; 注意看第三列蓝色标注的点不会改变&#xff0c;A类地址第一个比特只会是0&#xff0c;B类是10&#xff0c;C类是110&#xff0c;D类是1110&#xff0c;E类是1111. IPv4地址根据其用途和网络规模的不同&#xff0c;分为五个主要类别&#xff08;A、B、C、D、…...

【C语言】野指针问题详解及防范方法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;什么是野指针&#xff1f;&#x1f4af;未初始化的指针代码示例问题分析解决方法 &#x1f4af;指针越界访问代码示例问题分析解决方法 &#x1f4af;指向已释放内存的…...

【SVN和GIT】版本控制系统详细下载使用教程

文章目录 ** 参考文章一、什么是SVN和GIT二、软件使用介绍1 SVN安装1.1 服务端SVN下载地址1.2 客户端SVN下载地址2 SVN使用2.1 服务端SVN基础使用2.1.1 创建存储库和用户成员2.1.2 为存储库添加访问人员2.2 客户端SVN基础使用2.2.1 在本地下载库中的内容2.2.2 版本文件操作--更…...

【Vue】Vue3.0(二十六)Vue3.0中的作用域插槽

上篇文章 【Vue】Vue3.0&#xff08;二十五&#xff09;Vue3.0中的具名插槽 的概念和使用场景 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月20日17点30分 文章目录 概念使用场景示…...

神经网络(系统性学习二):单层神经网络(感知机)

此前篇章&#xff1a; 神经网络中常用的激活函数 神经网络&#xff08;系统性学习一&#xff09;&#xff1a;入门篇 单层神经网络&#xff08;又叫感知机&#xff09; 单层网络是最简单的全连接神经网络&#xff0c;它仅有输入层和输出层&#xff0c;没有隐藏层。即&#x…...

CTF之密码学(BF与Ook)

BrainFuck&#xff08;通常也被称为Brainfuck或BF&#xff09;和Ook是两种非常特殊且有趣的编程语言。以下是对这两种语言的详细介绍&#xff1a; 一、BrainFuck 简介&#xff1a; BrainFuck是一种极小化的计算机语言&#xff0c;由Urban Mller在1993年创建。由于“fuck”在英…...

【TEST】Apache JMeter + Influxdb + Grafana

介绍 使用Jmeter发起测试&#xff0c;测试结果存入Influxdb&#xff0c;Grafana展示你的测试结果。 环境 windows 10docker desktopJDK17 安装 Apache JMeter 访问官网&#xff08;Apache JMeter - Apache JMeter™&#xff09;下载JMeter&#xff08;目前最新版本5.6.3&a…...

SpringBoot集成多个rabbitmq

1、pom文件 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><versio…...

从零开始学习数据库 day0(基础)

在当今的信息时代&#xff0c;数据已经成为了企业和组织最重要的资产之一。无论是电子商务平台&#xff0c;社交媒体&#xff0c;还是科研机构&#xff0c;几乎每个地方都离不开数据库。今天&#xff0c;我们将一起走进数据库的世界&#xff0c;学习它的基础知识&#xff0c;帮…...

MongoDB相关问题

视频教程 【GeekHour】20分钟掌握MongoDB Complete MongoDB Tutorial by Net Ninja MongoDB开机后调用缓慢的原因及解决方法 问题分析&#xff1a; MongoDB开机后调用缓慢&#xff0c;通常是由于以下原因导致&#xff1a; 索引重建&#xff1a; MongoDB在启动时会重建索引…...

linux基本命令(1)

1. 文件和目录操作 ls — 列出目录内容 ls # 显示当前目录的文件和目录 ls -l # 显示详细的文件信息&#xff08;权限、大小、修改时间等&#xff09; ls -a # 显示所有文件&#xff08;包括隐藏文件&#xff09; ls -lh # 显示详细信息并以易读的方式显示文件大小 cd — 改…...

【机器学习】超简明Python基础教程

Python是一种简单易学、功能强大的编程语言&#xff0c;适用于数据分析、人工智能、Web开发、自动化脚本等多个领域。本教程面向零基础学习者&#xff0c;逐步讲解Python的基本概念、语法和操作。 1. 安装与运行 安装Python 从官网 Welcome to Python.org 下载适合自己系统的…...

基于信创环境的信息化系统运行监控及运维需求及策略

随着信息技术的快速发展和国家对信息安全的日益重视&#xff0c;信创环境&#xff08;信息技术应用创新环境&#xff09;的建设已成为行业发展的重要趋势。本指南旨在为运维团队在基于信创环境的系统建设及运维过程中提供参考&#xff0c;确保项目顺利实施并满足各项技术指标和…...

【Mysql】视图--介绍和作用 视图的创建

1、介绍 &#xff08;1&#xff09;视图&#xff08;view&#xff09;是一个虚拟表&#xff0c;非真实存在&#xff0c;其本质是根据SQL语句获取动态的数据集&#xff0c;并为其命名&#xff0c;用户使用时只需使用视图名称既可获取结果集&#xff0c;并可以将其当作表来使用。…...

【JavaEE初阶 — 多线程】定时器的应用及模拟实现

目录 1. 标准库中的定时器 1.1 Timer 的定义 1.2 Timer 的原理 1.3 Timer 的使用 1.4 Timer 的弊端 1.5 ScheduledExecutorService 2. 模拟实现定时器 2.1 实现定时器的步骤 2.1.1 定义类描述任务 定义类描述任务 第一种定义方法 …...

Win10系统开启了文件夹管控(文件夹限制访问)导致软件向系统公共文档目录写入失败的问题排查分享

目录 1、问题说明 2、查看系统是否开启了文件夹管控 3、在未安装杀毒软件的Win10电脑上可能会自动打开文件夹管控 4、到微软官网上查看Windows 安全中心的病毒和威胁防护与文件夹管控的详细说明 5、解决办法探讨 6、最后 C++软件异常排查从入门到精通系列教程(专栏文章列…...

大数据的数据整合

数据整合是对导入的各类源数据进行整合&#xff0c;新进入的源数据匹配到平台上的标准数据&#xff0c;或者成为系统中新的标准数据。数据整合工具对数据关联关系进行设置。经过整合的源数据实现了基本信息的唯一性&#xff0c;同时又保留了与原始数据的关联性。具体功能包括关…...

回溯法经典难题解析

本文将通过几个经典的回溯问题&#xff0c;展示回溯算法的应用及其在解决问题时的核心思想和技巧。这些问题包括全排列、全排列II、N皇后以及数独问题&#xff0c;本文将分别介绍每个问题的思路与实现。 46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有…...