Git 安装和基础命令、IDEA 基础操作
目录
- 总结命令:
- 1、安装:
- 1、安装
- 2、配置环境变量:
- 2、Git操作:
- 1、初始化:
- 1、姓名邮箱:
- 2、初始化仓库:
- 3、工作区和暂存区分析
- 2、提交文件
- 3、查看版本库状态
- 4、安装小乌龟
- git不显示图标
- 5、查看提交日志
- 6、查看差异
- 7、版本回退
- 在这里插入图片描述
- 8、撤销修改
- 9、删除文件
- 在这里插入图片描述
- 10、分支管理
- 1、**查看分支**
- 2、**创建分支**
- 3、**切换分支**
- 4、分支合并
- 5、删除分支
- 3、远程仓库
- 1、创建gitee仓库
- 2、连接远程仓库
- 3、拉取gitee项目代码
- 4、IDEA操作
- 1、初始化仓库
- 2、添加 .gitignore 文件
- 3、上传
- 顺序:
总结命令:
工作区、暂存区、版本库(本地仓库)、远程仓库
工作区:项目代码放在自己电脑的文件夹,就叫工作区
【git add .】 把工作区的代码提交到暂存区
【git commit -m “” 】 把暂存区的代码提交到版本库
【git reset 】 回退版本
【git rm 】 删除文件
【git checkout – 文件名 】 来撤销这次的文件修改内容
【git checkout 】 切换分支
【git log 】查看日志
【git reflog】查看所有分支记录日志
【git status 】 查看状态
【git diff 】查看不同
【git push 】 推送
【git pull 】拉取
【git clone 】 克隆
【git branch 】创建分支
【git mergr 】合并分支
1、安装:
1、安装
https://blog.csdn.net/apple_53947466/article/details/123455014
https://blog.csdn.net/mukes/article/details/115693833
全部都是下一步,选择默认的

2、配置环境变量:

右键任意位置,在右键菜单里选择 Git Bash Here 即可打开 Git Bash 命令行终端。

安装成功:查看版本信息

2、Git操作:
1、初始化:
1、姓名邮箱:
配置用户姓名和邮箱,查看是否配置成功
个人信息,这两条命令只需要运行一次就可以了

2、初始化仓库:
用 git init 命令生成一个文件夹作为git的可以管理的仓库


修改下git的仓库位置

用快捷方式打开就可以,用鼠标右键打开就还是显示在桌面
快捷方式打开

鼠标右键打开

创建一个文件假设为项目的目录,然后交给git来进行管理。
提交文件

3、工作区和暂存区分析

2、提交文件
提交一个文件 git add 文件名
提交当前文件夹目录下的所有文件或者文件夹 git add .
把暂存区的文件提交到本地仓库 git commit -m “-m后面写提交的备注”
把多个文件或者文件夹提交到暂存区或者本地仓库
多次 add 是覆盖上去的,每次commit之前都可以先add下

3、查看版本库状态
查看版本库(本地仓库)状态
git status # 查看当前git版本库的状态(查看缓存区中的文件内容)

4、安装小乌龟
用来看文件图标
先安装第一个,然后安装第二个,第二个是用来修改语言的,只需要打开就可以了。
但是还没有变成中文的,先不理

git不显示图标
修改注册表,用来显示图标
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\

测试
创建文件–?号
提交到暂存区–+号
提交到本地仓库–√号

修改文件后,还没提交就会变成红色感叹号,查看状态如图

5、查看提交日志
git log 用来查看 git 提交记录
最近提交的信息显示最前面

简洁查看日志
git log 命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:
git log --pretty=oneline

显示日志漂亮一点
git log --graph --pretty=``format``:``'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'` `--abbrev-commit --

6、查看差异
就是查看文件修改了哪些内容
git diff # 查看不同版本之间的文件差异

git diff xx文件 单独查看某个文件修改了什么内容

7、版本回退
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git reset --hard HEAD HEAD表示回退到当前版本(相当于没变化)
git reset --hard HEAD^ 一个异或符号^表示上一个版本
git reset --hard HEAD^^ 两个个异或符号^表示上上一个版本
git reset --hard HEAD~10 HEAD~10表示回退到第前10个版本
git reset --hard 指定版本号 回退到指定版本号,git log 查看版本号

==================
把版本从第三版本回退到第一版本,那怎么把第一版本重新退到刚才的第三版本
可以根据版本后进行回退
问题:d文件有三个版本,我从第三版本回退到第一版本,然后用 git log 命令查看提交日志,可以只显示了d文件的第一代版本的id,这个时候我想要重新回到 第三版本,应该怎么弄。
答:有head 和 sort 的区别
head 是把暂存区和本地仓库和项目都一起回退,回退后之前的就找不到了。
日志多的话,可以用按键PgUp 和 PgDn上下翻页
按 Q 退出

