GIT基础常用命令-1 GIT基础篇
git基础常用命令-1 GIT基础篇
- 1.git简介及配置
- 1.1 git简介
- 1.2 git配置config
- 1.2.1 查看配置git config
- 1.2.2 配置设置
- 1.2.3 获取帮助git help
- 2 GIT基础常用命令
- 2.1 获取镜像仓库
- 2.1.1 git init
- 2.1.2 git clone
- 2.2 本地仓库常用命令
- 2.2.1 git status
- 2.2.2 git add
- 2.2.3 git diff
- 2.2.4 git commit
- 2.2.5移除文件 rm
- 2.2.6 git mv
- 2.2.7 git log
- 2.2.8 撤销操作
- 2.2.8.1 撤销操作 amend
- 2.2..8.2 撤销已暂存的文件git reset
- 2.2.8.3 撤销对文件的修改 git checkout
- 2.3 远程仓库常用命令
- 2.3.1 显示远程仓库 git remote
- 2.3.2 添加远程仓库 git remote add
- 2.3.3 从远程仓库获取和拉取 git fetch
- 2.3.4 将数据推送到远程仓库git push
- 2.3.5 检查远程仓库git remote show
- 2.3.6 删除和重命名远程仓库 git remote rename/rm
- 2.4 标记
- 2.4.1 列举标签git tag
- 2.4.2 创建标签git tag
- 2.4.3 注释标签git tag -a -m,查看标签
- 2.4.4 轻量标签
- 2.4.5 补加标签
- 2.4.6 共享标签git push
- 2.4.7 检出标签
1.git简介及配置
以下是我实际学习过程中使用到的命令,手码不易,如果觉得好,希望可以点赞收藏;
1.1 git简介
git是一种分布式版本控制工具,客户端不仅要检出文件的最新快照,而且对代码仓库进行完整的镜像,相比于svn需要配置服务器,每次都是往服务器上添加或者下拉操作,如果svn的服务器宕机了,你就无法提交或者下拉,并且中央数据库所在的硬盘受损的话,就GAME OVER了,除了代码没了,而且各种操作记录都无了。但是GIT不会,你下拉到本地的代码,即使远程git服务器,任何一个客户端都可以使用自己的本地镜像来恢复服务器,因为他每一次的检出操作实际上都是对数据的一次完整备份,这才是分布式版本控制工具最屌的,也就是常说的高可用。通过GIT官网downloads就可以下载对应系统(mac、windows、linux/unix)的安装包,然后进行安装。
在git中,文件有三种状态,分别为:已提交(commited)、已修改(modified)和已暂存(staged),
- 已提交表示数据已经被安全的存入到本地数据库中,通常也就是git commit之后,就跟任务已经完成了;
- 已修改表示已经改动了文件,但是尚未提交到数据库,通常表示本地修改了文件,但是尚未执行 git add;
- 已暂存表示对已修改的文件的当前版本做出了标识并且将其加入到下一次要提交的快照中,通常也就是执行git add之后了,在下一次commit的时候会将暂存区的提交到本地仓库中;

