git指令记录

news2024/11/19 0:46:14

参考博客(侵权删):关于Git这一篇就够了_17岁boy想当攻城狮的博客-CSDN博客

Git工作区介绍_git 工作区_xyzso1z的博客-CSDN博客

git commit 命令详解_gitcommit_辰风沐阳的博客-CSDN博客

本博客只作为自己的学习记录,无商业用途!

git属于分布式版本控制系统,用于管理大型工程源代码。除了git还有SVN以及P4、csv这样的版本控制系统,相较于git,SVN、P4以及csv属于集中式版本控制系统。

分布式版本控制系统与集中式版本控制系统的区别

分布式版本控制系统:每一个电脑都属于一个服务器,在主仓库拉一份代码以后,则可以将自己的电脑作为服务器,自己在本地做的修改可以提交到主仓库。

集中式版本控制系统在每次coding时需要先拉一份代码,在服务器出现问题时,所有数据都会丢失,本地仅仅保存当前拉取的code信息。

集中式版本控制有一个主版本号,每次版本迭代都会以这个版本号为主,分布式因为每个客户端都是服务器,git没有固定的版本号,代码回滚会有一个哈希值作为代码ID,一般以master作为主仓库,我们可以push到master并合并到主仓库上,主仓库的版本号就会迭代一次,客户端的git迭代与master无关,只有在merge时才会合并一次。

Debian/Linux上搭建git

sudo apt install git

配置git环境:git config --global

//在首次使用git时需要设置用户名以及邮箱,作为当前客户端的git标识,在使用远程vscode时会要求登录。
//下面的命令需要复制完,user.name也需要加上
git config --global user.name "your name"
git config --global user.email "your email"

这里简单介绍一下git版本控制系统的工作区:主要分为工作区域(workspace)、暂存区(stage\Index)、本地仓库(repository)、远程仓库(remote directory)

 workspace:工作区,就是平时存放项目代码的地方。
Index/Stage:暂存区,用于临时存放你的改动,事实上只是一个文件,保存即将提交到文件列表信息。
Repository:仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中一台电脑用于远程数据交换。

git工作流程:

1、在工作目录中添加、修改、删除文件(modified)。

2、将需要进行版本管理的文件放入暂存区(staged)。

3、将暂存区的文件提交给git仓库(commit)。

4、将本地仓库修改推送到远程仓库

git中文件的四种状态:

git不关心文件两个版本之间的具体差别,只关心文件的整体是否有改变。

1、untracked:未跟踪,此文件在文件夹中没有加到git仓库中,不参与版本控制,通过git add的状态可以转变为staged

2、unmodify:文件已入库,未修改,就是在版本库中的文件和文件夹中的完全一致,这种类型的文件有两种去处。在被修改时会变成modefied ;如果使用git rm移除版本库,就会变成untracked文件

3、Modified:文件已修改,通过git add指令可以进入暂存staged状态。使用git checkout则丢弃修改内容,返回unmodify状态

4、staged:暂存状态,执行git commit 则将修改同步到库中,文件变为unmodify状态,执行git reset HEAD filename取消暂存,文件变为Modified状态。

 

//创建本地仓库的条件是需要一个空目录,然后在空目录中初始化新项目
//init : 初始化当前目录为仓库,初始化以后会将当前仓库设置为master

//比如想创建一个example的空项目

mkdir example 
cd example
git init

//在初始化以后会生成git的配置文件目录,就是隐藏目录,可以用Ctrl+h显示,或者ls -ah查看隐藏目录
//进入隐藏目录后可以查看相关配置文件

新建文件添加到本地仓库 git add / git commit -m

//add:是指将文件添加到缓存区
//commit:是指提交到本地仓库
//比如当前我想新建一个example.c文件,然后上传到本地仓库
//这里简单介绍一下git版本控制系统的工作区:主要分为工作区域(workspace)、暂存区(stage\Index)、本地仓库(repository)、远程仓库(remote directory)