8、撤销修改
a文件修改后还没有进行add和commit,
用命令 git checkout – 文件名 来撤销这次的文件修改内容

a文件修改后进行add,把文件从工作区add提交到暂存区后进行撤销操作。
结果就是撤销到暂存区后的状态

把a文件修改后commit到版本库(本地仓库),那么撤销后a文件的状态还是跟add在暂存区的样子是一样的
总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。
注意:
git checkout -- file 命令中的 -- 很重要,没有 -- ,就变成了**“切换到另一个分支”**的命令,我们在后面的分支管理中会再次遇到 git checkout 命令
9、删除文件
总结:
1、在工作区用鼠标右键删除一个文件,暂存区和版本库依然还有这个文件,需要进行add和commit,把暂存区和版本库里面的这个文件一并删除掉,才能保持工作区、暂存区和版本库三个地方数据一致
2、用 git rm 文件名 这个命令来删除文件,通过测试得出用命令删除文件,工作区和暂存区的文件会一起删除掉,但是版本库依然还有这个文件,只需要进行commit,让版本库也把这个文件给删除掉,就可以保持工作区、暂存区和版本库这三个地方的数据一致
如果发现自己删除错文件后,可以进行版本回退的操作。
我把文件b和文件c都删除了,然后通过命令回到上上个版本,就可以把b和c文件重新找回来了

1、直接鼠标右键把工作区的test文件删除掉后,暂存区和本地库还是有这个test文件的,需要进行add和commit,这样是为了工作区、暂存区和版本库数据保持一致,三个地方都把这个test文件给删除掉才算完整。

2、用git命令删除掉某个文件
用git命令把hello文件删除掉后,工作区和暂存区的hello文件就都没了,只需要进行commit把版本库的hello文件删除掉就行
3、测试在工作区用鼠标删除文件后,直接commit不进行add,会是什么结果。

测试前猜想:不进行add的话,工作区没有这个文件,暂存区还有这个文件,commit是把文件从暂存区提交到版本库,所以commit之后,暂存区和版本库依然有这个文件,只是工作区没有而已
测试后结果:
git ls-files 命令是用来查看暂存区中文件信息,查看后又没有d文件,跟所想的不一样

查看版本库的文件列表,也没有d文件
git ls-files --with-tree=HEAD

总结:鼠标右键删除掉文件后直接commit,好像三个地方都把文件删除掉了,但是这个情况我觉得不太对,先留着不理。
===================
我把工作区的c文件用鼠标右键删除掉,查看暂存区的文件列表,有c文件,正确

再查看版本库的文件列表
也有c文件,正确

然后我add把c文件删除的消息提交到暂存区,
然后可以看出add之后,暂存区的c文件也被删除了

然后查看版本库
因为还没有进行commit,所以版本库里面有c文件,也是正确的。

进行commit
可以看出版本库也把c文件删除掉了

==================
重新测试下把b文件用命令删除

然后查看暂存区和版本库有没有这个b文件,
按理说用命令删除的话,暂存区应该也删除了b文件,版本库还有这个b文件
**测试结果:**可以看出来,用命令删除b文件,工作区和暂存区的b文件都会同步删除掉,但是版本库不会,得进行commit才能把版本库的b文件也进行删除

进行commit之后,b文件也从版本库里面删除掉了

10、分支管理
Git 拥有强大的分支管理系统,且推荐在项目开发过程中大量的使用分支来解决各种项目中的问题
初始化仓库的时候,默认会有主分支master
1、查看分支

2、创建分支
处在master主分支来创建dev分支的时候,会把master的代码一并拷贝到dev分支里面去

3、切换分支

创建 + 切换分支:**git checkout -b
4、测试
删除dev分支的c文件,然后切换到主分支看c文件还在不在
(没有把dev合并到master之前,master主分支的c文件还是在的)


4、分支合并
现在功能写好了,要把dev合并到master主分支。
**将某分支合并到当前分支:**git merge
需求:把dev分支的代码合并到主分支master
需要把分支切换到主分支master,然后再执行 git merge dev 命令,
就是把某分支(dev)合并到当前分支(master)

切记不要合并错,合并的时候要切换到主分支。

5、删除分支
**删除分支:**git branch -d
先创建两个分支 dev1 和 dev2

在master删除 dev1

