Git从入门到实战

news2025/1/18 2:13:07

Git从入门到实战

一、Git概述

1.1、Git简介

Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。Git仓库来存储和管理这些文件,Git仓库分为两种:

  • 本地仓库:开发人员自己电脑上的Git仓库
  • 远程仓库:远程服务器上的Git仓库
  • **commit:**提交,将本地仓库文件和版本信息保存到本地仓库
  • **push:**推送,将本地仓库文件和版本信息上传到远程残酷
  • **pull:**拉取,将远程仓库文件和版本信息下载到本地仓库

image-20221114161022473

1.2、Git下载安装

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

image-20221114161246220

【点击next】:

image-20221114161529903

【选择安装位置并点击next】:

image-20221114161625560

【选择安装选项并点击next】:

  • 建议选择Git Bash Here(命令行界面)和Git GUI Here(图形化界面)
  • 其他的默认即可

image-20221114161731326

【点击next】:

image-20221114161946550

【选择命令行的编辑模式并点击next】:

image-20221114162037594

【选择初始化时代码的结构方式并点击next】:

  • 默认是master,也可以选择main

image-20221114162312621

【默认即可点击next】:

image-20221114162421585

【默认即可并点击next】:

image-20221114162723988

【默认并点击next】:

image-20221114162806672

【默认并点击next】:

image-20221114162946308

【选择默认点击next】:

配置终端模拟器以与 Git Bash 一起使用

image-20221114163421698

【默认并点击next】:

image-20221114163540296

【默认即可并点击next】:

image-20221114163624375

【默认并点击next】:

image-20221114163829370

【直接点击install】:

image-20221114163941218

【安装完成】:

image-20221114164404957

二、Git代码托管服务

常用的Git代码托管服务

image-20221114164628234

三、Git常用命令

3.1、Git全局设置

当安装Git后首先要设置用户名称和email地址

在Git命令行中执行下面的命令:

  • 设置用户信息

    • git config –global user.name “用户名”

    • git config –global user.email “用户邮箱”

  • 查看配置信息

    • git config —list

*注意:*上面设置的user.name和user.email并不是我们注册时的用户名和邮箱,此处可以任意设置

3.2、获取Git仓库

获取Git仓库有两种方式:

  • 在本地初始化一个Git仓库(不常用)
  • 从远程仓库克隆(常用)

1、在本地初始化Git仓库

执行步骤:

  • 在任意目录下创建空目录作为我们的本地Git仓库
  • 进入这个目录,点击右键打开Git Bash窗口
  • 执行命令git init

image-20221114171331689

image-20221114171255646

2、从远程仓库克隆

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

命令形式:git clone 【远程Git仓库地址】

image-20221114171813421

3.3、工作区、暂存区、版本库概念

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

image-20221114202215822

3.4、Git工作区中文件的状态

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

  • untracked未跟踪(为被纳入版本控制)
  • tracked已跟踪(被纳入版本控制)
    • Unmodified未修改状态
    • Modified已修改状态
    • Stage已暂存状态

3.5、本地仓库操作

本地仓库常用命令:

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

演示代码:

  • git status

我们在我们的本地仓库新建User.java文件,并用git add *添加带暂存区,使用git status查看状态

MINGW64 /d/gitRepos/hellogit (main)
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   User.java

image-20221114204352832

  • git add

我们在本地仓库新建User.xml,并用git status查看状态,然后再用git add添加到暂存区

MINGW64 /d/gitRepos/hellogit (main)
$ git add * # 或者(git add User.xml)
MINGW64 /d/gitRepos/hellogit (main)
$ git status
On branch main
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   User.java
        new file:   User.xml

image-20221114204826788

  • git commit

我们使用commit命令把我们添加到暂存区的文件提交,再使用git status查看文件的状态,就看不到User.java文件了

MINGW64 /d/gitRepos/hellogit (main)
$ git commit -m "init hellogit" User.java
# -m 参数 我们提交到仓库的描述信息

