关于Git看这一篇就够了(IDEA版本)

2023-11-15

目录

一、Git简介

1.1 项目的版本管理

1.2 团队协同开发​1.3 版本管理工具—Git

二、Git下载及安装

2.1 下载Git

 2.2 安装Git

2.3 检查

三、Git架构

四、Git基本使用

4.1 创建版本库

4.2 查看版本库状态

4.3 将工作空间的修改添加到暂存区

4.4 将暂存区内容提交到版本库(仓库)

4.5 查看版本库中的历史版本

4.6 设置用户信息

4.7 同步历史版本到工作空间

五、远程仓库

5.1 远程仓库

5.3 创建远程仓库(码云)

六、远程仓库操作

6.1 push本地仓库到远程仓库

6.1.1 准备工作

6.1.2 本地仓库关联远程仓库

6.1.3 查看远程仓库状态

6.1.4 将本地仓库push到远程仓库

6.2 其他开发者pull远程仓库到本地

6.2.1 先创建本地仓库

6.2.2 拉取远程仓库到本地

6.3 解决协同开发冲突问题

七、分支管理

7.1 什么是分支

7.2 分支特性

7.3 分支操作

7.3.1 创建分支

7.3.2 查看分支

7.3.3 切换分支

7.3.4 检出分支

7.3.5 分支合并

八、Idea整合Git使用

8.1 IDEA关联Git

 8.2 IDEA中Git版本管理

8.2.1 创建本地版本库

8.2.2 设置忽略文件

8.2.3 将工作空间add到暂存区

8.2.4 将暂存区提交到版本库

8.3 IDEA中Git分支管理

8.3.1 创建分支

8.3.2 切换分支

8.3.3 删除分支

8.3.4 合并分支

8.4 IDEA中使用Git进行团队协同开发

8.4.1 项目管理者

8.4.2 项目开发者

8.5 解决团队协同开发的冲突问题


一、Git简介

1.1 项目的版本管理

在项目开发过程中,项目每开发到一个节点就会对当前项目进行备份,这个备份就是项目的一个版本;当我们继续开发一个阶段后,再次进行备份,就生成新的版本——多个版本的集合就是项目的版本库

在项目版本管理中,我们可以使用手动进行管理,但是存在一些问题:

  • 需要手动维护版本的更新日志,记录每个版本的变化

  • 需要手动查找历史版本,当历史版本比较多的时候,查找工作很繁琐

  • 当我们需要回退到某个版本时,只能够手动的通过IDE工具手动打开

1.2 团队协同开发
1.3 版本管理工具—Git

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

核心功能:

  • 项目的版本管理

  • 团队协同开发

二、Git下载及安装

2.1 下载Git

Git

 2.2 安装Git

除了选择安装位置以外,其他都傻瓜式安装

2.3 检查

  • win + r

  • 输入cmd

  • 输入 git --version

三、Git架构

四、Git基本使用

4.1 创建版本库

  • 在工作空间的目录中,右键“Git Bash Here”打开git终端

  • 在Git终端中输入git init指令,创建版本库(就是一个.git目录)

4.2 查看版本库状态

git status

4.3 将工作空间的修改添加到暂存区

git add a.txt   ## 只将工作空间中的某个文件add到暂存区
git add . ## 将工作空间中所有文件都add暂存区

4.4 将暂存区内容提交到版本库(仓库)

git commit -m '版本说明'

4.5 查看版本库中的历史版本

git log --oneline  ## 每个版本信息只显示一行
get log  ## 显示每个版本的详细信息

4.6 设置用户信息

因为我们将暂存区的内容提交到版本时,会记录当前版本的提交的用户信息,因此在版本提交之前需要先绑定用户信息

git config --global user.name 'ergou'
git config --global user.email 'haha@hehe.com'

4.7 同步历史版本到工作空间

git checkout 版本号

五、远程仓库

5.1 远程仓库

远程仓库,远程版本库;实现版本库的远程存储,以实现团队的协同开发

远程仓库

5.2 如何获得远程仓库

 

5.3 创建远程仓库(码云)

六、远程仓库操作

6.1 push本地仓库到远程仓库