1.2 git配置config
git可以全局配置,全局配置需要加上–global,也可以局部配置
1.2.1 查看配置git config
添加global就是查看全局,否则就是看当前git项目的配置(因为可能对应多个git远程分支,提代码的用户名密码都不一定都相同)
#1.查看<全局>所有配置
git config <--global> --list
#git config --global --list
#user.username=xxxx
#user.email=xxxx@qq.com
#user.name=desktop_xxxx
#credential.https://gitee.com.provider=generic#2.查看配置的key,比如user.username|user.password等
git config <--global> key
#git config --global user.username
#xxxx@qq.com
1.2.2 配置设置
git配置设置,可以设置config中key对应的value
#设置配置的key为value,git config user.username potato 就是将当前username设置为potato
git config <--global> key value
#git config --global user.name potato
#配置git默认编辑器为nodepad++
#git config <--global> core.editor "编辑器地址比如nodepad++" -multiInst
1.2.3 获取帮助git help
git可以通过三种方式获取帮助
git help <verb>
git <verb> --help
man git-<verb>
#git help config/clone/push 输入就会显示config或者clone或者push相关的帮助页面说明文档了
2 GIT基础常用命令
2.1 获取镜像仓库
建立GIT项目有两种方式:一种是把现有的项目或者目录导入到git中,第二种是从服务器上克隆(也是经常用的git clone)现有的git仓库。
2.1.1 git init
在现有的目录中初始化git仓库
#初始化,会在当前文件夹下面创建.git的子目录,里面包含了构成GIT仓库骨架的所有必须文件。
git init
#git init
#Initialized empty Git repository in D:/code/java_code/gittest/.git/
#添加文件到暂存区,跟踪新文件
git add xxx.xxx
#将暂存区文件提交到本地仓库,-m为给这次提交添加备注
git commit -m 'first commit'
2.1.2 git clone
克隆现有仓库
#从gitAddress处克隆项目
git clone gitAddress
2.2 本地仓库常用命令
2.2.1 git status
查看当前分支状态,最常用的命令
git status
git status -s 或者 git status --short
#对应状态有以下三种:
#Changes not staged for commit:已修改但是未添加到暂存区
#Changes to be committed:修改的文件已添加到暂存区,但是没有提交
#nothing to commit, working tree clean项目目录是干净的,也就是没有任何变更
2.2.2 git add
将xxx文件添加到暂存区,也就是将这个文件让GIT开始跟踪
git add xxx
2.2.3 git diff
查看已暂存和未暂存的变更
#多用于修改了但未add操作
git diff
#查看将暂存的马上与上一次的做对比,用于add了,但是未commit
git diff --staged
2.2.4 git commit
提交变更,将加入到暂存区的文件提交到本地仓库
#提交变更,备注为xxxx
git commit -m 'xxxx'
#直接跳过add,自动把已跟踪(执行过git add)的所有文件添加到暂存区,然后再提交,但是这个慎用
git commit -a -m 'xxxx'
2.2.5移除文件 rm
相当于git add的回退操作,并且该命令还会把文件从工作目录中一处,这样下一次你就不用在未追踪文件列表中看到这些文件了
如果直接把文件从工作目录中删除,会有Changes not staged for commit:,这个时候需要使用移除文件的命令,将文件的移除状态记录到暂存区
如果你更改了某个文件,并且已经加入到暂存区了,想要让GIT移除它就必须使用-f强制移除,这样做的目的是防止没有被记录到快照中的数据被意外移除而设立的按全特性,因为这样的数据被意外移除后无法由GIT恢复。
#用于没有添加到暂存区,但是工作目录是删除了的文件,从GIT中移除该文件
git rm xxx
#用于已添加到暂存区了,想要让GIT移除它就必须要强制移除
git rm -f xxx
#用于本地不删除,但是想让GIT不追踪,多用于本地配置文件,或者本地编译的文件,比如使用git rm -cached log/\*.log将日志哪个
git rm -cached xxx
2.2.6 git mv
git不会显示跟踪文件的移动,可以通过git mv来重命名文件,相当于
1.mv file_from file_to
2.git rm file_from
3.git add file_to
#将file_from文件重命名为file_to
git status file_from file_to
#git status
#On branch master
#Changes to be committed:#(use "git restore --staged <file>..." to unstage)#renamed: test.txt -> test2.txt
2.2.7 git log
很基础但是却很强大的命令,可以看历史的提交记录,可以说就是避锅找锅的必备了,你干了好事或者坏事,统统给你记录下来,想跑都跑不了的。可以看到我进行了两次提交的操作并且每次提交的-m备注都会显示出来,默认不加参数的话,git log会按照时间顺序列出仓库中的所有提交,其中最新的在最前面。
git log
#Author: potato <xxxx@qq.com>
#Date: Wed Mar 1 15:28:43 2023 +0800
#
# second commit
#
#commit 403a86106b79cf76f55b6b3693d2b4e0aef81b4f
#Author: potato <xxxx@qq.com>
#Date: Wed Mar 1 11:43:23 2023 +0800
#
# first commit
-p选项最常用,他会显示每次提交所引入的差异,后面加-num数字可以最近的两次提交,比如git log -p -2查看最近两次提交变更的内容
git log -p <-num>
–stat 用来查看简要的信息,比如改动的文件列表、共有多少文件被改动以及文件里由多少新增行或者删除行,并且最后输出总计信息
git log --stat
–pretty可以更改日志输出的默认格式,比如浏览大量提交时,参数可以设置以下几种:
oneline格式选项很有用,它可以在每一行中显示一个提交,short、full和fuller格式选项会分别比默认输出减少或者增加一些信息
git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"
format格式选项如下:
| 格式选项 | 输出的格式描述 |
|---|---|
| %H | 提交对象的散列值 |
| %h | 提交对象的简短散列值 |
| %T | 树对象的散列值 |
| %t | 树对象的简短散列值 |
| %P | 父对象的散列值 |
| %p | 父对象的简短散列值 |
| %an | 作者的名字 |
| %ae | 作者的电子邮箱地址 |
| %ad | 创作日期(可使用-date=选项指定日期格式) |
| %ar | 相对于当前日期的创作日期 |
| %cn | 提交者的名字 |
| %ce | 提交者的提交者的电子邮箱地址 |
| %cd | 提交日期 |
| %cr | 相对于当前日期的提交日期 |
oneline和format这两个选项如果与log命令的另外一个选项–grap一起使用,就能够发挥更大的作用
#列举出最近两周内的所有提交,2008-01-15,2 years 1 day 3 minutes ago
git log --since=2.weeks
2.2.8 撤销操作
2.2.8.1 撤销操作 amend
假如刚提交了的,然后发现少提交了某个文件,可以执行add、commit --amend再次提交,实际只提交一次
git commit -m 'xxxx'
git add xxx
git commit --amend
2.2…8.2 撤销已暂存的文件git reset
假如分两次提交,但是使用add *还未进行commit的时候,将两次提交的都加入到了暂存区,可以使用
#将xxx文件移除到暂存区
git reset HEAD xxx
2.2.8.3 撤销对文件的修改 git checkout
假如你现在不需要对某个文件进行修改,或者你想要还原你的修改,可以使用checkout还原,但是一定要知道,这个命令不可恢复的。
git checkout --xxx
2.3 远程仓库常用命令
远程仓库是指在互联网或者其他网络上托管的项目版本仓库,比如本地的项目可以push到远程仓库,然后供他人使用。
2.3.1 显示远程仓库 git remote
该命令会列出每个远程仓库的简短名称。在某个仓库被克隆后,你至少可以看到名为origin的远程仓库,这是git给克隆源服务器取的默认名称,并且可以使用-v显示远程仓库对应的url
git remote [-v]
#origin [url]
2.3.2 添加远程仓库 git remote add
通过git remote add可以添加远程仓库,而shortname可以方便后续拉或者提代码,比如提代码的时候有个git push origin master,表示的就是往shortname为origin的远端分支,推送master分支的代码,默认关联的第一个远程分支的shortname为origin。
git remote add [shortname] [url]
2.3.3 从远程仓库获取和拉取 git fetch
上一小节已经说了可以通过shortname将远程分支做一个名称替换。那么可以通过git fetch 方式拉去代码
git fetch [shortname]
2.3.4 将数据推送到远程仓库git push
当本地开发已完成之后,需要将代码提交到远程仓库,但是前提是,必须拥有远程仓库有的写权限
git push [shortname] [branchname]
#git push origin master
2.3.5 检查远程仓库git remote show
如果想要查看远程仓库的更多信息,可以使用git remote show进行查看,可以看到远程仓库的地址,以及远程分支的跟踪情况,并且可以看到当前本地分支执行pull和push会对应推送到远程仓库的哪个分支上。
git remote show [shortname]
#git remote show origin
2.3.6 删除和重命名远程仓库 git remote rename/rm
可以使用rename来重命名远程分支的shortname,并且可以使用rm来删除掉远程仓库的关联
git remote rename [shortname_bf] [shortname_af]
#将远程仓库的简短名称origin重命名为test
#git remote rename orgin test
git remote rm [shortname]
#将简短名称为origin的远程仓库进行删除操作
#git remote rm origin
2.4 标记
可以通过git tag可以把特定的历史版本标记为重要版本。标签有两种,一种轻量的标签(lightweight),一种注释标签(annotated)
轻量标签
2.4.1 列举标签git tag
git tag
2.4.2 创建标签git tag
git tag xxx
2.4.3 注释标签git tag -a -m,查看标签
git tag -a可以创建标签,-m是添加注释,并且使用git show可以查看当前标签数据以及对应
git tag -a v1.0 -m 'my wokr version 1.0'
git show v1.0
2.4.4 轻量标签
使用git tag来把提交的校验和保存到文件中
2.4.5 补加标签
通过git log+git tag可以补加标签
git log
git tag -a 分支hash
2.4.6 共享标签git push
默认情况下,git push不会把标签传输到远程服务器上,但是创建了标签之后,必须明确的将标签推送到共享服务器上
git push origin [tagname]
#一次性推送多个标签,会把服务器上还没有的标签都推送过去
git push origin --tags
2.4.7 检出标签
你无法在git上真正检出一个标签的,因为标签无法移动。如果想把某个版本的仓库放入像是标签的工作目录中,可以使用
git checkout -b [branchname] [tagname]
在特定标签上创建一个新的分支
相关文章:
GIT基础常用命令-1 GIT基础篇
git基础常用命令-1 GIT基础篇1.git简介及配置1.1 git简介1.2 git配置config1.2.1 查看配置git config1.2.2 配置设置1.2.3 获取帮助git help2 GIT基础常用命令2.1 获取镜像仓库2.1.1 git init2.1.2 git clone2.2 本地仓库常用命令2.2.1 git status2.2.2 git add2.2.3 git diff2…...
华为OD机试题,用 Java 解【数列描述】问题
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…...
2022掉队的“蔚小理”,按下了兔年加速键
配图来自Canva可画 进入2023年,各大车企又展开了新一轮的“竞速”。尽管1月份汽车整体销量出现了“阴跌”,但从各路车企发布的销量目标来看,车企对于2023依旧保持着较高的信心和预期。在一众车企中,以“蔚小理”为代表的新势力们…...
【NLP相关】attention的代码实现
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
凌恩生物资讯
凌恩生物转录组项目包含范围广,项目经验丰富,人均10年以上项目经验,其中全长转录组测序研究基因结构已经成为发文章的趋势,研究物种包括高粱、玉米、拟南芥、鸡、人和小鼠、毛竹、棉花等。凌恩生物提供专业的全长转录组测序及分析…...
Leetcode 148. 排序链表(二路归并)
题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 解法一: 递归解法,自顶向下 链表版二路归并排序(升序,递归版),稳定排序 时间复杂度…...
记录Paint部分常用的方法
Paint部分常用的方法1、实例化之后Paint的基本配置2、shader 和 ShadowLayer3、pathEffect4、maskFilter5、colorFilter6、xfermode1、实例化之后Paint的基本配置 Paint.Align Align指定drawText如何将其文本相对于[x,y]坐标进行对齐。默认为LEFTPaint.Cap Cap指定了笔画线和路…...
ArrayList集合底层原理
ArrayList集合底层原理ArrayList集合底层原理1.介绍2.底层实现3.构造方法3.1集合的属性4.扩容机制5.其他方法6.总结ArrayList集合底层原理 1.介绍 ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在 内的所有元素。 每个 Array…...
内网部署swagger快解析映射方案发布让外网访问
计算机业内人士对于swagger并不陌生, 不少人选择用swagger做为API接口文档管理。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法&#x…...
全网最全整理,自动化测试10种场景处理(超详细)解决方案都在这......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 自动化工作流程 自动…...
【c++】指针的学习
指针是C中非常重要的概念,理解指针的使用可以使程序更高效,并且可以处理更加复杂的数据结构。 指针是一个变量,它存储了另一个变量的地址。通过指针访问这个变量可以提高程序的效率,尤其是在处理大型数据结构时。 在C中࿰…...
华为OD机试题,用 Java 解【水仙花数】问题
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…...
【Linux】-- 基本指令
目录 用户管理 adduser passwd userdel pwd ls指令 -l -a -d -F -r -t -R -1 which alias ll ls -n cd cd - cd ~ touch -d stat mkdir -p rmdir rm -r -f man cp 编辑 -r -f mv cat -n tac more less -N head tail | 管道 dat…...
JavaScript 中的 String 类型 模板字面量定义字符串
ECMAScript 6新增了使用模板字面量定义字符串的能力。与使用单引号或双引号不同,模板字面量保留换行字符,可以跨行定义字符串: let str1 早起的年轻人\n喜欢经常跳步;let str2 早起的年轻人喜欢经常跳步;console.log(str1);// 早起的年轻人…...
我国防疫数据报告,2022年广东花费711亿,北京人均支出第一
哈喽大家好,2023年已经过去一段时间了,随着防疫策略的调整,小伙伴们是不是开始到处旅行购物了呢?当然了,对于自身的健康情况小伙伴们还是要多多关注,不要松懈。随着春节过后有序复工复产,各地纷…...
OpenCV-Python学习(22)—— OpenCV 视频读取与保存处理(cv.VideoCapture、cv.VideoWriter)
1. 学习目标 学习 OpenCV 的视频的编码格式 cv.VideoWriter_fourcc;学会使用 OpenCV 的视频读取函数 cv.VideoCapture;学会使用 OpenCV 的视频保存函数 cv.VideoWriter。 2. cv.VideoWriter_fourcc()常见的编码参数 2.1 参数说明 参数说明cv.VideoWr…...
2023-03-05力扣每日一题
链接: https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/ 题意: 模拟一个摩天轮,四个舱,每个舱最多四人,给一个数组,表示摩天轮每切换一次座舱会来多少人排队(人不会走…...
真正的IT技术男是什么样的?
我们经常会听到很多对IT男士的调侃称呼,“屌丝”、“宅男”,会逗的大家捧腹大笑。但是,大家要不要以为称呼IT男是“屌丝”、“宅男”,就当真以为他们是这样了。今天,青鸟学姐就带大家一起来了解一下,真正的…...
在函数中,用指针接收就可以改变相应的内容吗??
作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 我们在不管指针那篇博客,还是在函数那篇博客中,我都给大家讲解过…...
Java+ElasticSearch+Pytorch实现以图搜图
以图搜图,涉及两大功能:1、提取图像特征向量。2、相似向量检索。第一个功能我通过编写pytorch模型并在java端借助djl调用实现,第二个功能通过elasticsearch7.6.2的dense_vector、cosineSimilarity实现。一、准备模型创建demo.py,输…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
