[Git] Git下载及使用 从入门到精通 详解(附下载链接)

前言


目录

Git概述

简介

下载

Git代码托管服务

Git常用命令

Git全局配置

获取Git仓库

在本地初始化一个Git仓库

从远程仓库克隆

基本概念

工作区文件状态

本地仓库操作

远程仓库操作

分支操作

标签操作

在IDEA中使用Git

在IDEA中配置Git

本地仓库操作

远程仓库操作

分支操作


Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(java类、xml文件、html页面等),在软件开发过程中被广泛使用。

主要功能

  • 代码回溯
  • 版本切换
  • 多人协作
  • 远程备份

远程备份

选择从VCS获取,版本控制选择Git

在gitee中找到要打开的项目

点击克隆/下载

复制HTTP链接,粘贴到URL

点击克隆,即可完成远程备份

Git概述

简介

Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(java类、xml文件、html页面等),在软件开发过程中被广泛使用。通过Git仓库来存储和管理这些文件,Git仓库分为两种:

本地仓库:开发人员自己电脑上的Git仓库

远程仓库:远程服务器上的Git仓库

  • commit:提交,将本地文件和版本信息保存到本地仓库
  • push:推送,将本地仓库文件和版本信息上传到远程仓库
  • pull:拉取,将远程仓库文件和版本信息下载到本地仓库

下载

下载安装Git

Git-2.45.2-64-bit.zip夸克网盘打开
链接:https://pan.quark.cn/s/775662e9bfb2
提取码:kZ5U

下载解压后

 双击exe文件,之后一直点下一步即可

安装好之后右键点击exe,出现如下说明安装成功

Git GUI Here:打开Git图形界面

Git Bash Here:打开Git命令行

Git代码托管服务

Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?
我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
gitHub(地址:https://github.com/),是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
码云(地址:https://gitee.com/),是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub 码云速度会更快
GitLab (地址: https://about.gitlab.com/),是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
BitBucket(地址:https://bitbucket.org/),是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户

这里使用码云 Gitee

Git常用命令

Git全局配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。
在Git 命令行中执行下面命令:
设置用户信息

git config --global username "itcast"
git config --global user.email "itcast@itcast.cn"

查看配置信息

git config --list

注意:上面设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,此处可以任意设置,只是作为用户的标识。

获取Git仓库

要使用Git对代码进行版本控制,首先需要获得Git仓库。

获取Git仓库通常有两种方式:

  • 在本地初始化一个Git仓库
  • 从远程仓库克隆
     

在本地初始化一个Git仓库

获取Git仓库-本地初始化

执行步骤如下:

1.在任意目录下创建一个空目录(例如repo1)作为我们的本地Git仓库
2.进入这个目录中,点击右键打开Git bash窗口
3. 执行命令 git init
如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功

创建本地仓库

新建文件夹

在文件夹中右键打开Git的命令行窗口

输入代码

git init

在文件夹中出现git文件

从远程仓库克隆

可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地

命令形式:git clone [远程Git仓库地址]

新建一个文件夹

在文件夹中打开Git的命令行窗口

复制之前创建的仓库的地址

 在命令行输入

得到本地仓库

基本概念

版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.qit文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

工作区

————>

添加选择的改变

git add

暂存区

————>

提交改变

git commit

版本库

 在工作区创建一个.txt文件

打开Git命令行窗口

 -m后面是备注信息

lab7744是版本号

下面是发生的改变,insertion 新增了一个文件

工作区文件状态

Git工作区中的文件存在两种状态:

  • untracked未跟踪(未被纳入版本控制)
  • tracked 已跟踪(被纳入版本控制)

1) Unmodified 未修改状态
2) Modified 已修改状态
3) Staged 已暂存状态

文件的状态会跟随我们执行Git的命令发生变化

查看状态

同一个文件只用提交一次到暂存区,之后再进行修改直接提交到版本库,会把原来的删掉,将新提交的存进去

本地仓库操作

本地仓库常用命令如下:

  • git status      查看文件状态
  • git add          将文件的修改加入暂存区
  • git reset        将暂存区的文件取消暂存或者是切换到指定版本
  • git commit     将暂存区的文件修改提交到版本库
  • git log            查看日志

 再文件中新建2.txt

2.txt红色表示新建的文件或者被修改了

打开1.txt,修改试一下

将文件加入到暂存区,可以两个文件一起加

查看状态

reset 1.txt并查看状态

将1.txt重新放回暂存区

提交到版本库

查看日志

版本回溯

回到新增1.txt的版本

此时工作区中的2.txt消失了

指当前的版本

再回到有2.txt的版本

2.txt文件又出现了

远程仓库操作

远程仓库的操作包括:

  • git remote           查看远程仓库
  • git remote add    添加远程仓库
  • git clone              从远程仓库克隆
  • git pull                 从远程仓库拉取
  • git push               推送到远程仓库

查看

如果想查看已经配置的远程仓库服务器,可以运行git remote命令,它会列出每一个远程服务器的缩写,如果已经克隆了远程仓库,那么至少应该能看到origin,这是git克隆的仓库服务器的默认名字。

本地的仓库就是从远程仓库克隆过来的,已经和远程仓库关联了,所以第一个显示origin,第二个指令有显示

加上-v 可以显示仓库的详细地址

一个本地仓库对应一个远程仓库

再创建一个远程仓库

创建一个文件夹3

将3初始化为本地仓库

因为3刚刚创建,还没有关联远程仓库,所以执行命令git remote -v后,返回为空

将3与远程仓库关联

添加远程仓库,运行git remote add <shortname> <url> 添加一个新的远程Git仓库,shortname是远程仓库名字的简写。(仓库服务器的默认名为origin)

因为是先创建的本地仓库,所以需要先关联远程仓库

如果是从远程仓库克隆生成的本地仓库,就不需要关联远程仓库这一步了

克隆
如果想获得一份已经存在了的 Git 远程仓库的拷贝,这时就要用到 git clone 命令。

Git 克隆的是该 Git 仓库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。
克隆仓库的命令格式是:git clone [url]

推送
将本地仓库内容推送到远程仓库,可以使用命令:git push [remote-name] [branch-name]

远程仓库的名字 推送分支的名字

远程仓库origin 指定分支master

推送成功

新建文件夹4,用于拉取代码

复制项目地址

看到已经将远程仓库的代码下载到文件夹了

没有找到.git文件

可以看到.git文件再test文件下

使用cd test/进入test文件

使用git log查询版本信息

版本信息在.git中

4修改文件2.txt

将文件提交

git add . 将所有文件放到暂存区

git commit -m'' 将暂存区中的所有文件提交到版本库,这里是提交到自己的本地仓库,还没有提交到远程仓库

推送到远程仓库

从远程仓库克隆既包括了代码,又包含了版本信息

拉取

git pull 命令的作用是从远程仓库获取最新版本合并到本地仓库,命令格式:git pull [short-name] [branch-name]

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatrefusing to merge unrelated histories )
解决此问题可以在git pull命令后加入参数--allow-unrelated-histories