cd example
touch example.c
git add test.c   //这个命令是指将文件添加到本地仓库的提交缓存,此时还没有添加到本地仓库,
git commit -a    //使用这个命令可以为修改的code添加注释;同时git commit会为我们生成40位的哈希值,            
                   //作为codeID并把刚刚用git add添加到提交缓存区的文件提交到本地仓库,便于回滚
git commit -m    //改写提交,-amend表示要重写上一次的提交信息

下面详细讲解一下git commit

# 将暂存区内容提交到版本库, 进入 vi 命令界面输入提交信息
git commit

# 将某些已被跟踪的文件提交到版本库(包含工作区和版本库)
git commit [file1] [file2] [...]

# 将暂存区内容提交到版本库, 无需进入 vi 命令界面输入提交信息
git commit -m [message]

# 跳过 git add, 将所有已被跟踪的文件更改提交到版本库
git commit -am [message]

# 使用一次新的commit, 替代上一次提交
# 如果代码没有任何新变化, 则用来改写上一次commit的提交信息
git commit --amend -m [message]

#如果需要将所有已被跟踪的文件更改内容,不想使用 git add,直接添加到版本库

#总结: git commit -m 用于提交暂存区中的文件,git commit -am 用于提交已被跟踪的文件

查看历史提交日志:git log

可以用于查看之前提交是否成功了

回滚代码仓库:git reset --hard

git reset --hard
reset是重置命令
--hard是重置代码的仓库版本
主要有三种模式,--soft、--mixed、--hard
使用--soft就是仅仅将头指针恢复,已经add的暂存区以及工作空间的所有东西都不变
--mixed将头恢复掉,已经add的暂存区也会丢失,工作空间的代码不变
--hard,所有东西都会恢复,

2、回滚当前仓库指向版本

HEAD表示当前仓库的指向,当前HEAD指向master时,就代表回滚到master上一次提交的版本

git reset --hard 要回滚的哈希ID
//可以用git log查看,在commit后面的就是
git reset --hard HEAD^

HEAD是指向当前仓库的,历史版本中可能有别的分支,当我们指向迭代我们仓库的上一个版本时,可以直接用HEAD来指向,就是上面的命令。
其中 ^代表上一个版本,HEAD代表当前仓库的指向,当前HEAD指向master时,代表要回到master上一次提交的版本

还有一种当时就是~3
git reset --hard HEAD~3
后面的~3表示以当前版本为基数,回滚多少次,HEAD~3表示回滚master之前的三个版本

查看提交以后文件是否做了改动,git status

git status :查看当前仓库的状态

将文件撤销回到最近一次修改的状态:git checkout --file

git checkout :切换参数,通常用于切换分支仓库,

git创建和查看分支:git branch、git checkout -b

git checkout -b dev     //使用git checkout -b创建一个新分支后会自动切换过去
git branch    //查看当前所在分支,也就是HEAD指向的分支。

git checkout -b等价于git branch + git checkout 

git branch 后面如果跟着名字会创建分支,但是不会切换,git checkout 后面如果是分支名则会切换过去

git合并分支:git merge

如果需要将分支提交到master 仓库的话,只需要切换到master仓库,并执行git merger分支名就行

截止目前为止,github和gitlab提交本地仓库到远程仓库只需要:git add、git commit、git push就行。

git branch可以修改分支名

创造
克隆现有存储库

$ git clone ssh://user@domain.com/repo.git

创建一个新的本地存储库

$ git init

当地变化
Changed files in your working directory

$ git status

Changes to tracked files

$ git diff

将所有当前更改添加到下一个提交

$ git add .

在中添加一些更改到下一次提交

$ git add -p

提交跟踪文件中的所有本地更改

$ git commit -a

提交先前进行的更改

$ git commit

更改最后一次提交

不要修改已发布的提交!

$ git commit --amend

提交历史
显示所有提交,从最新开始

$ git log

显示特定文件随时间的变化e

