关于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版本) 的相关文章

  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 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 查