在文件夹2中进行拉取

分支操作

分支是Git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过git init 命令创建本地仓库时默认会创建一个master分支。

会有一个指针head,用于指向当前分支
关于分支的相关命令:

  • git branch                                     查看分支
  • git branch [name]                          创建分支
  • git checkout [name]                      切换分支
  • git push [shortName] [name]        推送至远程仓库分支
  • git merge [name]                           合并分支
  • git hranch - d[name]                      删除分支

在文件夹2中进行演示 

*表示当前处于哪个分支

创建分支b1

切换到b1分支

创建文件3.txt

添加到暂存区,提交

再创建一个文件4.txt

提交

切换到master分支

看到刚才新建的两个文件3.txt 4.txt都不存在,说明b1分支的操作并没有影响master分支,两个分支是相互独立、互不影响

切换到b1分支

看到3.txt 4.txt又出现了

合并分支

将指定分支的代码合并到当前分支,所以先换到master分支

将b1分支的代码合并到当前分支

此时文件夹中文件为

将master分支的代码推送到远程仓库

将b1分支的代码推送到远程仓库

删除分支

创建分支b2

删除分支b2

git branch --help找到帮助文档

查看

  • git branch             列出所有本地分支
  • git branch -r          列出所有远程分支
  • git branch -a         列出所有本地分支和远程分支

标签操作

Git 中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。

标签相关的命令

  • git tag                                             列出已有的标签
  • git tag [name]                                 创建标签
  • git push [shortName] [name]          将标签推送至远程仓库
  • git checkout -b [branch] [name]      检出标签

当前文件夹中为

创建标签v1.0

新建文件5.txt  6.txt

提交到版本库

此时标签v1.0中没有5.txt和6.txt这两个文件

将标签推送到远程仓库

此时远程仓库中没有标签

git push origin 后面可以是分支名和标签名

再远程仓库可以看到新增的标签

可以对这个标签进行下载

打开后会发现这个文件中没有后来添加的5.txt和6.txt

再创建一个标签v2.0,并推送至远程仓库

从远程仓库中下载v2.0版本

打开后看到有5.txt和6.txt的文件

查看v1.0标签的文件,在此新建了一个分支bv1

文件如下

在IDEA中使用Git

在IDEA中配置Git

在IDEA中使用Git,本质上还是使用的本地安装的Git软件,所以需要在IDEA中配置Git

