GIt详解

server/2025/2/7 13:07:27/

一:GIT概述

1.Git是目前世界上最先进的分布式文件版本控制系统(没有之一)
版本控制 所谓的版本控制就是将一组文件的改动记录下来,形成版本历史,以便需要时恢复
2.GIT作用
1.代码共享
每位开发者可以使用 Git 将自己的代码上传到云服务器上,同时使用 Git 还可以将其他人上传的
代码下载到自己的电脑上,这样就实现了代码共享
2.回溯版本
在开发的过程中其实还会越到各种奇葩问题,比如自己心血来潮写了一段超级牛 × 的代码,本
着闲着也是闲着的思想,在这段代码的基础上又进行了调优,但是优没调成,代码还给整的不
能用了。鉴于马上要要交活了,这个时候就打算放弃,但是你发现原来能用的代码已经被改的
面目全非,不能用了,那这就太让人崩溃了。这个时候就幻想着如果这两小时什么事情都没有
发生该多好,如果能时间倒流该多好。 Git 告诉你,这事我能做。 Git 除了可以帮我们保存代
码,还可以保存每次上传的痕迹,每上传一次就做一次备份,上传 3 次就备份 3 次,每次备份
就相当于一个版本,任意时间可以通过 Git 查询曾经提交过的每一个版本对应的内容,这样就
可以随时恢复到之前任意上传时间对应的状态了

二:GIT相关概念 

工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage index 。一般存放在 .git 目录下的 index 文件( .git/index )中,所以我 们把暂存区有时也叫作索引(index )。
版本库:工作区有一个隐藏目录 .git ,这个不算工作区,而是 Git 的版本库。

2.GIT下载

以下是官网地址:

下载地址:https://git-scm.com/download 

一直next即可

 安装完成后随意打开一个文件右键出现下图,即可视为成功

在这里 我们需要点击 Git Bash Here 打开命令界面,如下图:

三:GIT常用命令 

1.初始化工作区:

命令 git init   初始化

2.查看状态:

命令:git status 查看状态

红色代表当前没有提交到缓存区

3. 工作区提交缓存区:

命令:git add 文件名

在使用 git status 如果文件变成绿色,表示可以提交到本地仓库

4.缓存区提交本地仓库:

命令 : git commit -m '第一次提交'
说明 :-m 后面跟随的是为你提交的备注,建议不要乱写(例如aaa,bcd等)。
注意:如果是第一次提交
命令 : git config --global user.email '58948428@qq.com'
说明 : 指定邮箱
命令 : git config --global user.name 'Shuwq'
说明 : 指定操作者

拓展:

添加多个文件 git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录 git add [dir]
添加当前目录下的所有文件到暂存区 git add .
add 时,一个个文件加比较麻烦,可以用下面的命令将所有变动同步至暂存区(新增、修改、删除)
git add -A
下面的命令是将所有修改和删除同步至暂存区,不包括新增
git add -u

 5.工作区暂存区比较:

命令 : git diff 文件名

 6.工作区本地库比较:

命令 : git diff HEAD 文件名

7.暂存区本地库比较

命令: git diff --cached 文件名

8.查看日志:

 命令: git log 查看当前提交日志

注意:

log 中,每一个版本的前面, 都有一长串随即数字
b44a10787c2b2bcc7ceb9c39cf06309065518d4b ,这是每次提交的 commit id ,这是通过 SHA1 算法
得到的值, Git 通过这个唯一的 id 来区分每次提交

9.回退到指定版本:

1. 

命令 : git reflog 查看所有操作
注意:使用此命令时,出现在文件最前面的即为版本号
2.
命令 : git reset --hard <版本号> 回退到指定版本

 10.工作区撤销修改:

命令 : git checkout -- <文件名称> 撤销工作区修改

11.撤销到工作区:

命令: git reset HEAD  撤销到文件名区 

12.小结:

初始化工作区 git init
查看状态 git status
提交
工作区提交暂存区 git add 文件
暂存区提交本地库 git commit -m
差异比较
工作区缓存区比较 git diff 文件名
工作区本地库比较 git diff head 文件名
缓存区与本地库比较 git diff --cached 文件名
版本回退
查看日志 git log
回退到上一个版本 git reset --hard head^
查看所有操作日志 git reflog
回退到指定版本 git reset --hard 版本号
修改撤消
工作区撤消 git checkout
缓存区撤消到工作区 git reset head 版本号

四:分支地操作 

分支概念:

分支就是多次提交串起来的一条线

 分支操作命令:

1.创建分支:

命令 : git branch dev 创建 dev 分支

2.切换分支:

命令: git checkout dev 切换dev分支 

3.合并分支:

命令: git merge dev 合并dev分支  

4.删除分支:

命令 git branch -d 分支名 

五:总结

使用命令行操作git,是最简单、最直接的方式,虽然现在有git的可视化工具,但要想掌握好git的使用,应该先从命令行入手,因为可视化工具的本质,依然是命令行的包装,掌握好命令行,有助于加深理解每一步命令操作的变化,然后再转向各种可视化工具就像如鱼得水般简单了。 


http://www.ppmy.cn/server/9236.html

相关文章

[Leetcode]用队列实现栈

1.用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回…

MATLAB使用速成 第一章(MATLAB入门)

一、MATLAB的命令窗口 1、窗口概览 2、一些基本使用 &#xff08;1&#xff09;在输入一条命令&#xff08;或者说表达式&#xff09;并按下回车后&#xff0c;窗口往往会输出操作结果&#xff08;这不是必然的&#xff0c;有些命令&#xff0c;比如clc&#xff0c;它并不会输…

故障诊断 | 小波变换机械设备外圈振动信号故障诊断

概述 小波变换(Wavelet Transform)是一种信号处理技术,可以在时间和频率上对信号进行分析。它在故障诊断领域中被广泛应用,包括机械设备的振动信号分析。 针对机械设备外圈振动信号的故障诊断,可以按照以下步骤进行: 数据采集:使用振动传感器等设备采集机械设备外圈振…

leetcode-寻找重复数

287-寻找重复数 https://leetcode.cn/problems/find-the-duplicate-number/description/?envTypestudy-plan-v2&envIdtop-100-liked给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存…

告别数据丢失,轻松掌握文件自动备份秘籍

在这个数字化高速发展的时代&#xff0c;我们的工作和生活都离不开电脑&#xff0c;而电脑中存储的文件和数据更是至关重要。然而&#xff0c;数据丢失的风险无处不在&#xff0c;可能因为硬件故障、软件崩溃、病毒攻击等原因而导致重要文件丢失。因此&#xff0c;文件自动备份…

记录flume运行时报NullPointerException异常

【背景说明】 我要起一个将kafka上的topic_log主题中的数据上传到hdfs上的flume进程。 这是我的flume配置文件脚本&#xff1a; #定义组件 a1.sourcesr1 a1.channelsc1 a1.sinksk1#配置source1 a1.sources.r1.type org.apache.flume.source.kafka.KafkaSource a1.sources.r…

【Interconnection Networks 互连网络】Torus 网络拓扑

1. Torus 网络拓扑2. Torus 网络拓扑结构References 1. Torus 网络拓扑 Torus 和 Mesh 网络拓扑&#xff0c;又可以称为 k-ary n-cubes&#xff0c;在规则的 n 维网格中包裹着 N k^n 个节点&#xff0c;每个维度都有 k 个节点&#xff0c;并且最近邻居之间有通道。k-ary n-c…

【银角大王——Django课程Day1】

Django框架第一课 安装Django框架方式一&#xff08;命令行的形式创建Django项目&#xff09;方式二&#xff08;适合企业版的pycharm&#xff09;默认文件介绍app文件介绍快速上手我的导包一直爆红是因为我没使用解释器&#xff0c;没导入包&#xff0c;去设置里面导入包即可—…