Git使用方法与IDEA集成Git

news2024/9/25 23:15:05

1.Git介绍

1.1版本控制(理解)

无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况。

1.2开发中存在的问题(理解)

  • 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!

几个月来的努力付之东流

image-20230917224501232

  • 老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。
    可是这被改得面目全非的代码已经回不到从前了。

    image-20230917224517197

  • 小明和老王先后从文件服务器上下载了同一个文件

    image-20230917224528321

  • 因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的

    image-20230917224544167

  • 开发中要解决的问题

    • 代码备份
    • 版本控制
    • 协同工作
    • 责任追溯

1.3SVN版本控制(理解)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,
所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

  • 服务器单点故障

    将会导致所有人员无法工作

  • 而服务器硬盘损坏

    这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的。

1.4Git版本控制(理解)

Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发
而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。

  • 每一个客户端都保存了完整的历史记录

    服务器的故障,都可以通过客户端的记录得以恢复。

2.Git下载和安装

2.1Git的下载(应用)

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

image-20230917224608442

2.2Git的安装(应用)

  1. 双击安装包,进入安装向导界面

    image-20230917224620715

  2. 指定安装目录

    image-20230917224630992

  3. 一路next下一步

    image-20230917224643713

  4. 等待安装

    image-20230917224655427

  5. 安装完成

    image-20230917224709182

  6. 安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。

    image-20230917224724330

  7. 运行Git命令客户端,使用git --version 命令,可以查看git版本

    image-20230917224929207

    ps:虽然 Git 本身提供了图形化工具,但是功能并不是很强大,所以这里用第三方软件 TortoiseGit

2.3TortoiseGit的安装(应用)

  1. 双击安装包,进入安装向导界面

    image-20230917225455090

  2. 一路next下一步

  3. 指定安装目录
    image-20230917225519034

  4. 安装

    image-20230917225535958

  5. 配置

    image-20230917225549851

    image-20230917225601500

    image-20230917225639575

    image-20230917225612003

    image-20230917225651079

  6. 安装TortoiseGit中文语言包,一路next即可

image-20230917225701345

  1. 配置TortoiseGit中文语言

    右键setting

    image-20230917225845817

    image-20230917225941367

3.Git操作入门

3.1Git基本工作流程(理解)

本地仓库

image-20230917230541303

3.2Git命令行操作(应用)

  • git常用命令

    命令作用
    git init初始化,创建 git 仓库
    git status查看 git 状态 (文件是否进行了添加、提交操作)
    git add 文件名添加,将指定文件添加到暂存区
    git commit -m ‘提交信息’提交,将暂存区文件提交到历史仓库
    git log查看日志( git 提交的历史日志)
  • 操作步骤

    1. 创建工作目录、初始化本地 git 仓库

      image-20230917230605314

    2. 新建一个 test.txt 文件(暂不执行添加操作)

    3. 使用 status 命令,查看状态

      image-20230917230619219

    4. 使用 add 命令添加,并查看状态

      image-20230917230636630

    5. 使用 commit 命令,提交到本地历史仓库

      image-20230917230653199

    6. 使用 log 命令,查看日志

    7. 修改 test.txt 文件

      image-20230917230709596

    8. 添加并提交,查看日志

3.3Git图形化工具操作(理解)

  1. 创建工作目录、初始化本地 git 仓库

    image-20230917231147996

    image-20230917231159148

  2. 新建一个 test.txt 文件(暂不执行添加操作)

  3. 选中文件右键,选择TortoiseGit,之后选择添加

    image-20230917231216836

  4. 空白处右键,Git提交,提交到本地历史仓库

    image-20230917231225329

  5. 空白处右键,TortoiseGit,显示日志,可以产看日志信息

    image-20230917231235685

  6. 修改 test.txt 文件

  7. 添加并提交,查看日志

4.Git版本管理

4.1历史版本切换(理解)

image-20230917231247405

  • 准备动作

    1. 查看 my_project 的 log 日志
      git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)
    2. 增加一次新的修改记录
  • 需求: 将代码切换到第二次修改的版本

    指令:git reset --hard 版本唯一索引值

4.2分支管理介绍(理解)

  • 分支

    • 由每次提交的代码,串成的一条时间线
    • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
  • 分支的使用场景

    1. 周期较长的模块开发
      假设你准备开发一个新功能,但是需要一个月才能完成
      第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug
      那现在就需要放下手中的新功能,去修复Bug
      但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。
    2. 尝试性的模块开发
      业务人员给我们提出了一个需求,经过我们的思考和分析
      该需求应该可以使用技术手段进行实现。
      但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。
  • 分支工作流程

    • Master: 指向提交的代码版本

    • Header: 指向当前所使用的的分支

