git 技术点整理

news2024/11/16 3:39:33

1.git安装

1.1官网下载

Git  

安装详情见https://www.cnblogs.com/liuwenwu9527/p/11688323.html

1.2配置

 

 

 

2.git基本概念

2.1本地

 工作区(Working Directory):就是你在电脑里能看到的目录。说人话就是idea直接能看到的这部分纯代码区域。(不含 .git 目录)

暂存区(stage):从物理位置上看隶属于本地库,是版本库中设立一个暂存区(Stage or Index)。从功能上逻辑来看,是工作去本版本库交互的中间人。工作区文件的提交或者回滚首选都是通过暂存区。

本地仓库,也叫版本库(repository):代码下载下来后隐藏的.git目录,这个目录不属于工作区。即又可以称为版本库。 Git的版本库里存了很多东西,其中最重要的有三个,一个就是称为stage的暂存区,第二个就是Git为我们自动创建的第一个分支master,第三个就是指向master的一个指针叫HEAD。

由此可见,事实上,如果只是个人开发,本地结构已经很够用了,完全能满足代码的提交,回滚,版本控制,等操作。

2.2远程

2.1.1 代码托管中心是干嘛的呢?

我们已经有了本地结构,本地结构可以帮我们进行版本控制,为什么还需要代码托管中心呢?

它的任务是帮我们进行团队协作和跨团队写作开发。

单一团队程序员之间协作

多团队程序员之间协作

 2.1.2 代码托管中心分类

局域网环境下:  可以搭建 GitLab服务器作为代码托管中心,GitLab可以自己去搭建

外网环境下:     可以由GitHub或者Gitee作为代码托管中心,GitHub或者Gitee是现成的托管中心,不用自己去搭建 

3.git常用操作

3.1向远程提交代码

我们将文件往Git版本库里添加的时候,是分两步执行的:

        第一步,代码提交到本地仓

                1.git add 文件,文件从工作区添加到暂存区

                2. git commit -m  文件 ,文件从暂存区提交到本地仓的当前分支上去。(因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。简单来说,就是add的文件全部放到暂存区,然后commit一次性提交暂存区的所有修改)

        第二步,将本地仓库的修改Push到远程仓库

                 git push <远程主机名> <本地分支名>:<远程分支名>   

    

 3.2不同阶段的代码回退

3.2.1 reset命令:前进或者后退历史版本

举例

 hard参数/mixed参数/soft参数

hard参数

说人话就是执行了git reset --hard 某个commit提交的索引后本地的代码也就没了,变成了该索引对应的那个快照的代码。如果本地代码不要了,直接就hard就行。

 mixed参数

 说人话就是,执行git reset --mixed 某次commit的索引后,本地代码还是当前代码,但是暂存区和本地仓(版本库)中已经是该索引对应的快照代码了。

soft参数 

 说人话就是,执行git reset --soft 某次commit的索引后,本地代码还是当前代码,暂存区也是本地代码,只是本地仓(版本库)中已经是该索引对应的快照代码了。

 3.2.2 reset使用场景

假如你修改了工作区,并把工作区中的修改 git add 到了暂存区。如果你想撤销工作区和暂存区中的修改。

git reset --hard head # 简写为 git reset--hard

如果你仅仅只是想要撤销暂存区中的修改。

git reset --mixed # 简写为 git reset

注意,由于没有进入版本库,只是撤回暂存区,所以 hard 后面不用根header~n ,header^ 

假如你修改了工作区,并把工作区中的修改 git add 到了暂存区,然后又 git commit 提交到了版本库。

如果你想回退到上一个版本,可以使用下面的命令。

具体的解决方法有: git reset --hard head^  或  git reset --hard HEAD~1 ,这样本地代新写的代码被重置了,暂存区也回退

注意:

             1如果你回退版本时,采用的是 『 git reset --mixed 版本号 』,--mixed 其实本来就是默认选项。

            那么,你只是更改了 head 的指向和回退了暂存区,而并没有回退工作区。

             2如果你回退版本时,采用的是 『 git reset --soft 版本号 』,

            那么,你只是回退了本地仓的版本号,暂存区和工作区没回退。

