git(版本控制)详细解说【工作必备技能】

news2024/11/15 18:44:03

Git

1 什么是Git

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git官网:   Git

历史版本

git小故事:

2 版本控制分类安装

1 本地版本控制:

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件。

2 集中版本控制:

所有的版本数据都保存在服务器上,协同开发者做修改和保存。代表产品 SVN

有问题: 可能服务器故障或者损坏,会丢失数据,丢失历史文件。

3 分布式版本控制: Git

所有版本信息仓库

3.1 Git安装下载

git官网   Git

下载较慢: 可以用 国内镜像. 可百度.

 http://npm.taobao.org/mirrors/git-for-windows/

下载 一个版本。 下一步 一直安装。

安装成功会在 安装目录中 有 git的图标以及相关的程序。

安装选项配置:

也可以一直  无脑下一步。

git Bash:    Unix与 Linux风格的命令行,使用多,推荐。

git cmd:    windows风格的命令号

Git  GUI:   图形化界面的 Git, 不建议使用

可以右键打开 Git, 也可以通过鼠标 滚轮 去调整大小。

3 基本的 linux 命令

tab 命令补全

1 ls命令

就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。 有颜色区分

2  cd 命令

cd(changeDirectory) 命令语法: 到某个目录

cd .. 回到上一目录

cd  D:

3  pwd命令

pwd 命令用于查看当前工作目录路径。

4  mkdir 命令

mkdir 命令用于创建文件夹。

在当前目录下创建文件夹:   mkdir  tt

创建连环文件夹:  mkdir  -p  cc/aa/dd

5 rm 命令

删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

删除文件:  rm  a.txt

删除目录:  rm  –r  aa

 

6   touch命令

新建一个文件,

如:  touch  a.txt

7 mv 命令

移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。

当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。

mv  a.txt  D:/ceshi  移动文件 和修改名字,可以反复测试。

8  clear 清屏

Linux 常用命令学习 | 菜鸟教程

4 Git的环境配置:

查看配置:  git  config  -l  

对应文件在:  D:\D\Git\Git\etc\gitconfig

查看系统配置: git config –system  --list

查看用户自己配置的: git  config  --global  --list   (新用户报错,没有配置,要配置用户名,密码)

设置用户名和密码:

执行一下命令初始化配置信息即可:

--global 这是设计系统级别 ,如果不带global,设计项目级别,在该项目系统级别有效。

作用:主要是为了区分不同的开发人员。

设置git的用户签名。必须设置。

配置用户名:git config --global user.name "输入你的用户名"

git config --global user.name lpc

配置邮箱信息:git config --global user.email "输入你的邮箱信息"

git config --global user.email 3487135834@163.com

git并不会验证你的邮箱

注意: 用户签名和将来登录 github和 码云没有任何关系。只是为了标识你是谁?

15 Git 的工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

Git 的工作区  暂存区 和版本库

我们先来理解下 Git 工作区、暂存区和版本库概念:

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

 git一般执行的流程:

1 在工作目录添加,修改文件

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

git  add  [file  name]

撤销从  暂存区中管理的文件  git rm --cached aa.txt

3 将暂存区的文件提交到 git本地仓库  

git  commit –m  “commit message” [file name]

所以: git文件的三种状态: 已修改(modified),以暂存(staged),已提交(committed)

如果推送到远程仓库,  用 push命令。

5.1 Git创建仓库

git创建仓库的方法有两种:

1 创建本地全新仓库

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

该文件是一个隐藏文件。

2 克隆远程仓库:

Git文件的状态:

·  
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged

·  Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

·  Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

·  Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

5.2 查看文件状态:

1 #查看指定文件状态

2 git status [filename]

3 

4 #查看所有文件状态

5 git status

6 

7 #精简的方式显示文件状态

8 git status -s

5.3 git操作

在Git的workspace hello 文件夹中测试:

  1. git status
  2. 新建文件 hello

git  add .    或者 git add 文件名

git add . 会把本地所有untrack的文件都加入暂存区

如果是把暂存区中的文件撤回为 工作区:

  1. 提交暂存区中的内容到本地仓库
  2. git commit -m "第一次提交",

5.4 git的操作日志.