6.1.1 准备工作

  1. 创建本地工作空间

    D:\demo
        src
            main
                java
                resources
            test
                java
        pom.xml
  2. 初始化本地仓库

    git init
  3. 将工作空间搭建的项目结构add到暂存区

    git add .
  4. 将暂存区文件提交到版本库,生成第一个版本

    git commit -m '创建项目'
  5. 为当前项目创建一个远程仓库

    你的gitee项目仓库地址

6.1.2 本地仓库关联远程仓库

建立D:\fmwy中的本地仓库 和 远程仓库的关联

git remote add origin 远程仓库项目地址

6.1.3 查看远程仓库状态

git remote -v

6.1.4 将本地仓库push到远程仓库

push到远程仓库需要gitee的帐号和密码,输入gitee账号密码即可

git push origin master

6.2 其他开发者pull远程仓库到本地

6.2.1 先创建本地仓库

  • 在E盘创建ws目录(空目录),进入ws目录,打开Git客户端

  • 创建本地版本库

    git init

6.2.2 拉取远程仓库到本地

  • 拉取远程仓库

    git pull 远程仓库地址 master

6.3 解决协同开发冲突问题

场景:    Helloworld.java  [bbb]
​
开发者1                              开发者2
-------------------------------------------------------------------------------------------
git pull demo1 master                    git pull demo1 master                          
                                         在Hellworld.java中新增内容 “bbb”
在Hellworld.java中新增内容 “aaa”
                                         git add .
                                         git commit -m ''
                                         git push demo1 master
git add .
git commit -m ''
git push demo1 master【会失败!!!----在我pull之后,push之前被其他开发人员push过】
​
问题:我该如何操作?
git pull demo1 master 【将开发者2修改的内容拉取到我本地】
​
对文件进行冲突合并
​
git add .
git commit -m ''
git push demo1 master
HelloWorld.java

>>>>>>>>>>>>>>>>>>>>>HEAD
aaa
=================
bbb
<<<<<<<<<<<<<<<<<<<<< sikdfhjkasdfhjasdfhjk

七、分支管理

7.1 什么是分支

分支就是版本库中记录版本位置(支线),分支之间项目会影响,使用分支可以对项目起到保护作用

分支就是一条时间线,每次提交就在这条时间线上形成一个版本

7.2 分支特性

  • 创建一个新的版本库,默认创建一个主分支—master分支

  • 每个分支可以进行单独管理(常规分支、保护分支、只读分支)

  • 分支是可以合并的

7.3 分支操作

7.3.1 创建分支

git branch branch_name

7.3.2 查看分支

git branch

7.3.3 切换分支

git branch branch_name  # 切换到指定分支上的最新版本

7.3.4 检出分支

git checkout 历史版本 -b branch_name  # 签出指定的历史版本创建新分支

7.3.5 分支合并

  • 三方合并

  • 快速合并

# 在master分支执行 git merge dev   表示将dev分支合并merge
git merge breanch_name

八、Idea整合Git使用

作为Java开发工程,我们代码的编写工作都是在IDE工具(idea)中完成,因此我们需要了解和掌握直接使用IDE工具完成Git的操作

8.1 IDEA关联Git

 8.2 IDEA中Git版本管理

准备工作:打开IDEA新建一个web工程

8.2.1 创建本地版本库

8.2.2 设置忽略文件

在工作空间中有些文件是不需要记录到版本库中的(例如.idea、target、.iml文件),可以通过设置忽略提交来实现

  • 在工作空间的根目录(项目的根目录)中创建一个名为.gitignore文件

  • .gitignore文件配置忽略过滤条件

    .idea
    target
    *.iml

8.2.3 将工作空间add到暂存区

  • 选择项目/文件---右键---Git---Add(添加到暂存区的文件--绿色)

  • 如果一个文件创建好之后还没有添加到暂存区--棕红色

  • 添加到暂存区的操作可以设置默认添加

8.2.4 将暂存区提交到版本库

  • 选择项目/文件---右键---Git--Commit(记录到版本库的文件--黑色)

  • 如果对记录到 版本库的文件进行了修改,也就是说工作空间和版本库不一致--蓝色

8.3 IDEA中Git分支管理

8.3.1 创建分支

  • 点击IDEA右下角Git

  • 在弹窗中点击New Branch

  • 输入新分支的名称

8.3.2 切换分支

  • 点击IDEA右下角Git

  • 点击非当前分支右边的箭头

  • 在选项卡点击checkout

8.3.3 删除分支

点击右小角git

8.3.4 合并分支