$ git log -p

谁更改了中的内容和时间

$ git blame

分支机构和标签
列出所有现有分支

$ git branch -av

切换HEAD分支

$ git checkout

根据您当前的HEAD创建一个新分支

$ git branch

基于远程分支创建一个新的跟踪分支

$ git checkout --track

删除本地分支

$ git branch -d

用标签标记当前提交

$ git tag

更新和发布
列出所有当前配置的遥控器

$ git remote -v

显示有关遥控器的信息

$ git remote show

添加名为的新远程存储库

$ git remote add

从下载所有更改,但不要集成到HEAD中

$ git fetch

下载更改并直接合并/集成到HEAD中

$ git pull

在远程上发布本地更改

$ git push

删除遥控器上的分支

$ git branch -dr

发布标签

$ git push --tags

合并与基础
将合并到当前HEAD中

$ git merge

将当前的HEAD重新设置到

不要重新发布已发布的提交!

$ git rebase

中止基准

$ git rebase --abort

解决冲突后继续进行基准

$ git rebase --continue

使用您配置的合并工具解决冲突

$ git mergetool

使用编辑器手动解决冲突,并(在解决之后)将文件标记为已解决

$ git add

$ git rm

撤消
丢弃工作目录中的所有本地更改

$ git reset --hard HEAD

放弃特定文件中的本地更改

$ git checkout HEAD

还原提交(通过产生具有相反更改的新提交)

$ git revert

将HEAD指针重置为上一次提交

…并丢弃此后的所有更改

$ git reset --hard

…并将所有更改保留为未分阶段的更改

$ git reset

…并保留未提交的本地更改

$ git reset --keep
git branch -m 分支名 新的分支名

//可以使用git stash保存当前的工作状态

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

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

相关文章

计算机存储设备

缓存为啥比内存快 内存使用 DRAM 来存储数据的、也就是动态随机存储器。内部使用 MOS 和一个电容来存储。 需要不停地给它刷新、保持它的状态、要是不刷新、数据就丢掉了、所以叫动态 、DRAM 缓存使用 SRAM 来存储数据、使用多个晶体管(比如6个)就是为了存储1比特 内存编码…

【python】python全国数据人均消费数据分析(代码+报告+数据)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 &#x…

bio、nio、aio、io多路复用

BIO-同步阻塞IO NIO-同步非阻塞IO 不断的重复发起IO系统调用,这种不断的轮询,将会不断地询问内核,这将占用大量的 CPU 时间,系统资源利用率较低 IO多路复用模型-异步阻塞IO IO多路复用模型,就是通过一种新的系统调用&a…

前端开发者都应知道的 网站

1、ransform.tools 地址:transform.tools/ transform.tools 是一个网站,它可以让你转换几乎所有的东西,比如将HTML转换为JSX,JavaScript转换为JSON,CSS转换为JS对象等等。当我需要转换任何东西时,它真的帮…

Java反射机制概述

Java反射的概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一…

PyTorch: 池化-线性-激活函数层

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 nn网络层-池化-线性-激活函数层池化层最大池化:nn.MaxPool2d()nn.AvgPool2d()nn.MaxUnpool2d()线性层激…

腾讯云2核4G服务器性能如何?能安装几个网站?

腾讯云2核4G服务器能安装多少个网站?2核4g配置能承载多少个网站?一台2核4G服务器可以安装多少个网站?阿腾云2核4G5M带宽服务器目前安装了14个网站,从技术角度是没有限制的,只要云服务器性能够用,想安装几个…

Acrel-3200远程预付费电能管理系统在某医院的应用 安科瑞 许敏

摘要:介绍张家港第一人民医院远程预付费电能管理系统,采用智能远程预付费电度表,采集各租户实时用电量、剩余电量,通过智能远程预付费电度表进行远程分合闸控制,进而实现先售电后用电。系统采用现场就地组网的方式&…

【Java】Tomcat、Maven以及Servlet的基本使用