而,往往我么回退的场景就是代码提交到本地仓了,发现有问题,

        这个时候,1要去回退,让本地仓不出现有问题代码,2是不想把本地代码清零了,因为要在这个基础上修改。

        所以,一般采用git  reset --soft HEAD "版本号"的方式。为啥不用git reset --mixed 呢,好想也行

 假如你修改了工作区,并把工作区中的修改 git add 到了暂存区,然后又 git commit 提交到了版本库,并将本地分支的代码推上了云端。

如果你想撤销刚push到云端的代码,可以按以下步骤:

1.回退本地分支代码到上个版本 git reset --hard head^

2.将本地分支push到云端进行覆盖  git push origin wlb:master -f  

我在想最好是不是git reset --soft head^    git push origin wlb:master -f ,因为这样既达到效果,又不重置本地代码

另外,可见远程的代码只能覆盖,不能撤回。

 3.2代码拉取

3.2.1 fork项目


在github或gitee页面上, 点击fork按钮, 将B的项目拷贝一份到A自己的代码仓库中.

3.2.2 clone项目,并添加远程项目路径

克隆A自己的代码仓库到本地.

git clone https://github.com/A/A.git


3.2.3查看项目远程仓库配置,如果没有源的地址则新增

git remote -v


3.2.4 添加源项目地址


将B的项目作为最新代码的参考标准(upstream 是上游仓库的别名,别名随意命名)

 git remote add upstream https://github.com/B/B.git


3.2.5确认是否添加成功

git remote -v


3.2.6 获取源项目的更新


git fetch upstream
 git remote add origin https://gitee.com/northeast-big-bared-flower/kd-osysteam.git

git pull

git push -u -f origin master

3.2.7 当自己fork的仓库更新时,需要

git fetch upstream

git merge upstream/master

3.3分支关系和切换

3.4日志

3.5冲突解决

3.6idea 使用git的场景

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

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

相关文章

基于51单片机的太阳追光系统设计

本实例是基于51单片机的太阳追光系统&#xff0c;主要硬件由51单片机最小系统&#xff0c;四路光敏感应电路&#xff0c;ADC0832转换电路、LED指示灯电路、X轴与Y轴步进电机构成。 设计功能 1.四路光敏感应电路&#xff1a;四路光敏电阻分别感应上、下、左、右四个方向的光强…

两组表单看懂MySQL的多表查询

第一组表单信息 1、查询每个部门的所属员工 mysql> SELECT name,GROUP_CONCAT(ename) persons-> FROM dept3 d-> LEFT JOIN emp3 e-> ON d.deptno e.dept_id-> GROUP BY d.deptno-> UNION -> SELECT name,GROUP_CONCAT(ename) persons-> FROM dept3 …

代码随想录算法训练营第六十天| 84.柱状图中最大的矩形

柱状图中最大的矩形 题目链接&#xff1a; 力扣 假设以柱子1&#xff08;指值为1的柱子&#xff09;为基准&#xff0c;柱子1的左侧没有比柱子1矮的元素&#xff0c;所以柱子1可以无限像左边扩展&#xff0c;柱子1的右侧也没有比柱子1矮的元素&#xff0c;所以柱子1可以无限向…

用OpenCV进行图像分割--进阶篇

1. 引言 大家好&#xff0c;我的图像处理爱好者们&#xff01; 在上一篇幅中&#xff0c;我们简单介绍了图像分割领域中的基础知识&#xff0c;包含基于固定阈值的分割和基于OSTU的分割算法。这一次&#xff0c;我们将通过介绍基于色度的分割来进一步巩固大家的基础知识。 闲…

如何提升问卷数据的有效性?

问卷调查法是收集数据的宝贵工具&#xff0c;可以为商业、社会科学和医疗保健等众多领域的决策过程提供真实可靠的数据信息。然而&#xff0c;问卷数据的准确性和可靠性是影响最终结论的关键因素&#xff0c;而他们取决于问卷设计和数据收集过程的质量。在本文中&#xff0c;我…

Coggle 30 Days of ML(23年7月)任务三:使用TFIDF提取文本特征

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务三&#xff1a;使用TFIDF提取文本特征 任务三&#xff1a;使用TFIDF提取文本特征 说明&#xff1a;在这个任务中&#xff0c;需要使用Sklearn库中的TFIDF技术来提取文本特征&#xff0c;将文本转化为可供机器学习算法…

数分面试题:赛马问题