4.3分支管理操作(应用)

  • 创建和切换

    创建命令:git branch 分支名
    切换命令:git checkout 分支名

  • 新分支添加文件

    查看文件命令:ls

    总结:不同分支之间的关系是平行的关系,不会相互影响

  • 合并分支

    合并命令:git merge 分支名

  • 删除分支

    删除命令:git branch -d 分支名

  • 查看分支列表

    查看命令:git branch

5.远程仓库

5.1远程仓库工作流程(理解)

image-20230918092751192

5.2远程仓库平台介绍(理解)

  • GitHub

    域名:https://github.com
    介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站

    ​ 各类好玩有趣的开源项目,只有想不到,没有找不到。

  • 码云

    域名:https://gitee.com
    介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库

5.3码云的注册(应用)

image-20230918092807792

image-20230918092912625

5.4先有本地项目,远程为空(应用)

  • 步骤

    1. 创建本地仓库
    2. 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库
    3. 创建远程仓库
    4. 推送到远程仓库
  • 创建远程仓库

    image-20230918094853589

    image-20230918094922471

  • 生成SSH公钥

    • 推送代码之前,需要先配置SSH公钥

      image-20230918094935561

    • 生成SSH公钥步骤

      1. 设置Git账户

        • git config user.name(查看git账户)
        • git config user.email(查看git邮箱)
        • git config --global user.name “账户名”(设置全局账户名)
        • git config --global user.email “邮箱”(设置全局邮箱)
        • cd ~/.ssh(查看是否生成过SSH公钥)

        image-20230918094947540

      2. 生成SSH公钥

        • 生成命令: ssh-keygen –t rsa –C “邮箱” ( 注意:这里需要敲3次回车)

        image-20230918095003979

        • 查看命令: cat ~/.ssh/id_rsa.pub

        image-20230918095029308

      3. 设置账户公钥

        image-20230918095043242

        image-20230918095057549

      4. 公钥测试

        • 命令: ssh -T git@gitee.com

        image-20230918095116277

  • 推送到远程仓库

  • 步骤

    1. 为远程仓库的URL(网址),自定义仓库名称
    2. 推送
  • 命令
    git remote add 远程名称 远程仓库URL
    git push -u 仓库名称 分支名

    image-20230918095128615

    image-20230918095139350

5.5先有远程仓库,本地为空(应用)

  • 步骤
    1. 将远程仓库的代码,克隆到本地仓库
      克隆命令:git clone 仓库地址
    2. 创建新文件,添加并提交到本地仓库
    3. 推送至远程仓库
    4. 项目拉取更新
      拉取命令:git pull 远程仓库名 分支名

5.6代码冲突(应用)

  • 产生原因:

    两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库,这样就可能会导致代码冲突

image-20230918095156008

image-20230918095203396

image-20230918095211979

  • 如何解决冲突

    <<<<<<<和>>>>>>>中间的内容,就是冲突部分

    1. 修改冲突行,保存,即可解决冲突。
    2. 重新add冲突文件并commit到本地仓库,重新push到远程

6.IDEA集成Git

6.1IDEA中配置Git(应用)

  1. File -> Settings

image-20230918095258846

  1. Version Control -> Git -> 指定git.exe存放目录

image-20230918095452637

  1. 点击Test测试

image-20230918095501700

6.2创建本地仓库(应用)

  1. VCS->Import into Version Control->Create Git Repository

    image-20230918095644410

  2. 选择工程所在的目录,这样就创建好本地仓库了

    image-20230918095655238

  3. 点击git后边的对勾,将当前项目代码提交到本地仓库

    注意: 项目中的配置文件不需要提交到本地仓库中,提交时,忽略掉即可

    image-20230918095705224

6.3版本切换(应用)

  • 方式一: 控制台Version Control->Log->Reset Current Branch…->Reset

    这种切换的特点是会抛弃原来的提交记录

    image-20230918095938240

  • 方式二:控制台Version Control->Log->Revert Commit->Merge->处理代码->commit

    这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留

    image-20230918095946783

    image-20230918095956084

    image-20230918100002943