image-20221114205107197

  • git log

当我们操作几次文件之后就可以使用git log来查看我们操作的日志了

image-20221114205625115

  • git reset

我们可以使用该命令来退回到指定的版本,通过上面的git log查看每个版本的唯一标识

git reset --hard <唯一标识>

image-20221114210134592

3.6、远程仓库操作

远程仓库的常用命令:

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

代码演示:

  • git remote

如果想查看已经配置的远程仓库服务器,可以运行git remote命令

MINGW64 /d/gitRepos/hellogit (main)
$ git remote
origin
MINGW64 /d/gitRepos/hellogit (main)
$ git remote -v
origin  https://github.com/chzj1328/hellogit.git (fetch)
origin  https://github.com/chzj1328/hellogit.git (push)

image-20221114211046975

  • git remote add < shortname > < url > 添加一个新的远程仓库

我们再github 建立一个新的仓库,名称和我们本地仓库名称一致,然后使用git remote add让它和远程仓库发生关联

MINGW64 /d/gitRepos/repo1 (master)
$ git remote add origin https://github.com/chzj1328/repo1.git
MINGW64 /d/gitRepos/repo1 (master)
$ git remote
origin
MINGW64 /d/gitRepos/repo1 (master)
$ git remote -v
origin  https://github.com/chzj1328/repo1.git (fetch)
origin  https://github.com/chzj1328/repo1.git (push)

image-20221114212340483

  • git clone < url >:从远程仓库克隆

Git 克隆的是该Git仓库服务器上的几乎所有数据(包括日志信息、历史记录),而不仅仅是赋值工作所需要的文件

 MINGW64 /d/gitRepos/ch
$ git clone https://github.com/chzj1328/repo1.git
Cloning into 'repo1'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

image-20221114213204473

  • git push [remote-name] [branch-name]:推送远程仓库

将我们本地的文件推送到远程仓库使用该命令

MINGW64 /d/gitRepos/hellogit (main)
$ git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 303 bytes | 303.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/chzj1328/hellogit.git
   04aa34d..516034d  main -> main

image-20221114215441510

  • git pull 从远程仓库拉取并合并到本地仓库

git pull [short-name] [branch-name]

image-20221114221520539

3.7、分支操作

分支使Git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离出来,以免影响开发主线。

同一个仓库可以创建多个分支,各分支相互独立,互不干扰。

通过git init命令创建本地仓库时默认会创建一个master分支。

相关命令:

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

分支操作:

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

image-20221115080104506

  • 创建分支
    • git branch [name]

image-20221115080233461

  • 切换分支
    • git checkout [name]

image-20221115080451810

  • 推送本地分支到远程仓库
    • git push [shortName] [name]

image-20221115080827246

image-20221115080906039

  • 合并分支
    • git merge [name]

image-20221115081938363

在本地仓库可以看到b1.txt已被合并到我们的主分支上了

image-20221115082000425

  • 合并分支冲突

在b1分支和master分支下同时修改b1.txt文件,然后再进行分支合并

  • 在master分支下修改文件内容

image-20221115082626997

  • 在b1分支下修改文件内容

image-20221115083030383

  • 合并分支时发生冲突

image-20221115083328969

  • 修改文件内容(不推荐):后面集成IDEA时会有另外的方法

image-20221115083853189

3.8、标签操作

Git标签:指某个分支特定的时间点的状态。通过标签,可以很方便的切换到标记时的状态。

相关命令:

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

image-20221115084729816

  • 检出标签:检出标签是需要创建一个分支指向某个标签
    • git checkout -b [branch] [name]

image-20221115085128177

四、在IDEA中使用Git

4.1、在IDEA中配置Git

在IDEA ==》 File ==》settings ==》 VersionControl进行设置

image-20221115090135982

4.2、获取Git仓库

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

  • 本地初始化仓库
  • 从远程仓库克隆

从本地初始化仓库

image-20221115090748110