在dev2分支自己删除dev2
自己无法删除自己

切换到其他分支再来查看分支列表
发现dev2还在,没删除掉

原因:没注意到,在自己的分支不能删除自己

在其他分支成功删除dev2分支

总结:在自己的分支无法删除自己
提问:可以在dev分支删除主分支master吗?
测试:结果可以,可能是因为我还没有给分支加上权限限制

3、远程仓库
1、创建gitee仓库


2、连接远程仓库
git已经有仓库后执行的代码,在master位置连接仓库
到指定位置
cd existing_git_repo
连接
git remote add origin https://gitee.com/xxxxx/git-remote-warehouse.git
推送
git push -u origin "master"

连接远程仓库成功后,本地的代码文件也提交到远程仓库去了

3、拉取gitee项目代码
1、创建一个文件夹存放代码

2、复制仓库地址

3、在指定文件夹打开git,输入命令
git clone 下载地址


代码就成功拉取下来了

4、IDEA操作
1、初始化仓库
在项目的文件夹打开git,然后输入命令 git init 进行初始化,然后就会出现 .git 文件夹

2、添加 .gitignore 文件

.gitignore 文件,用来省略一些提交文件,无关紧要的文件
# Created by .ignore support plugin (hsz.mobi)
.gitignore# Operating System Files*.DS_Store
Thumbs.db
*.sw?
.#*
*#
*~
*.sublime-*# Build Artifacts.gradle/
build/
target/
bin/
dependency-reduced-pom.xml# Eclipse Project Files.classpath
.project
.settings/# IntelliJ IDEA Files*.iml
*.ipr
*.iws
*.idea
3、上传
输入 git add . 和 git commit -m “xxx” 把工作区的项目提交到暂存区和版本库。

把这个仓库的文件清空掉(清空仓库),然后把项目提交过去

复制命令
关联远程
git remote add origin https://gitee.com/xxxxxxx/git-remote-warehouse.git

推送到远程的主分支
git push -u origin "master"
push推送失败
文件超过100mb

//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID
//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID
//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID
选择撤销版本库和暂存区
顺序:
- 组员每次开发,都必须先 push 到自己的远程分支
- 每次对 master 分支做合并或推送之前,原地备份代码
- 组员(组长)确保自己分支的代码与 master 分支都没有错误以后,将本地 master 推送到远程
- 每天早上开发前,先切换到 master 分支,更新代码,确保是最新版本,如果有更新下来内容,同样先对整个项目进行备份,再切换到自己的分支,然后将 master 合并到自己的分支上
- 每个小组每天必须保证一份新的代码,即组员除了将代码提交到自己的分支以外,都必须再将自己的代码合并到master
- 再次强调,每次合并或推送前,都先对项目进行备份,避免操作不熟练导致出错后代码丢失