6.4分支管理(应用)

  • 创建分支

    VCS->Git->Branches->New Branch->给分支起名字->ok

    image-20230918100331262

  • 切换分支

    idea右下角Git->选择要切换的分支->checkout

    image-20230918100338263

  • 合并分支

    VCS->Git->Merge changes->选择要合并的分支->merge

    image-20230918100349095

    处理分支中的代码

    image-20230918100358627

    image-20230918100406236

    image-20230918100411949

  • 删除分支

    idea右下角->选中要删除的分支->Delete

    image-20230918100424355

6.5本地仓库推送到远程仓库(应用)

  1. VCS->Git->Push->点击master Define remote

    image-20230918100637609

  2. 将远程仓库的路径复制过来->Push

    image-20230918100645576

6.6远程仓库克隆到本地仓库(应用)

File->Close Project->Checkout from Version Control->Git->指定远程仓库的路径->指定本地存放的路径->clone

image-20230918100652415

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

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

相关文章

使用RNN联合注意力机制实现机器翻译

https://zhuanlan.zhihu.com/p/28834212 具体来自这一篇文章的指导 一、相关使用的查漏补缺&#xff1a; 1.其中的两种神奇的处理字符的操作&#xff1a; 2.关于nn.GRU()的参数解释和用法&#xff1a; http://t.csdn.cn/30PZL 这篇文章讲得很清楚&#xff0c;需要用来预测…

windows下mysql的高可用方案

PS:理论上linux下也可以使用这种方案 环境准备&#xff1a; 首先准备两台电脑&#xff0c;全部安装MySQL&#xff0c;然后分别查看一下ip地址&#xff0c;我的两个ip分别是&#xff1a; 192.168.25.134&#xff08;简称134&#xff09; 192.168.25.135&#xff08;简称135&a…

亚马逊日本站养号测评需要哪些资源和注意点,如何确保账号的稳定性和纯净环境?

日本亚马Amazon.co.jp逊简称日亚&#xff0c;在日本国内亚马逊是アマゾン&#xff0c;日本亚马逊是美国亚马逊在日本成立的分公司&#xff0c;于2000年开通。 目前亚马逊日本站的情况是&#xff0c;流量大&#xff0c;产品少。有很多美国的卖家之间把亚马逊北美站的热卖产品加…

malloc是如何实现内存分配的?【深入理解】

文章目录 前言一、malloc实现原理概括&#xff1f;二、brk() 函数与mmap()函数三、mmap实现原理普通读写与mmap对比mmap内存映射实现过程mmap 的适用场景 前言 在C和C中&#xff0c;malloc函数是用于动态分配内存的常用函数。本文将深入探究malloc函数的内存分配实现机制&…

Linux 定时任务Crontab详解及常见问题解决

Linux 定时任务Crondtab简单了解 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程&#xff0c;与windows下的计划任务类似&#xff0c;当安装完成操作系统后&#xff0c;默认会安装此服务 工具&#xff0c;并且会自动启动crond进程&#xff0c;cron…

Python 变量作用域

视频版教程 Python3零基础7天入门实战视频教程 在程序中定义一个变量时&#xff0c;这个变量是有作用范围的&#xff0c;变量的作用范围被称为它的作用域。根据定义变量的位置&#xff0c;变量分为两种。 局部变量。在函数中定义的变量&#xff0c;包括参数&#xff0c;都被称…

Django:四、Djiango如何连接使用MySQL数据库

一、安装数据库第三方插件 安装下载mysql第三方插件 pip install mysqlclient 二、创建MySQL数据库 ORM可以帮助我们做两件事&#xff1a; 创建、修改、删除数据库中的表&#xff08;不用写SQL语句&#xff09;&#xff0c;但无法创建数据库操作表中的数据&#xff08;不用…

长胜证券:煤价突破900元大关 GLP-1减重药进入集中获批期

上星期五&#xff0c;两市股指早盘震动上扬&#xff0c;午后回落走低。到收盘&#xff0c;沪指跌0.28%报3117.74点&#xff0c;深成指跌0.52%报10144.59点&#xff0c;创业板指涨跌0.45%报2002.73点&#xff0c;科创50指数涨0.71%&#xff1b;两市合计成交7217亿元&#xff0c;…

Linux系统调试篇——错误码介绍

