git使用总结

概述

简介

Git是一种代码托管技术,很多代码托管平台也是基于Git来实现的。

Git可以帮我们做到很多的事情,比如代码的版本控制,分支管理等。

网址

git官网:https://git-scm.com/

版本控制系统【VCS】

可以完整保存项目的快照,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。

四个工作区域

Workspace【工作区】:存放项目代码的地方

Stage【暂存区】: 临时存放你的改动

Repository【仓库区】: 安全存放数据的位置

Remote【远程仓库】:托管代码的服务器

工作流程

1.在工作目录中添加、修改文件

2.将需要进行版本管理的文件放入暂存区域

3.将暂存区域的文件提交到git仓库

安装git

下载地址

Windows下载:https://git-scm.com/download/win

下载64位软件包

使用

右击Git Bash Here即可打开git的终端进行操作

常用命令

初始化本地仓库

用户信息配置

【配置信息存放位置:C:\Users\86150\.gitconfig】

1.设置用户名:git config --global user.name "name"

2.设置用户邮箱:git config --global user.email "name@163.com"

3.查看用户名:git config user.name

4.查看用户邮箱:git config user.email

5.查看用户所有信息:git config --list

初始化本地仓库

创建tmp目录:mkdir tmp

初始化本地仓库:git init

git init 命令会在上述目录中创建一个名为 .git 的隐藏目录,并在其中创建一个版本库【该目录为隐藏文件,查看->显示隐藏目录】

文件命令

文件状态

1.查看文件状态:git status

2.简洁查看文件状态:git status -s

untracked【未跟踪】:没有加入到git库

Unmodified【文件已经入库但未修改】

Modified【文件已修改】

Staged【暂存】

暂存区

1.加入暂存区:git add 文件名

2.取消暂存区:git reset 文件名

提交

提交:git commit -m "提交信息"

查看提交信息:git log --oneline

修改提交记录【最新一次的提交信息】:git commit --amend -m "提交信息"

删除

删除文件:git rm 文件名

【只是删除工作目录的文件,我们的版本库里面还是存在的,删除文件会把这个文件直接放入暂存区】

挽救

挽救已被删除的文件/目录:git checkout index.html

【当使用git checkout命令时,Git 会切换到指定的分支,但如果后面接的是文件名或路径,Git则不会切换分支,

而是把文件从.git目录中复制一份到当前的工作目录。更精准地说,这个命令会把暂存区中的内容或文件拿来覆盖工作目录中】

挽救所有删除的文件:git checkout .

【这个技巧不仅可以将删除的文件挽救回来,当改动某个文件后反悔了,也可以用它把文件恢复到上一次Commit的状态。

不是所有情况下都能恢复被删除的文件的。因为整个Git的记录都是放在根目录下的 .git目录中,如果这个目录被删除了,

也就意味着历史记录也被删除了,那么删除的文件也就不能恢复了】

还原【只vim修改】

git checkout -- aaa.txt # aaa.txt为文件名

还原【vim修改并git add,但没有git commit】

git log --oneline # 可以省略

git reset HEAD # 回退到当前版本

git checkout -- aaa.txt # aaa.txt为文件名

还原【vim修改并git add并git commit】

git log --oneline # 可以省略

git reset HEAD^ # 回退到上一个版本

git checkout -- aaa.txt # aaa.txt为文件名

git reset 版本号 ---- 将暂缓区回退到指定版本,根据 $ git log --oneline 显示的版本号,可以回退到任何一个版本,也可通过 HEAD 来指定版本。

HEAD 当前版本

HEAD^ 上一个版本

HEAD^^ 上上一个版本

忽略文件

简介

一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。

通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,

我们可以在工作目录中创建一个名为 .gitignore的文件(文件名称固定),列出要忽略的文件模式

创建.gitignore文件

touch .gitignore

编写.gitignore文件的忽略规则

vim .gitignore

忽略规则

#以斜杠“/”开头表示目录

#以星号“*”通配多个字符

#以问号“?”通配单个字符

#以方括号“[]”包含单个字符的匹配列表