回退命令:

$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard  commit_id 退到/进到 指定commit的sha码

git reflog 常用于恢复本地的错误操作。

git reset --hard 3860ecf

git  log可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作 ,详细的日志

git reflog是显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退。精简版本的日志   用HEAD指针管理。

git reflog常用于恢复本地的错误操作。

场景:我们commit了一个操作,发现提交的是错误的,我们进行了回退,git reset HEAD^,也进行了checkout 操作,就是把工作区的文件也回退还原了,这时候发现commit的没有问题。等于说删了不该删的了,咋整,想再回退到删除之前的。找到之前的版本号进行回退,使用git log发现那个提交的版本号记录根本不存在了。

可以观察自己仓库中的:  .git目录下面的  HEAD 和 ref 中的 heads 的master

  1. Git的分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

分支的好处是: 同时推进多个功能的开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会影响其他分支的开发,失败的分支删除重新开始即可。

6.1 分支的基本操作

分支操作的命令:

git  branch dev   创建一个开发分支

git  branch –v  查看现在有哪些分支

修改分支之后,要添加到暂存区,提交到本地库。

在主分支的位置上,合并 开发分支。

分支正常 合并,前面的命令够用。

  1. 冲突合并

在分支合并中,两个分支在同一个文件的同一个位置都做了修改。Git无法决定使用哪一个,必须的认为决定使用哪一个分支。

演示:

在主分支上添加 一行,保存,提交。

切换到dev分支,在dev分支上同一位值写一行,保存,提交。

切换到主分支。用主分支合并dev分支。

看结果。

看真实文件。手动解决。

解决之后,  添加   提交就行。 不要加文件名。

7 Git团队协作机制

7.1 团队内协作

7.2 跨团队协作

8 Git的远程仓库

8.1 远程仓库的种类

git远程仓库有 gitbub, 码云, GitLab等

GitLab  地址The DevSecOps Platform | GitLab   ,用于仓库管理的的开源项目,一般用在企业,学校内部网络,自己搭建git私服。

重点操作: 码云。

  1. 码云: 

进入码云的官网,注册信息。

9.1 绑定QQ。

9.2 创建仓库

9.3 设置本机绑定 SSH 公钥,实现免密码登录.

  1 找到 ssh目录,  .ssh

如果没有.ssh目录,可以自己建一个。

  2  ssh-keygen  -t  rsa

用该指令之后,一路回车。不用输入

有对应的两个文件,

把生成的公钥 贴近码云中。  public 文件

 

验证成功之后,可以用码云创建一个自己的仓库。

可以验证是否连通gitee

ssh –T git@gitee.com

手写

ssh -t -p 22 git@gitee.com

9.4 本地文件推送到仓库中

本地库和远程库建立联系

gitee上新建空仓库的时候,有提示

cd existing_git_repo

git remote add origin https://gitee.com/lpcboy/lpcone.git

git push -u origin master

本地库 搞好,提交了之后push.

也可以:

git remote add origin https://gitee.com/lpcboy/lpcone.git

git push –set-upstream origin master

https://blog.csdn.net/jqwei2/article/details/93535543

9.44 好的操作

1 在 gitee上新建一个仓库。

2 建一个仓库,按没有仓库的操作。

如果已经有仓库按照,已有仓库的操作。

如果 让输入密码: 输入正确。 

如果用户名密码输入错误: 下一次还是错误的用户名密码。 Git是会保存用户名密码的。

在控制面板à  用户账户

删除即可,就会让你重新输入 密码。

操作就是正常的。

git add   git commit   git push

9.5 clone的形式 clone到本地。

https://gitee.com/lpcboy/helloone.git

克隆下来测试:

注意:一定要进入 git目录。

10 IDEA集成 git

新建一个 项目sb,

把远程copy下来的 git配置 copy进本项目中。

文件选中的状态.

git  add  .

可新建包,新建类 观察文件的颜色等。

可以提交到远程仓库  git push

也可以选中项目,提交.

第二种集成git的方式:

1 git中建好项目。

2.

3 导入到版本管理器.

在idea中使用Git提交代码到远程仓库_qq_43179622的博客-CSDN博客