文章目录 错误码错误码案例goto语句 错误码 在处理一些程序出错语句中&#xff0c;不管是用户空间还是内核空间&#xff0c;通常都会返回一个错误码。例如return -ERROR。 这些错误码是Linux内核定义的&#xff0c;它几乎包括了我们能想到的所有错误类型。 错误码的定义位于&…

GeoServer(配合Tomcat)安装与配置

GeoServer是什么&#xff1f; GeoServer是用于共享地理空间数据的开源服务器。专为互操作性而设计&#xff0c;它使用开放标准发布来自任何主要空间数据源的数据。GeoServer实现了行业标准的OGC协议&#xff0c;例如Web功能服务 (WFS)&#xff0c;Web地图服务 (WMS) 和Web覆盖…

HTML5数据推送SSE原理及应用开发

JavaScript表达行为&#xff0c;CSS表达外观&#xff0c;注意HTML既表达结构&#xff08;逻辑结构&#xff09;&#xff0c;又表达内容&#xff08;数据本身&#xff09;通常需要更新数据时&#xff0c;并不需要更新结构&#xff0c;正是这种不改变组织结构仅改变数据的诉求&am…

长胜证券:开盘竞价买卖技巧?

开盘竞价是股票生意进程中的一个重要环节&#xff0c;对于出资者来说&#xff0c;怎么在这个短暂的时间内下单买入或卖出股票&#xff0c;成为了检测出资者生意技巧的重要挑战。 一、认识开盘竞价 开盘竞价是指在股票商场开盘前&#xff0c;一切买进卖出单据的价格在必定的时间…

20个最佳实践提升Terraform工作流程|Part 1

Terraform 是管理基础设施及代码&#xff08;IaC&#xff09;最常用的工具之一&#xff0c;它能使我们安全且可预测地对基础设施应用更改。刚开始上手 Terraform 可能会感觉有些不容易&#xff0c;但很快就能对该工具有基本的了解&#xff0c;随之可以开始运行命令、创建和重构…

达观RPA实战-自定义控件创建excel表头

一、应用背景 工作中我们经常会对excel文件进行操作,比如获取表格数据后,需要在空白excel文件中先写入表头,在逐行写入数据。如果每次都需要在流程中进行表头的写入,流程会看起来很臃肿。此时,我们可以充分利用达观RPA中自定义控件来创建一个。后续涉及到写excel表数据,…

Sqilte3初步教程

文章目录 安装创建数据库创建和删除表插入行数据 安装 Windows下安装&#xff0c;首先到下载页面&#xff0c;下载Windows安装软件&#xff0c;一般是 sqlite-dll-win32-*.zip sqlite-tools-win32-*.zip下载之后将 其内容解压到同一个文件夹下&#xff0c;我把它们都放在了D…

儿童用白炽灯和护眼灯哪个好一点?适合儿童使用的台灯推荐

现今的近视已然成为普遍现象&#xff0c;而且有往低年龄段发展的趋势。对孩子来说&#xff0c;日常孩子在家里抹黑看书&#xff0c;晚上看手机不开灯等习惯&#xff0c;都会导致眼睛受损&#xff0c;继而引发近视。所以给孩子挑选一款合适的台灯还是很重要的&#xff01;那么儿…

LeetCode 1159.市场分析2

数据准备 Create table If Not Exists Users (user_id int, join_date date, favorite_brand varchar(10)); Create table If Not Exists Orders (order_id int, order_date date, item_id int, buyer_id int, seller_id int); Create table If Not Exists Items (item_id int…

面试官问你前端性能优化时,他想问什么?

一直以来&#xff0c;前端性能优化都是面试过程中考察的热点题目。 相关的技术博客也层不出穷&#xff0c;我们总是能找到很多这样的文章&#xff0c; 从一个应用的各个层面开始分析&#xff0c;优化的种种手段&#xff0c;取得的种种效果。 往往篇幅越长&#xff0c;讲得越…

jQuery 框架学习笔记(基础)

What jQuery 是一种快速、简洁跨游览器的 JavaScript 函数库&#xff0c;其宗旨是“Write less, Do more”&#xff0c;它封装JavaScript常用的功能代码&#xff0c;提供一种简便的JavaScript设计模式&#xff0c;优化HTML文档操作、事件处理、动画设计和Ajax交互。 注意&…

浏览器清除所有断点

浏览器清除所有断点 问题分析 问题 谷歌浏览器清除所有断点 分析 在打断点的 Source 栏下 1、右键Breakpoints下的内容。 2、弹出选项&#xff0c;点击remove all breakpoints。