相关文章:
Git 安装和基础命令、IDEA 基础操作
目录 总结命令:1、安装:1、安装2、配置环境变量: 2、Git操作:1、初始化:1、姓名邮箱:2、初始化仓库:3、工作区和暂存区分析 2、提交文件3、查看版本库状态4、安装小乌龟git不显示图标 5、查看提…...
做一个最新版的淘宝客返利程序源码有多难?
我们都知道淘宝客返利程序成为了很多人的创业和赚钱的工具。这种程序允许通过推广淘宝商品来获得佣金。然而,你知道构建这样一个淘宝客返利程序有多难吗?今天我们就从最基本的API说起,现在我将介绍构建一个最新版淘宝客返利程序所需的关键API…...
day5:Node.js 第三方库
day5:Node.js 第三方库 文章目录 day5:Node.js 第三方库使用 Express.js 构建 Web 应用安装 Express第一个 Express 框架实例第二个 Express 框架实例Node.js 连接 MySQL查询数据插入数据更新数据删除数据使用 Express.js 构建 Web 应用 Express框架是Node.js生态系统中的一…...
如何正确停止线程?为什么 volatile 标记位的停止方法是错误的?
Java全能学习面试指南:https://javaxiaobear.cn 今天我们主要学习如何正确停止一个线程?以及为什么用 volatile 标记位的停止方法是错误的? 首先,我们来复习如何启动一个线程,想要启动线程需要调用 Thread 类的 start…...
pytorch nn.Embedding 读取gensim训练好的词/字向量(有例子)
最近在跑深度学习模型,发现Embedding随机性太强导致模型结果有出入,因此考虑固定初始随机向量,既提前训练好词/字向量,不多说上代码!! 1、利用gensim训练字向量(词向量自行修改) #…...
2.1.1BFS中的Flood Fill和最短路模型
1.池塘计数 农夫约翰有一片 N ∗ M N∗M N∗M 的矩形土地。 最近,由于降雨的原因,部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内,如果包含雨水,则用”W”表示,如果不含雨水,…...
Mysql 新增更新、删除新增、忽略
当主键或唯一键冲突时,Mysql可以进行更新、删除新增、忽略插入等操作。 1.更新 当主键或唯一键冲突时,可以指定更新内容。 INSERT INTO table_name (column_name, column_name, column_name) VALUES (column_value, column_value,column_value) ON DUPL…...
Node-模块系统的用法
题记 node.js模块系统的用法,以下是具体操作过程和代码 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。 一个 Node.js 文件就是一个模块,这…...
XSS攻击(1), 测试XSS漏洞, 获取cookie
XSS漏洞, 测试XSS漏洞, 获取cookie 一, 概念: XSS(Cross-Site Scripting), 跨站攻击脚本, XSS漏洞发生在前端, 依赖于浏览器的解析引擎, 让前端执行攻击代码. XSS其实也算注入类的攻击, XSS代码注入需要有JavaScript编程基础. 二, 目的: XSS(跨站脚本࿰…...
linux任务优先级
这篇笔记记录了linux任务(指线程而非进程)优先级相关的概念,以及用户态可以用来操作这些优先级的系统调用。 基本概念 调度策略 linux内核中的调度器为任务定义了调度策略,也叫调度类,每个任务同一时刻都有唯一的调…...
JVM内存模型概述
这里主要分为五大块,分别是:本地方法栈、方法区、java堆、程序计数器和java栈。其中重点是方法区、java堆和java栈。 下面就把各个区域的性质总结一下:(说明,下面的只是结论,没有详细的对各个内存块进行详细…...
【JavaEE】CAS -- 多线程篇(7)
CAS 1. 什么是 CAS2. CAS 伪代码3. CAS 是怎么实现的4. CAS的应用4.1 实现原子类4.2 实现自旋锁 5. CAS 的 ABA 问题 1. 什么是 CAS CAS: 全称Compare and swap,字面意思:”比较并交换“能够比较和交换 某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另…...
18-spring 事务
文章目录 1. xml和注解配置方式的对象2.spring事务传播特性3. 注解事务的初始化流程4. 创建事务信息流程图5. 事务回滚流程图 1. xml和注解配置方式的对象 2.spring事务传播特性 事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务,就新建一个事务…...
Qt窗体设计的布局
本文介绍Qt窗体的布局。 Qt窗体的布局分为手动布局和自动布局,手动布局即靠手工排布各控件的位置。而自动布局则是根据选择的布局类型自动按此类型排布各控件的位置,使用起来比较方便,本文主要介绍Qt的自动布局。 1.垂直布局 垂直布局就是…...
分布式锁 - 理论篇
一、为什么需要分布式锁 二、分布式锁实现 1.分布式锁演进 - 基本原理 我们可以同时去一个地方“占坑”,如果占到,就执行逻辑。否则就必须等待,直到释放锁。“占坑”可以去redis,可以去数据库,可以去任何大家都能访…...
复杂的菱形继承及菱形虚拟继承(详解)
复杂的菱形继承及菱形虚拟继承 复杂的菱形继承及菱形虚拟继承虚拟继承解决数据冗余和二义性的原理笔试面试题 复杂的菱形继承及菱形虚拟继承 单继承:一个子类只有一个直接父类时称这个继承关系为单继承 多继承:一个子类有两个或以上直接父类时称这个继…...
【快捷测试模型是否可以跑通】设置一张图片的张量形式,送入自己写的模型进行测试
文章目录 1. 1. import torch.nn as nn import torch from einops import rearrange, repeat from einops.layers.torch import Rearrange import torch.nn.functional as Fclass PreNorm(nn.Module):def __init__(self, dim, fn):super().__init__()self.norm nn.LayerNorm(…...
软考系列(系统架构师)- 2019年系统架构师软考案例分析考点
试题一 软件架构(架构风格、质量属性) 【问题1】(13分) 针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…...
安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…...
C++设计模式_08_Factory Method工厂方法模式
文章目录 1. “对象创建模式”模式1.1 典型模式 2. 动机(Motivation)3. 代码演示Factory Method工厂方法模式3.1 常规方法3.2 面向接口的编程3.2.1 FileSplitter1.cpp3.2.2 MainForm1.cpp 3.3 Factory Method工厂方法3.3.1 ISplitterFactory.cpp3.3.2 Ma…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...