远程仓库克隆

image-20221115091336630

在URL里面输入地址即可和导出单本地的文件夹

image-20221115091658424

4.3、本地仓库操作

相关命令:

  • 将文件加入暂存区

右键某个文件夹或类 ==》 点击Git ==》点击Add 或者 快捷键 ==》 Ctrl + Alt + A

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

直接点击上方小窗口里面的绿色√:image-20221115093524665

  • 查看日志
  • image-20221115143553949

4.4、远程仓库操作

相关操作:

  • 查看远程仓库
  • 添加远程仓库
  • 推送至远程仓库
  • 从远程仓库拉取

4.5、分支操作

  • 查看分支

image-20221115151338094

image-20221115151359959

  • 创建分支

image-20221115151724601

  • 切换分支:点击分支即可切换

image-20221115152139162

  • 推送分支至远程仓库

image-20221115152007992

  • 合并分支

image-20221115152223157

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

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

相关文章

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.1 Feign整合Sentinel

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.1 Feign整合Sentinel32.1.1 隔离和降级32.1.2 Feign 整合Sentinel32.1.3 总结32 …

算法设计与分析期末复习(一)

算法的定义和特征 什么是算法&#xff1f; 算法是求解某一特定问题的一组有穷规则的集合&#xff0c;它是由若干条指令组成的有穷符号串。算法的五个重要特性 确定性&#xff1a;算法中每一条指令必须有确切的含义&#xff0c;不存在二义性。只有一个入口和一个出口。 可行性&…

raft协议详解

文章目录1. 分布式系统数据一致性概述2. rafts算法基础2.1 基础2.2leader选举2.3raft算法数据同步2.4 raft算法之脑裂2.5 leader宕机处理raft 动画演示1. 分布式系统数据一致性概述 redis保证了可用性&#xff0c;牺牲了一致性 2. rafts算法基础 2.1 基础 2.2leader选举 2.3r…

Python列表(list)反序的7种方法

Python列表(list)原址反序的方法 (本文获得CSDN质量评分【x】)【学习的细节是欢悦的历程】Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 自学并不是什么神秘的东西&a…

第1章 Rust安装

Rust是一门安全的语言&#xff0c;最近也加入到Linux内核中&#xff0c;因此后续这门语言会越来越流行&#xff0c;所以准备学习下&#xff0c;本篇介绍Rust在Window平台上的安装过程。 目录 安装步骤 1.到官网下载安装包 2.搭建 Visual Studio Code 开发环境 安装步骤 1.…

webpack 简介以及为什么要用webpack

webpack 是什么 webpack 是一个用于现代JavaScript 应用程序的静态模块打包工具。 看来像是1个js的打包工具&#xff0c; 但是实际上并没有这么简单 传统html js 写法1 对于前端新手&#xff0c; 或者被逼写前端的后端开发&#xff0c; 他们写的代码很可能是这样的 html: &…

mysql高可用(MHA集群)

目录 一、MHA概述 &#xff08;1&#xff09;什么是MHA &#xff08;2&#xff09;MHA的组成 1&#xff09;MHA Node&#xff08;数据节点&#xff09; 2&#xff09;MHA Manager&#xff08;管理节点&#xff09; &#xff08;3&#xff09;MHA的特点 二、搭建mysql HMA…

软件体系结构复习文档

引言&#xff1a; 软件体系结构是大三下学期我们学的一门专业课&#xff0c;这门课学院给我们安排的是一名女老师上的&#xff0c;课没给我留下多深的印象&#xff0c;女老师倒是给我留下了深刻的印象&#xff0c;温柔&#xff0c;漂亮、高挑。上完每节课老师都把ppt和资料发到…

基于Android与多媒体的英文学习APP的设计

毕业设计&#xff08;论文&#xff09;任务书 第1页 毕业设计&#xff08;论文&#xff09;题目&#xff1a;基于Android与多媒体技术的英文学习APP的设计与实现设计&#xff08;论文&#xff09;要求及原始数据&#xff08;资料&#xff09;&#xff1a;1&#xff0e;综述国…