问题一&#xff1a; 25匹马&#xff0c;一个赛道&#xff0c;每次可以跑5匹马&#xff0c;在没有计时器的情况下&#xff0c;怎么用最小的比赛次数知道最快的前三名 关键点&#xff1a;通过前面的比赛&#xff0c;排除掉没有悬念的马&#xff08;能确定有3匹马比它快的&#…

Iptables与Firewalld

Iptables防火墙 介绍 iptables和netfilter是一套Linux防火墙工具&#xff0c;共同合作完成系统防护工作。iptables 是一个包过滤防火墙&#xff0c;可以对包进行封装、过滤、重定向或者网络地址转换、地址伪装、透明代理、访问控制、连接跟踪等功能&#xff0c;iptables是一个…

4.6 x64dbg 内存扫描与查壳实现

LyScript 插件中默认提供了多种内存特征扫描函数&#xff0c;每一种扫描函数用法各不相同&#xff0c;在使用扫描函数时应首先搞清楚不同函数之间的差异&#xff0c;本章内容将分别详细介绍每一种内存扫描函数是如何灵活运用&#xff0c;并实现一种内存查壳脚本&#xff0c;可快…

Linux常用命令——exec命令

在线Linux命令查询工具 exec 调用并执行指定的命令 补充说明 exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中&#xff0c;可以调用其他的命令。如果在当前终端中使用命令&#xff0c;则当指定的命令执行完毕后会立即退出终端。 语法 exec(选项)(参数…

计算机组成原理32位MIPS CPU设计实验(指令译码器电路设计 、时序发生器状态机设计、时序发生器输出函数、硬布线控制器)

实验四 32位MIPS CPU设计实验 这次实验是32位MIPS CPU设计实验&#xff08;单总线CPU-定长指令周期-3级时序)&#xff0c;在头歌当中一共需要我们进行六道题的测试&#xff0c;分别为MIPS指令译码器设计&#xff0c;定长指令周期&#xff08;时序发生FSM设计&#xff0c;时序发…

数据结构05:树与二叉树[C++][哈夫曼树HuffmanTree]

图源&#xff1a;文心一言 考研笔记整理6k字&#xff0c;小白友好、代码可跑&#xff0c;请小伙伴放心食用~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画导图、画配图~&#x1f9e9;&#x1f9e9; 参考用书&#xff1a;王道考研《2024年 数据结构考研复习指导》…

一纸文书之MySQL的回忆录

MySQL要点学习&#xff1a;你可以在简历上说熟悉MySQL 什么是数据库&#xff1f;什么是数据库管理系统&#xff1f;什么是MySQL&#xff1f;什么是SQL&#xff1f;数据库数据库管理系统&#xff1a;SQL&#xff1a;结构化查询语言三者之间的关系 安装MySQL数据库管理系统MySQL常…

数据增强之裁剪、翻转与旋转

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 数据增强 Data Augmentation裁剪Croptransforms.CenterCroptransforms.RandomCroptransforms.RandomResizedCroptra…

【雕爷学编程】Arduino动手做(153)---2.4寸TFT液晶触摸屏模块7

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

TortoiseGit 入门指南02:创建和克隆仓库

图标 本节讲解如何使用 TortoiseGit 创建和克隆仓库。但在此之前&#xff0c;我们先来看下 TortoiseGit 软件的一个特色&#xff1a;图标。 TortoiseGit 会给 工作区 中的文件和文件夹叠加图标&#xff08;Icon Overlays&#xff09;&#xff0c;图标反应的是这些文件和文件夹…

跳表很难吗?手把手教你如何跳跃它!

文章目录 Ⅰ. 前言Ⅱ. 跳表&#xff08;skiplist&#xff09;1、什么是跳表2、跳表的发明历程3、跳表的搜索方式 Ⅲ. skiplist的算法性能分析1、理论准备2、性能分析&#xff08;了解即可&#xff0c;主要记结论&#xff09; Ⅳ. skiplist与平衡树、哈希表的比较Ⅴ. skiplist的…

【数字信号处理】线性调频Z(Chirp-Z,CZT)算法详解

CZT变换算法的引入 CZT算法的基本原理 注意:这里所要分析的复频谱点数为 M M M,这也是CZT变换之后的点数。

MySQL之DML和DDL

1、显示所有职工的基本信息&#xff1a; 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表&#xff0c;名为工作日期表。 …