先退出项目,ctrl+alt+s打开设置,此时的设置是对所有项目有效

找到Git的版本控制,在Git可执行文件路径可以看到自动识别了Git的路径,点击测试,如果出现了Git的版本号就说明识别正确,如果没有就要自己手动设置Git可执行文件路径

点击确定,配置成功

创建一个项目,用来演示Git操作

本地仓库操作

在IDEA中使用Git获取仓库有两种方式:

本地初始化仓库

从远程仓库克隆

本地初始化仓库

点击创建Git仓库,在文件夹下可以看到出现了.git文件,说明本地仓库创建成功

本地仓库操作:

将文件加入暂存区

将暂存区的文件提交到版本库

查看日志

 将文件加入暂存区,选择添加

但是IDEA简化了操作,可以直接提交

选择提交文件

只需要提交源码必要的配置文件即可

.gitignore文件用来说明哪些文件不提交

# 默认忽略的文件

在文件中加一段注释信息

右侧会出现更改前后两端代码的对比

远程仓库操作

查看远程仓库

添加远程仓库

推送至远程仓库

从远程仓库拉取

分支操作

查看分支

创建分支

切换分支

将分支推送到远程仓库

合并分支

 右下角点击

可以看到分支

新建分支

提交并推送,此时是b1分支

可以看到现在有两个分支

切换分支

先拉取最新版本,再提交自己写的版本,因为可能别人在自己提交之前就提交了一个版本,造成自己现在的版本和最新的版本相差了几个版本,出现报错,所以应该先获取最新版本 

谁提交出现问题,谁改

本文根据黑马程序员的Git零基础入门所写

【2023最新Git快速入门,完整的git项目管理工具教程,git入门到精通!-哔哩哔哩】

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

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

相关文章

前端基础(三十九):撤消与重做

效果 源码 <button id"undo" onclick"onHistory(-1)">撤消</button> <button id"redo" onclick"onHistory(1)">重做</button><button onclick"operation(Operation 1)">操作1</button>…

蓝牙定位的MATLAB程序,四个锚点、三维空间

目录 程序描述 运行结果 程序描述 这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位&#xff0c;展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念&#xff0c;并通过三维可视化展示了真实位置与…

0.0.0.0 127.0.0.1等几个特殊的IP地址

0.0.0.0 127.0.0.1 localhost 255.255.255.0 255.255.255.255 这都是些什么地址&#xff0c;代表了什么意思。 网络为系统服务器&#xff0c;系统需要网络。 这些地址在系统和网络都存在&#xff0c;作用和意思甚至基本相同。 一、0.0.0.0 在路由中&#xff1a;0.0.0.0表…

用了这么久Java,您知道什么是装箱和拆箱吗?

Java中的装箱和拆箱 在Java中&#xff0c;装箱&#xff08;Boxing&#xff09;和拆箱&#xff08;Unboxing&#xff09;是自动类型转换过程&#xff0c;它们涉及到基本数据类型&#xff08;如int、double、char等&#xff09;和它们对应的包装类&#xff08;如Integer、Double…

2024年最新详解项目管理系统:让你从小白到高手的蜕变

一、项目管理系统的重要性 项目管理系统在当今企业中发挥着至关重要的作用。首先&#xff0c;在提高工作效率方面&#xff0c;它通过自动化任务分配、进度跟踪和文档管理等功能&#xff0c;大幅减少手动操作和沟通成本。例如&#xff0c;禅道提供了强大的任务管理功能&#xf…

Vue 脚手架学习

1.使用 Vue 脚手架 1.1 初始化脚手架 1.1.1 具体步骤 第一步&#xff08;仅第一次执行&#xff09;&#xff1a;全局安装vue/cli。 npm install -g vue/cli 第二步&#xff1a;切换到你要创建项目的目录&#xff0c;然后使用命令创建项目 vue create xxxx 第三步&#xff1a;启…

C盘一红就卡顿到不行?为什么呢?

前言 有小伙伴最近来咨询电脑卡顿问题&#xff0c;一开始小白还以为只是寻常的硬盘坏了&#xff0c;并没有多想。 直到我问清楚之后&#xff0c;才发现他的电脑卡顿是因为C盘快爆了…… 好家伙&#xff0c;一个100GB的C盘用到只剩下8GB左右的空闲空间&#xff0c;这电脑不卡…

【优选算法】(第三十二篇)

目录 ⼆进制求和&#xff08;easy&#xff09; 题目解析 讲解算法原理 编写代码 字符串相乘&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⼆进制求和&#xff08;easy&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCode&a…

大厂养不起大模型?