提交不上 解决方案:    

https://blog.csdn.net/snakemoving/article/details/79478947

过滤资源文件夹,哪些可以不用提交。

11 IDEA集成Git  New

11.1 在idea中配置Git

配置git的安装目录,给Idea.

11.2 在码云中创建仓库

创建一个仓库就行。勾选的协议什么的可以不勾选。

记录SSH地址: https://gitee.com/lpcboy/lpcgit.git

11.3 建一个和码云中一样的项目

11.4 .gitignore的常用配置

https://www.cnblogs.com/haojile/p/13326536.html

把 .gitignore 放入项目跟目录下面。

11.5 把该项目变成git仓库

选中项目,然后 git管理该项目。

直接提交就好,过滤文件过滤了不用的配置。

11.6 提交到远程仓库

如果需要输入密码: 输入密码即可。

12 从远程仓库中下载代码

输入git的 ssh 地址。

协同开发的时候 ,永远 先 pull , 再push。

同时提交同一块代码 会冲突.

13 分支操作

1 创建分支:

dev

2 在分支上开发代码,提交到远程仓库。

3 把分支上的代码 合并到 主分支

1 切换到主分支 ,master àcheckout

2 站在主分支的角度,合并代码到本地

3 远程仓库

本地选中,push上去。

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

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

相关文章

轻松白嫖GPT-4,已经标星38K,不再害怕高昂的AI模型费用!

文章目录 白嫖GPT-4当前可白嫖站点 白嫖GPT-4 计算机专业学生xtekky在GitHub上发布了一个名为gpt4free的开源项目,该项目允许您免费使用GPT4和GPT3.5模型。这个项目目前已经获得了380000颗星。 开源地址:https://github.com/xtekky/gpt4free 简而言之&a…

软件开发:面向对象设计的七大原则!

七大原则 开闭原则、里氏代换原则、迪米特原则(最少知道原则)、单一职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则。 开闭原则(The Open-Closed Principle ,OCP) 开闭原则:软件实体&#xff…

隐马尔科夫模型

隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model, HMM)可以由观测序列推断出概率最大的状态序列. HMM中的变量可分为两组: 状态变量(隐变量): { y 1 , y 2 , . . . , y n } \left \{ y_{1},y_{2},...,y_{n}\right \} {y1​,y2​,...,yn​};序列标注问题中的标注. 观察变量…

《Python程序设计与算法基础教程(第二版)》江红 余青松 课后选择题 课后填空题答案

目录 第一章一、选择题二、填空题 第二章一、选择题二、填空题 第三章一、选择题二、填空题 第四章一、选择题二、填空题 第五章一、选择题二、填空题 第八章一、选择题二、填空题 第一章 一、选择题 Python语言属于 C A.机器语言 B.汇编语言 C.高级语言 D.以上都不是 在下列…

【python】数据预处理:分位数归一化 Quantile Normalization + INSCODE AI创作助手测试

文章目录 写在前面标准化/归一化python模块qnorm实现分位数归一化R代码实现分位数归一化分位数归一化 - NSCODE AI创作助手的回答*Q1:Quantile Normalization是什么?**Q2-1: 什么时候用Quantile normalization?**Q2-2: 什么时候做Quantile no…

VScode软件下载与中文设置

目录 一、下载软件 二、中文设置 一、下载软件 1.网站上下载 2.百度网盘链接下载 链接:https://pan.baidu.com/s/1PMhxaExwhurDVVPkkbbYmw?pwd507o 提取码:507o 就选择路径->同意许可->完成下载 二、中文设置 1.在左侧扩展图标中打开“EXT…

Linux - 第20节 - 网络基础(网络层)

1.IP协议 • IP协议全称为“网际互连协议(Internet Protocol)”,IP协议是TCP/IP体系中的网络层协议。 • 在主机通信的过程中,上层应用程序解决从应用层代码中获取数据并处理数据的问题,应用层解决的是读取完整报文、序…

Lion:Adversarial Distillation of Closed-Source Large Language Model

Lion:Adversarial Distillation of Closed-Source Large Language Model IntroductionMethodologyexperiment Introduction 作者表明ChatGPT、GPT4在各行各业达到很好的效果,但是它们的模型与数据都是闭源的。现在的主流的方案是通过一个老师模型把知识蒸馏到学生模…