例如:将dev合并到master

  • 切换到master分支

  • 点击dev分支右面的箭头,在展开的菜单中选择Merge into current

8.4 IDEA中使用Git进行团队协同开发

8.4.1 项目管理者

  1. 完成项目搭建

  2. 为当前项目创建本地版本库

  3. 将搭建好的项目提交到本地版本库

    • add到暂存区

    • commit到版本库

  4. 创建远程版本库(远程仓库)

  5. 将本地仓库push到远程仓库(master分支——master分支)

  6. 在本地创建dev分支

    在远程仓库checkout as 新建本地dev分支(master需要进行保护)

  7. 将本地dev分支push到远程仓库,新建远程仓库的dev分支

  8. 设置远程仓库中master分支为保护分支

8.4.2 项目开发者

  1. 从管理员提供的远程仓库pull项目到本地

    • 远程仓库

  2. 打开项目(此时本地工作空间的项目和远程仓库是同步的)

  3. 开发步骤:

    • 选择要修改的文件--pull

    • 进行修改操作

    • 测试本地修改

    • add到暂存区

    • commit到本地版本库

    • push到远程仓库(dev)

8.5 解决团队协同开发的冲突问题

冲突:在pull之后,push之前被其他开发者这push成功

  • 选择产生冲突的文件---pull

  • 弹出弹窗提示:accpet yours | accept theirs | Merge

    • accpet yours 保留自己的版本(提交时会覆盖其他开发者代码)

    • accpet theirs 保留远程仓库上的版本(会导致自己修改的代码丢失)

    • Merge 手动合并(和其他开发者沟通合并方案)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Git看这一篇就够了(IDEA版本) 的相关文章

  • 可以使用注解进行代码注入吗?

    我意识到这可能是一个已经被提出和回答的问题 但请耐心等待 我想知道是否可以使用注释将代码注入到类编译时 典型的示例是为对象的成员生成 getter 和 setter 这并不完全是我所需要的 但它可以说明基本思想 现在在互联网上我得到的基本答
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • 使用 Windows 锁定屏幕后删除 Kerberos 缓存票证

    无论如何 有没有办法阻止 Kerberos 缓存的票证在 Windows 进入锁定屏幕后被删除 首次登录 Windows 时 klist exe 显示 2 个缓存票证 但是 发生 Windows 锁屏事件后 klist exe 显示 0 个
  • Java SSO 与 Wildfly 8、Java 1.8.0_45 和 Active Directory

    我对这个主题进行了很多搜索 但找不到解决方案 要求的简短描述 Wildfly 8 2 下 Web 应用程序上的 SSO 在 Active Directory 中验证 Windows 用户的身份 当 SSO 失败时回退到登录表单 在 Wild
  • 在Java中打印时差最惯用的方法是什么?

    我熟悉以毫秒为单位的打印时间差 long time System currentTimeMillis do something that takes some time long completedIn System currentTime
  • 从两个数组中查找公共文件

    我正在尝试从两个数组中查找通用名称文件 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个通用文件数组 其中包含具有通用名称的文件 filenames 1 包含文件夹 1 中文件名称的数组 filename2 包含文件夹
  • 在同一个容器但不同的耳朵中使用本地EJB

    我正在尝试在同一个 Glassfish 但不同的耳朵中使用本地 EJB 但是Glassfish找不到本地EJB或者无法消费 我读到了这个 根据 JavaEE 教程 Local bean 的客户端 必须在与其访问的企业 bean 相同的 JV
  • 使用 GSON 将 JSON 字符串转换为 Java 对象

    我正在尝试将 json 解析为 java 根据 jsonlint com 我有以下字符串 该字符串是有效的 json private final static String LOC JSON lat1 39 737567 lat2 32 7
  • Java 堆分析因 SIGABRT 崩溃

    我正在尝试分析由 C 编写的方法分配并插入的本机内存JVM通过JNI 我安装了 valgrind version valgrind 3 13 0 并尝试使用以下选项运行 JVM valgrind tool massif massif out
  • 无法使用 Jsoup HTML 解析器 Java 实现某些功能

    我无法使用 Jsoup Java 库解析以下场景的一些文本 1 This is b My Text b some other b b text as well b b b non empty tag1 b other text 预期输出 s
  • Eclipse java 断点 - 目的是什么?

    我正在学习 Android 教程 刚刚进入调试部分 我想知道断点的用途是什么 我还不能告诉 它实际上停止了应用程序 以便我可以确定它运行到该点 或者我可以设置多个断点并将它们用作标记来从断点到断点检查 停止和运行 我的代码 断点是执行停止的
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • 我可以使用本机系统窗口作为父窗口使 JDialog 成为模式吗?

    我有一个 JDialog 窗口 我需要使其成为模态窗口 但父窗口不是 Java 窗口 而是本机 Windows 操作系统窗口 是否可以 不 你不能 您甚至无法不仅引用本机窗口 甚至无法引用运行在其他 JVM 中的 java 应用程序创建的窗
  • 使用 Swift 在 iOS 和 Android 之间共享核心代码

    我想要的是 使用 Swift 在 Android 和 iOS 之间共享非 UI 代码 问题 Android 具有 NDK 支持 允许您使用 Java 本机接口 JNI 运行 C 和 C 代码 不是 Objective C 我是一名Java程
  • JavaFX颜色选择器的语言

    有没有办法改变语言ColorPicker的文本 例如 自定义颜色 当前颜色 新颜色 色相 饱和度 亮度 不透明度 保存 使用 取消 编辑 以下答案适合那些需要更多内容的人exotic语言 如果您使用其中之一 de es fr it ja k
  • Android 调整图片大小

    我的图像存储在 SD 卡上 每个大小约为 4MB 我想调整每个的大小 而不是将其设置为 ImageView 但我不能使用BitmapFactory decodeFile path 因为异常 java lang OutOfMemoryErro
  • Spring 与 Thymeleaf 以 html 形式绑定日期

    我有一个简单的表单片段 例如
  • Java 需要一个 FileSet 包/类

    任何人都可以建议 Java 中的 FileSet 包 类吗 我所说的 FileSet 是指文件和目录的集合以及正则表达式支持的包含和排除规则 类似于 Apache Ant 谢谢 Apache 公共 IO文件工具 http commons a
  • Spring MVC 和复选框

    我正在使用 Spring MVC 3 0 并且不能完全看到这个问题的所有部分 我的控制器将生成一个域对象列表 假设有一个简单的 User 对象 具有firstName lastName age 和role 属性 我想在表中输出该用户列表 每
  • 将菜单添加到空活动

    我在 Android Studio 中制作了一个 Android 应用程序 并想在其上创建一个选项菜单 我将其创建为一个空活动 现在意识到我最好创建一个空白活动来获取选项菜单 无论如何 是否可以在空活动中创建选项菜单 如果有人能给我指出一个