身处于观望期的大模型赛道&#xff0c;似乎任何风吹草动&#xff0c;都让市场有了不同以往的波动。 近日&#xff0c;摩根士丹利发布报告称&#xff0c;中国AI正在面临更大的变现问题&#xff0c;文中直接指出AI应用先行者业绩不及预期&#xff0c;金山办公和万兴科技在推出AI…

大数据存储计算平台EasyMR:多集群统一管理助力企业高效运维

随着全球企业进入数字化转型的快车道&#xff0c;数据已成为企业运营、决策和增长的核心驱动力。为了处理海量数据&#xff0c;同时应对数据处理的复杂性和确保系统的高可用性&#xff0c;企业往往选择部署多个Hadoop集群&#xff0c;这样的策略可以将生产环境、测试环境和灾备…

USB 概述及协议基础

文章目录 1 USB 是什么&#xff1f;2 USB 的特点3 USB 的拓扑结构4 电气特性5 USB 的线缆、插头及插座6 插入检测机制7 描述符8 枚举过程9 USB 的包结构与传输过程9.1 USB的包结构及包的分类9.2 令牌包9.3 数据包9.4 握手包9.5 特殊包9.6 如何处理数据包 10 USB 四种传输类型10…

「OC」NSArray的底层逻辑和遍历方法

「OC」NSArray的底层逻辑和遍历方法 文章目录 「OC」NSArray的底层逻辑和遍历方法前言NSArray的底层逻辑占位符init后的空NSArray只有单个元素的NSArray大于一个元素的NSArray可变数组NSMutableArray总结图片 遍历NSArray1. for循环2. 枚举3.for—in4. 多线程1.for 循环&fo…

AIGC产品经理面试,看这里!送你20道高频面试题及分析PDF文件!

作者简介 小6&#xff0c;世界五百强产品出身&#xff0c;从0到1搭建公司IT团队&#xff0c;现任深圳某互联网公司IT负责人&#xff0c;<极客时间>课程讲师。 愿景&#xff1a;希望可以让你在这里从对产品经理的一无所知到至少能找份相关工作&#xff01; 聊点AI面试的&a…

MVS海康工业相机达不到标称最大帧率

文章目录 一、相机参数设置1、取消相机帧率限制2、修改相机图像格式3、调整相机曝光时间4、检查相机数据包大小&#xff08;网口相机特有参数&#xff09;5、 恢复相机默认参数6、 相机 ADC 输出位深调整 二、系统环境设置1、 网口相机设置2、 USB 相机设置 一、相机参数设置 …

学霸都在用的秘密武器!盘点3款语音识别转文字软件,学习力MAX!

现在科技这么发达&#xff0c;手写笔记好像越来越不流行了。在这个什么都讲究快的时代&#xff0c;怎么又快又好地记下重要信息&#xff0c;是大家都想要的。正好&#xff0c;现在市面上有很多能把语音转换成文字的工具&#xff0c;它们特别有用&#xff0c;正在慢慢改变我们学…

「OC」GCD的简单运用

「OC」GCD的简单实用 文章目录 「OC」GCD的简单实用前言介绍任务和队列任务同步执行&#xff08;sync&#xff09;异步执行&#xff08;async&#xff09; 队列**串行队列&#xff08;Serial Dispatch Queue&#xff09;****并发队列&#xff08;Concurrent Dispatch Queue&…

从零学编程-C语言-第17天

今天是学习C语言的第17天 时间&#xff1a;2024/10/6 21:16分 使用编译器&#xff1a;vs2019 此贴记录自己的成长 今天学习内容如下 1.自定义类型-结构体 结构体 枚举 联合 //结构体 struct stu {char name[20]; }s1, s2; 这里是全局变量 int main() {struct stu s1,s2 …

AI不应只是简单地替代HR工作

AI在HR领域的应用不是新鲜事。 AI面试官、AI简历分析……许多现有的HR AI专注于自动化日常工作&#xff0c;依赖技术解决问题&#xff0c;因此应用集中在招聘和入职阶段&#xff0c;如简历筛选、候选人筛选和初步面试。 这确实有助于提高重复性工作的效率&#xff0c;也能节约企…

C++内部类和匿名对象

1.内部类 内部类就是定义在一个类的内部的类&#xff0c;比如 #include<iostream> using namespace std; class AA{ public:class BB {public:void print(const AA& A){cout << A.aa1 << " " << A.aa2 << endl;}private:}; priv…

Halcon OCR字符识别

create_text_model_reader创建一个文本模型描述要用于分割的文本find_text. 的parameter value文本分段方法的值为自动和手动. 通常&#xff0c;参数模式应设置为自动因为这种模式更稳定&#xff0c;需要更少 配置工作量。请注意&#xff0c;在这种情况下&#xff0c;还有一个…