Tomcat什么是TomcatTomcat的目录结构启动Tomcat MavenMaven依赖管理流程配置镜像源 Servlet主要工作实现Servlet添加依赖实现打包分析 配置插件 Tomcat 什么是Tomcat Tomcat 是一个 HTTP 服务器。前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务…

Storage、正则表达式

1 LocalStorage 2 SessionStorage 3 正则表达式的使用 4 正则表达式常见规则 5 正则练习-歌词解析 6 正则练习-日期格式化 Storage-Storage的基本操作 // storage基本使用// 1.token的操作let token localStorage.getItem("token")if (!token) {console.log(&q…

海洋水质参数提取

目录 1数据预处理 2 水色参数反演 第一步整理采样点 第二步获取采样星上数据 第三步模型参数反演 第四步叶绿素反演 1数据预处理 第一步安装自定义扩展工具。本节中使用两个自定义扩展工具:ENⅥ_HJ1A1B_Tools.sav,用于环境一号卫星数据读取、辐射定标和波…

《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型

第3章 简单的优化模型 关键词:简单优化 微分法 建模思想 本章与第4章连续两章都是优化、规划的问题,可以看成一类问题——内容上也是由简单到复杂。在第3章中,主要是几个简单的优化模型,可以归结到函数极值问题来求解&#xff0…

MySql 数据空洞

大家在使用MySQL数据库的时候经常会发现新建的数据库及表用起来非常的流畅,但是当数据库使用一段时间后,随着数据量的增大再进行数据操作时经常会出现卡顿的现象,哪怕你的表中只有几十条数据也会出现查询时间过长的问题。 下图就是对一张表的…

如何修改电脑中图片的分辨率及DPI提高方法?

​当我们需要上传电子证件照到一些网上报名考试平台时,可能会发现这些平台对于电子证件照的分辨率有一定的限制,那么怎么改图片分辨率(https://www.yasuotu.com/dpi)呢?想要提高图片dpi可以使用压缩图的修改图片分辨率…

CocosCreator 之翻页容器(PageView)和滚动容器(ScrollView)的触摸冲突处理

来自博客 在开发的时候,我们需要一个既能翻页又能上下滑动的界面,这时候就会遇到翻页容器和滚动容器触摸冲突的情况。以下是博主这里的解决方法。 ScrollView和PageView层级关系如下: 在不做任何处理前,在ScrollView区域(上图白色区域)滑动,ScrollView可以正常上下滑动…

成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden

成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden 问题描述解决方案原理什么是User Agent解决 问题描述 –2023-07-15 02:32:57-- https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh Resolving mi…

设计模式——状态模式

状态模式 定义 当一个对象内在的状态改变时,允许其改变行为,这个对象看似改变了其类 状态模式的核心是封装,状态的变更引起行为的变更,从外部看来就好像这个对象对应的类发生了变化一样。 优缺点、应用场景 优点 结构清晰。…

MiniGPT4系列之三模型推理 (Web UI):在RTX-3090 Ubuntu服务器推理

MiniGPT4系列之一部署篇:在RTX-3090 Ubuntu服务器部署步骤详解_seaside2003的博客-CSDN博客 MiniGPT4系列之二推理篇:在RTX-3090 Ubuntu服务器推理详解_seaside2003的博客-CSDN博客 MiniGPT4系列之三模型推理 (Web UI):在RTX-3090 Ubuntu服…

华为OD机试真题 Java 实现【红黑图】【2023Q1 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、补充说明五、解题思路六、Java算法源码七、效果展示1、输入2、输出 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 刷的越多,抽中的概率越大&…

百度留痕是什么方法排名的

百度留痕是什么方法排名的,黑帽seo教学:谷歌外推搜索留痕关键词秒收录排名软件技术培训 #外推留痕 #黑帽seo #黑帽seo培训 今天给大家看一个百度留痕的一个链接,东西也很简单,其实就是前面的一个地址加后面的一个你的联系方式,你…