#以叹号“!”表示不忽略(跟踪)匹配到的文件或目录

/public/* # 忽略public下的所有目录及文件

!/public/assets #不忽略/public/assets,就是特例的意思,assets文件不忽略

index.class # 忽略具体的文件

*.class # 忽略所有的class

[ab].class # 忽略 a.class b.class

比较差异

简单比较

diff a.info b.info

比较工作区和暂存区差异

git diff

比较暂存区差异

git diff --cached

---:标记原始文件

+++:标记新文件

@@:两个不同文件版本的上下文行号。

-: 原始文件删除改行

+:原始文件增加一行

其余命令

查看记录

git log

--graph : 查看分支合并图

--oneline : 标记把每一个提交压缩到了一行中

历史命令

git reflog

远程仓库

仓库

gitee码云

gitee官网:https://gitee.com/

是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快

github

github官网:https://github.com/

github加速:https://mirror.ghproxy.com/

是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯的版本库格式进行托管,故名GitHub

GitLab

是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

SSH协议

简介

由于Git的远程仓库不在我们本地,当我们在使用远程仓库的时候(例如克隆,拉取,推送)就会涉及到数据的网络传输,Git支持多种数据传输协议,包括:

本地协议(Local)

HTTPS协议

SSH(Secure Shell)协议

Git协议

SSH协议

SSH为Secure Shell(安全外壳协议)的缩写,由IETF的网络小组(Network Working Group)所制定

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议

利用SSH协议可以有效防止远程管理过程中的信息泄露问题

配置SSH协议

1使用命令ssh-keygen -t rsa生成公钥和私钥

ssh-keygen -t rsa

执行完成后在window本地用户.ssh目录(C:\Users\用户名.ssh)下生成如下名称的公钥和私钥

2复制公钥文件内容至服务器上

3Git的Remote要使用SSH地址

克隆

简介

Git克隆的仓库服务器的默认名:origin

Git克隆的是该Git仓库服务上的几乎所有数据,包括日志信息、历史记录等

默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来

命令

git clone 远程仓库地址 克隆后的文件名【自定义,可不写】

远程仓库命令

查看远程仓库:git remote

添加远程仓库:git remote add 远程仓库名 远程仓库地址

删除远程仓库:git remote rm 远程仓库名

推送:git push 远程仓库名 分支名【-f 强制推送】

拉取:git pull【从远程仓库获取最新版本到本地仓库,会自动合并】

抓取:git fetch【从远程仓库获取最新版本到本地仓库,不会自动合并】

手动合并文件:git merge 远程仓库名/分支名

分支

简介

分支像贴纸一样,可以把分支想象成一张贴纸,贴在某一个Commit上面,当做了一次新的Commit之后,这个新的Commit会指向它的前一个Commit

而接下来“当前的分支”,也就是HEAD所指的这个分支,会贴到刚刚做的那个Commit 上,同时HEAD也会跟着前进

查看分支

git branch

-r : 列出所有远程分支

-a :列出所有本地分支和远程分支

切换分支

git checkout dog

切换后,主要是更新暂存区和工作目录,变更HEAD的位置

创建分支

git branch cat

通过某分支创建分支

git checkout -b 新分支 某分支

新分支会继承某分支数据

修改分支名

git branch -m cat dog

合并分支

git merge dog

删除本地仓库分支

git branch -d dog (未合并不能删)

git branch -D dog (强制删)

删除远程仓库分支

git push 远程仓库名 -d 分支名

还原分支(删除的是还未合并的分支)支

原理:分支只是一个指向某个Commit的指标,删除这个指标并不会使那些Commit消失

1记得删除分支时的commit贴纸

Deleted branch cat(was b2323b)

2重新创建分支用原来commit贴纸,以达到还原效果

git branch new_cat b2323b

标签

简介

Git可以给历史中的某一个提交打上标签,以示重要。

比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。

标签指的是某个分支某个特定时间点的状态

通过标签,可以很方便的切换到标记时的状态

什么时候用标签

通常开发软件时会完成特定的“里程碑”,如软件版号1.0.0或beta-release之类的,这时就很适合使用标签做标记

标签与分支有什么区别

标签与分支的区别是,分支会随着Commit而移动,但标签不会。

之前介绍过当Git往前推,进一个Commit时,它所在的分支会跟着向前移动。

而标签一旦贴上去不管Commit怎么前进,标签都会留在原来贴的那个位置上。

因此,分支可以看成是“会移动的标签”

常用命令

列出已有标签:git tag

查看标签信息:git show 标签名

创建标签:git tag 标签名

标签推送远程仓库:git push 远程仓库名 标签名

检出标签:git checkout -b 分支名 标签名【某个标签那个版本的东西全放在一个分支里新建一个分支,指向某个tag】

删除本地标签:git tag -d标签名

删除远程标签:git push 远程仓库名 :refs/tags/标签名

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

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

相关文章

力扣Hot100-543二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root [1,2,3,4,5] 输出&a…

【Vue】权限控制

权限管理 分类: 页面权限功能(按钮)权限接口权限 vue3-element-admin 的实现方案 一般我们在业务中将 路由可以分为两种,constantRoutes 和 asyncRoutes。 constantRoutes: 代表那些不需要动态判断权限的路由,如登录页、404(或…

Skywalking 入门与实战

一 什么是 Skywalking? Skywalking 时一个开源的分布式追踪系统,用于检测、诊断和优化分布式系统的功能。它可以帮助开发者和运维人员深入了解分布式系统中各个组件之间的调用关系、性能瓶颈以及异常情况,从而提供系统级的性能优化和故障排查。 1.1 为…

嵌入式初学-C语言-八

#接嵌入式初学-C语言-七# 分支结构 分支结构&#xff1a;又被称之为选择结构 选择结构的形式 多分支 语法&#xff1a; if(条件1) { 语句1; } else if(条件2) { 语句2; } ... else { 语句n1; }案例&#xff1a; #include <stdio.h> int main() { // 需求&#xff…

Apache、nginx

一、Web 1、概述 Web&#xff1a;为⽤户提供的⼀种在互联⽹上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联⽹服务&#xff0c;这些服务包括信息浏览服务&#xff0c;以及各种交互式服务&#xff0c;包括聊天、购物…

线程的同步互斥

互斥 互斥保证了在一个时间内只有一个线程访问一个资源。 先看一段代码&#xff1a;三个线程同时对全局变量val进行--&#xff0c;同时val每自减一次其线程局部存储的全局变量 #include <iostream> #include <thread> #include <vector> #include <uni…

Stable Diffusion WebUI本地环境搭建

一、项目代码下载 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 二、环境配置 conda create --n stafu python3.10.6 实际上跟自己创建的环境没有关系&#xff0c;项目启动会自动复制这个环境&#xff0c;之后项目根据这个基础环境构建 也可以在自己…

C++高性能通信:图形简述高性能中间件Iceoryx

文章目录 1. 概述2. 支持一个发布者多个订阅者2.2 Iceoryx为何不支持多个发布者发布到同一个主题 3. Iceoryx的架构和数据传输示意图3.1 发布者与订阅者的通信机制3.2 零拷贝共享内存通信机制 4. 使用事件驱动机制4.1 WaitSet机制4.2 Listener机制 5. 已知限制6. 参考 1. 概述 …

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ 报错解决办法

1.查找 libstdc.so.6* find / -name libstdc.so.6*2.copy一个libstdc.so.6.0.19到/usr/lib64/下 cp /usr/lib64/libstdc.so.6 /usr/lib64/3.创建软连接 ln -sf /usr/lib64/libstdc.so.6.0.31 /usr/lib64/libstdc.so.6完毕&#xff01;

中电金信:云原生时代IT基础设施管理利器——基础设施即代码(IaC)

在数字化转型、零售业务快速发展、信创建设驱动下&#xff0c;应用架构、技术架构、基础架构都已向云原生快速演进&#xff0c;银行业IT基础设施管理产生了非常大的变化&#xff0c;当前银行业&#xff0c;正在开展新一轮的核心应用系统重构、基础平台统一建设等重点任务&#…

Linux网络:传输层协议TCP(二)三次挥手四次握手详解

目录 一、TCP的连接管理机制 1.1三次握手 1.2四次挥手 二、理解 TIME_WAIT 状态 2.1解决TIME_WAIT 状态引起的 bind 失败的方法 三、理解CLOSE_WAIT状态 一、TCP的连接管理机制 在正常情况下, TCP 要经过三次握手建立连接, 四次挥手断开连接 1.1三次握手 三次握手顾名思…

【设计模式】代理模式详解

1.简介 代理模式是常用的Java设计模式&#xff0c;该模式的特点是代理类与委托类共享相同的接口。代理类主要负责预处理消息、过滤消息、将消息转发给委托类&#xff0c;并在事后处理消息等。代理类与委托类之间通常存在关联关系&#xff0c;一个代理类对象与一个委托类对象关…

SpringBoot Mysql->达梦8 activiti6.0.0 项目迁移

全部源码&#xff1a;公众号搜索资小库&#xff0c;回复dm获取源码 1.整合达梦 1.1 达梦驱动下载 MyBatis-Plus 框架 | 达梦技术文档 (dameng.com) 1.2 数据迁移 怎么安装数据库&#xff0c;很多大佬有帖子&#xff0c;搜一下达梦先建立用户&#xff0c;使用DM管理工具 链…

SQL Server 数据误删的恢复

在日常的数据库管理中&#xff0c;数据的误删操作是难以避免的。为了确保数据的安全性和完整性&#xff0c;我们必须采取一些措施来进行数据的备份和恢复。本文将详细介绍如何在 SQL Server 中进行数据的备份和恢复操作&#xff0c;特别是在发生数据误删的情况下。假设我们已经…

使用visual studio编译C++项目时无法找到 enum中的某些项

vs 2017 编译一个cocos2dx 的老项目时&#xff0c;报错&#xff1a; 在项目中搜索关键字 ARMATURE_LOOP_COMPLETE&#xff0c;发现在文件EventType.h中是有定义的&#xff0c;是 enum Event 的一项&#xff0c;而且确认了报错的文件已经引入了这个头文件&#xff1a; 这太奇怪了…

傻瓜式PHP-Webshell免杀学习手册,零基础小白也能看懂

项目描述 一、PHP相关资料 PHP官方手册&#xff1a; https://www.php.net/manual/zh/ PHP函数参考&#xff1a; https://www.php.net/manual/zh/funcref.php 菜鸟教程&#xff1a; https://www.runoob.com/php/php-tutorial.html w3school&#xff1a; https://www.w3school…

【React】全面解析:从基础知识到高级应用,掌握现代Web开发利器

文章目录 一、React 的基础知识1. 什么是 React&#xff1f;2. React 的基本概念3. 基本示例 二、React 的进阶概念1. 状态&#xff08;State&#xff09;和属性&#xff08;Props&#xff09;2. 生命周期方法&#xff08;Lifecycle Methods&#xff09;3. 钩子&#xff08;Hoo…

Spring Cloud微服务项目统一封装数据响应体

在微服务架构下&#xff0c;处理服务之间的通信和数据一致性是一个重要的挑战。为了提高开发效率、保证数据的一致性及简化前端开发&#xff0c;统一封装数据响应体是一种非常有效的实践。本文博主将介绍如何在 Spring Cloud 微服务项目中统一封装数据响应体&#xff0c;并分享…

ValueError: invalid literal for int() with base 10: ‘a‘

ValueError: invalid literal for int() with base 10: ‘a‘ 目录 ValueError: invalid literal for int() with base 10: ‘a‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff…

基于web3区块链的名酒资产数字化、个人闲置资产收藏系统,实现联盟链、NFT数据上链、智能合约开发

系统背景&#xff1a; 国内有众多历史悠久却极具收藏价值的名酒品类&#xff0c;但是传统名酒投资存在着保真、流通和收藏三大痛点&#xff0c;极大影响了名酒产业的发展。基于区块链的分布式、不可篡改、可追溯、透明性、多方维护、交叉验证等特性&#xff0c;数据权属可以被有…