随机推荐

  • warning: could not find UI helper ‘git-credential-manager-ui‘

    可以先试试别人的教程 58条消息 关于git 凭证存储 credential helper配置 解决 git pull push fetch remote not found的问题 DavidFFFFFF的博客 CSDN博客 我是因为换了电
  • Python pyinstaller打包exe最完整教程

    目录 1 简介 2 安装 3 原理和打包效果 3 1 原理概述 3 2 搜索模块 3 3 打包效果概述 3 4 打包成单个文件夹 优点 缺点 3 5 打包成单个exe 优点 缺点 4 打包 4 1 基本语法 4 2 参数总览 位置参数 可选
  • IDEA导入eclipse项目并部署运行完整步骤(转发)

    首先说明一下 idea里的project相当于eclipse里的workspace 而idea里的modules相当于eclipse里的project 1 File gt Import Project 在弹出的对话框里选择要导入的项目 2
  • IAR仿真确认延时程序时间的准确性

    单片机 程序经常会用到延时函数 毫秒延时或微秒延时函数 为了确认延时函数时间的准确性 以前经常是需要通过IO口输出波形来确认时间是否准确 最近发现了个更方便准确的方法 只需要通过IAR仿真软件即可准确知道延时函数的运行时间 1 首先在IAR
  • SQL 数据更新

    SQL 数据更新 数据更新有三种 插入 修改 删除 一 插入数据 插入元组 行 INSERT Into lt 表名 gt lt 属性列1 gt lt 属性列2 gt lt 属性列3 gt lt 属性列4 gt Values lt 常量1 g
  • 2022.7台式机装机指南(3060 + 12490F)

    文章目录 硬件购买 装机避坑 系统制作 系统激活 大学四年用的华硕飞行堡垒FX86 那时候的配置还可以 8代i7 1050ti 8G 256固态 1T机械 后来又买了一张内存条 扩到了16g 四年只出过2次故障 第一次蓝屏自己修好了 第二次
  • PDF Redactor - 涂黑屏蔽PDF文字让敏感内容不可读的软件工具

    PDF Redactor是一款Windows平台下的PDF小工具软件 旨在涂黑屏蔽或删除PDF文件中的敏感文本和图像以保护隐私 被屏蔽的内容不仅在PDF阅读器中无法查看 而且即使使用文本搜索功能也无法再找到这部分内容 这些内容将从PDF文件
  • python json.dumps中文乱码问题解决

    json dumps var ensure ascii False 并不能解决中文乱码的问题 json dumps在不同版本的Python下会有不同的表现 注意下面提到的中文乱码问题在Python3版本中不存在 注 下面的代码再python
  • 解决pyside6-uic生成py代码中文为unicode(乱码)的问题

    前言 本来想用Java做客户端 后来发现很多算法还是Python有现成的比较方便 所以最终选择了pyside6 但是用Designer QT设计师 设计完后 生成的代码中文部分显示为unicode 也可以理解为乱码 就像这样 self pu
  • 前端分页插件_免费开源的React前端框架——ReactAdmin

    介绍 ReactAdmin是一个Github上免费开源的前端框架 不是组件库 也不是模板 它是一个框架 采用es6 React和Material Design构建基于Rest GraphQl API的Web应用程序 在React上star数
  • Android实现用户登录和注册界面

    我们在做android项目时经常会用到用户登录 这里呈上实现了Spinner的登录界面 初学的朋友可以直接拿过来使用 本界面使用的是流式布局 也是我最喜欢用的布局方式 同学们可以通过代码了解一下 代码中Intent的使用有点杂乱 主要是为了
  • sql逗号分开的指定列,分成多行

    if object id tempdb dbo tb is not null drop table tb go create table tb id int price varchar 100 customer int cinvcode i
  • 掌握这个技能,再也不用为面试发愁了

    点击上方 前端瓶子君 关注公众号 回复算法 加入前端编程面试算法每日一题群 废话只说一句 码字不易求个 收藏 学会 快行动起来吧 评论区走起 在面试时 经过简单寒暄后 面试官一般先从让候选人自我介绍开始 紧接着就是问候选人简历中所列的项目
  • weblogic CVE-2023-21839 复现

    影响版本 Weblogic 12 2 1 3 0 Weblogic 12 2 1 4 0 Weblogic 14 1 1 0 0 这里是用的docker下载的vulhub的CVE 2023 21839 靶机和攻击机都是192 168 85
  • 2019.08 FSGAN -论文解读

    原文链接 https zhuanlan zhihu com p 138042376 笔者前言 FSGAN Subject Agnostic Face Swapping and Reenactment 是ICCV19的一篇文章 主要工作是面部
  • 高等代数 二次型与矩阵的合同(第6章)1 二次型,标准形,规范形

    一 二次型 6 1 1 概念 2 非退化线性替换 准确地说 应该是将 x x x用 C x Cx Cx带入 这样能保证代换前后二次型中的元不
  • 玩转Mysql系列 - 第15篇:详解视图

    这是Mysql系列第15篇 环境 mysql5 7 25 cmd命令中进行演示 需求背景 电商公司领导说 给我统计一下 当月订单总金额 订单量 男女订单占比等信息 我们啪啦啪啦写了一堆很复杂的sql 然后发给领导 这样一大片sql 发给领导
  • Request对象和response对象

    一 概念 request对象和response对象是通过Servlet容器 如Tomcat 自动创建并传递给Servlet的 Servlet容器负责接收客户端的请求 并将请求信息封装到request对象中 然后将request对象传 递给相
  • C语言实现栈(基于数组)

    栈是一种操作受限的数据结构 只允许从一段操作 而且先进后出 FILO first in last out 这里将栈的操作封装在C语言的头文件里 实现栈的代码如下 include
  • 关于Git看这一篇就够了(IDEA版本)

    目录 一 Git简介 1 1 项目的版本管理 1 2 团队协同开发 1 3 版本管理工具 Git 二 Git下载及安装 2 1 下载Git 2 2 安装Git 2 3 检查 三 Git架构 四 Git基本使用 4 1 创建版本库 4 2 查