深入理解Java虚拟机:(一)Java代码是如何运行的?

jdk 的子目录下也存在一个 jre。 而我 C盘目录下也有一个 jre。 这两个 jre 有啥联系吗&#xff1f; 答案是&#xff1a;没有联系。甚至准确的来说&#xff0c;它俩是一样的&#xff0c;无论是用哪一个都是可以的。只是很多人习惯将会单独安装另一个 jre&#xff0c;虽然单独…

017 | JavaWeb企业进销存管理系统源码附带毕业设计论文 | 大学生毕业设计 | 极致技术工厂

进销存管理系统是一个基于Internet的应用系统&#xff0c;它是一个面对当前的进销存管理工作基本还处于手工和半信息自动化处理状态而应运而生的一个基于Internet的一个完全信息自动化的系统&#xff0c;整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发&#xf…

100天精通Python(数据分析篇)——第68天:Pandas数据清洗函数大全

文章目录每篇前言1. duplicated()2. drop_duplicates()3. isnull()4. notnull()5. dropna()6. fillna()7. ffill()8. bfill()9. replace()10. str.replace()11. str.split.str()每篇前言 &#x1f3c6;&#x1f3c6;作者介绍&#xff1a;Python领域优质创作者、华为云享专家、阿…

在PostgreSQL中通过dblink兼容Oracle数据库中的自治事务

1、数据库事务原子性的局限与自治事务 1.1、事务原子性概述 如下所示&#xff0c;如果一个事务中有A和B两个数据的插入操作&#xff0c;当A的SQL语句执行成功后&#xff0c;因为某种原因&#xff08;如服务器断电等&#xff09;&#xff0c;导致B的SQL语句执行失败&#xff0…

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.3 线程隔离【舱壁模式】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.3 线程隔离【舱壁模式】32.3.1 线程隔离【舱壁模式】32.3.2 案例32.3.3 总结32 隔…

【BBuf的CUDA笔记】一,解析OneFlow Element-Wise 算子实现

0x0. 前言 由于CUDA水平太菜&#xff0c;所以一直没写过这方面的笔记。现在日常的工作中已经不能离开写CUDA代码&#xff0c;所以准备学习ZZK随缘做一做CUDA的笔记记录一下学习到的知识和技巧。这篇文章记录的是阅读OneFlow的Element-Wise系列CUDA算子实现方案学习到的技巧&am…

MySQL主从复制与读写分离

目录 前言 一、MySQL主从复制的理解 1、MySQL的复制类型 2、MySQL主从复制的工作流程 3、MySQL架构&#xff08;一主多备&#xff09; 3.1 一主多备 3.2 M-S-S 3.3 M-M/双主互备 &#xff08;互为主从&#xff09; 3.4 M-M-M 4、MySQL主从复制延迟原因 5、MySQL主从…

FL Studio2023最新版编曲音乐制作数字音频软件

FL Studio2023即“Fruity Loops Studio”&#xff0c;也就是众所熟知的水果软件&#xff0c; 全能音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。FL Studio可以编曲、剪辑、录音、混音&#xff0c;让你的计算机成为全功能录音室。 FL Studio2023是一个完整的软件音…

学术分享 | 清华大学 康重庆:电力系统碳计量技术与应用(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;​ &#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ 目录 ​ 0 写在最前面 1 学术分享 | …

MATLB|改进遗传算法优化微电网调度(考虑环境)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

Redis 高可用之持久化

Redis 高可用之持久化Redis 高可用什么是高可用Redis的高可用技术Redis持久化持久化的功能Redis提供两种方式进行持久化&#xff1a;RDB持久化触发条件bgsave执行流程启动时加载AOF持久化&#xff08;支持秒级写入&#xff09;开启AOF执行流程启动时加载RDB和AOF的优缺点RDB持久…