明明开发薪资高,是这几点让我依旧选了测试...

不管是对刚毕业的大学生、工作几年的打工仔亦或者是久不入职场的老人来说,进入职场的方向都值得我们深思。 今天我就来解答下大家最常问的问题:开发和测试作为一个项目中很重要的角色,他们有什么区别呢? Python自动化测试&#x…

Benewake(北醒) 快速实现TFmini-S-IIC与电脑通信的操作说明

目录 1. 概述2. 测试准备2.1 工具准备2.2通讯协议转换 3. IIC通讯测试3.1 引脚说明3.2 测试步骤3.2.1 TFmini-S-IIC 与 PC 建立连接3.2.2 获取测距值3.2.3 更改 slave 地址 1. 概述 通过本文档的概述,能够让初次使用测试者快速了解测试 IIC 通信协议需要的工具以及…

Svn安装

目录 一. 软件环境 二. SVN服务端 1. yum安装svn 2. 查看安装的文件列表 3. 建立版本库 3.1 修改数据存储默认位置 3.2 使用svnadmin建立版本库 4. 配制 4.1 添加用户 4.2 配制读写权限 4.3 配制服务 5. 启动服务 5.1 停止服务 5.2 启动服务 5.3 拉取项目 三.…

Vivado下组合逻辑模块的仿真

文章目录 与门或门非门异或门同或门比较器半加器全加器乘法器数据选择器3-8 译码器三态门 组合逻辑电路的特点是任意时刻的输出仅仅取决于输入信号,输入信号变化,输出立即变化,其变化不依赖于时钟。 本文中的例子中模块名都是gate&#xff0c…

HSE健康安全环境管理,已成现代企业必备的一种管理工具

什么是HSE健康安全环境管理 HSE是英文单词Health,Safety,Environment的缩写,中文翻译就是健康、安全、环境管理的意思。HSE管理是一种科学、系统的企业管理方式,目的是为了以人为本,保障员工和环境的健康和安全&#…

express的使用(三) multer处理表单提交

个人博客 欢迎关注公众号:express的使用(三) multer处理表单提交 看前提示 本篇的主要流程是使用在前端提交一个文件,在nodejs编写的后端使用multer以及express进行接收,包括遇到的版本问题,如果是想要学习用body-parser、formidable、mul…

node.js版本与node-sass版本不一致解决

版本比较图 查看版本对比图: https://www.npmjs.com/package/node-sass node.js版本与node-sass版本不一致时npm install是可能会报错的。 安装对应版本 查看nodejs版本 CMD查看nodejs版本 node -v卸载不一致的node-sass npm uninstall node-sass安装指定版…

JAVA并发编程之锁应用

Java并发包是Java中提供的一个用于支持多线程编程的工具包。Java并发包提供了多种机制来控制线程的执行,保证线程的安全性和可靠性。下面我们将介绍Java并发包的使用方法,并给出示例。 synchronized public class SynchronizedDemo { ​private int v;…

华为云认证有什么?考试难不难?

最近几年华为云的市场占比越来越大,逐渐占据了我们生活中的方方面面,而且很多政企单位,也选择华为云作为合作伙伴,因此市场上也需要越来越多的华为云人才,早在几年前,华为云就已经推出了自己的人才认证系统…

条件随机场模型

条件随机场模型(Conditional Random Fields, CRF) 条件随机场是给定一组输入随机变量条件下,另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。线性链条件随机场,是输入序列对输出…

用 JavaScript 对抗 DDOS 攻击

继续趣事分享。 上回聊到了大学里用一根网线发起攻击,今天接着往后讲。 不过这次讲的正好相反 —— 不是攻击,而是防御。一个奇葩防火墙的开发经历。 第二学期大家都带了电脑,于是可以用更高端的方法断网了。但设备先进反而没有了 GEEK 的…

第十七章行为性模式—状态模式

文章目录 状态模式解决的问题反例 结构实例存在的问题使用场景 状态模式与策略模式的区别 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,它涉及算法与对象间职责的分配。行为型…