Git的基本使用

一、Git架构

在这里插入图片描述

二、Git基本使用

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

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

查看版本库状态
git status
将工作空间的修改添加到暂存区
git add a.txt   ## 只将工作空间中的某个文件add到暂存区
git add . ## 将工作空间中所有文件都add暂存区
将暂存区内容提交到版本库(仓库)
git commit -m '版本说明'
查看版本库中的历史版本
git log --oneline  ## 每个版本信息只显示一行
get log  ## 显示每个版本的详细信息
回滚
git reset --soft HEAD^

这样就成功撤销了commit,如果想要连着add也撤销的话,–soft改为–hard(删除工作空间的改动代码)。

命令详解:

HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1 如果进行两次的commit,想要都撤回,可以使用HEAD~2

–soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add file

–hard 删除工作空间的改动代码,撤销commit且撤销add

另外一点,如果commit注释写错了,先要改一下注释,有其他方法也能实现,如:

git commit --amend 这时候会进入vim编辑器,修改完成你要的注释后保存即可。

使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交:
(1)反做,使用“git revert -n 版本号”命令。如下命令,我们反做版本号为8b89621的版本:

git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861

注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。
(2)提交,使用“git commit -m 版本名”,如:

git commit -m "revert add text.txt" 

此时可以用“git log”查看本地的版本信息,可见多生成了一个新的版本,该版本反做了“add text.txt”版本,但是保留了“add text2.txt”版本:

设置用户信息

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

git config --global user.name 'ergou'
git config --global user.email 'haha@hehe.com'
同步历史版本到工作空间
git checkout 版本号

三、远程仓库

远程仓库

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

如何获得远程仓库
  • 使用GitLab搭建私服
  • 远程仓库提供商
    • GitHub https://gitbub.com
    • Gitee(码云) https://gitee.com
    • Coding
创建远程仓库(码云)
  • 注册账号

  • 创建远程仓库

  • 远程仓库管理(添加开发人员)

四、远程仓库操作

push本地仓库到远程仓库
准备工作
  1. 创建本地工作空间

    D:\fmwysrcmainjavaresourcestestjavapom.xml
    
  2. 初始化本地仓库

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

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

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

本地仓库关联远程仓库

建立本地仓库 和 远程仓库的关联

 git remote add origin https://gitee.com/xxxxx/xxxx.git
查看远程仓库状态
git remote -v
将本地仓库push到远程仓库

push到远程仓库需要gitee的帐号和密码

git push origin master
其他开发者pull远程仓库到本地

其他开发者:xxx@qq.com *****

先创建本地仓库
  • 在E盘创建test目录(空目录),进入ws目录,打开Git客户端

  • 创建本地版本库

    git init
    
拉取远程仓库到本地
  • 拉取远程仓库

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

HelloWorld.java

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

五、分支管理

什么是分支

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

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

分支特性
  • 创建一个新的版本库,默认创建一个主分支—master分支
  • 每个分支可以进行单独管理(常规分支、保护分支、只读分支)
  • 分支是可以合并的
分支操作
创建分支
git branch branch_name
查看分支
git branch
切换分支
git branch branch_name  # 切换到指定分支上的最新版本
检出分支
git checkout 历史版本 -b branch_name  # 签出指定的历史版本创建新分支
分支合并
  • 三方合并
  • 快速合并
# 在master分支执行 git merge dev   表示将dev分支合并merge
git merge breanch_name

六、Idea整合Git使用

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

IDEA关联Git
IDEA中Git版本管理

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

创建本地版本库

在这里插入图片描述

设置忽略文件

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

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

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

    .idea
    target
    *.iml
    
将工作空间add到暂存区
  • 选择项目/文件—右键—Git—Add(添加到暂存区的文件–绿色)

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

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

将暂存区提交到版本库
  • 选择项目/文件—右键—Git–Commit(记录到版本库的文件–黑色)

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

IDEA中Git分支管理
创建分支
  • 点击IDEA右下角Git
  • 在弹窗中点击New Branch
  • 输入新分支的名称
切换分支
  • 点击IDEA右下角Git
  • 点击非当前分支右边的箭头
  • 在选项卡点击checkout
删除分支
点击右小角git
在这里插入图片描述
合并分支

例如:将dev合并到master

  • 切换到master分支
  • 点击dev分支右面的箭头,在展开的菜单中选择Merge into current
IDEA中使用Git进行团队协同开发
项目管理者
  1. 完成项目搭建

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

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

    • add到暂存区
    • commit到版本库
  4. 创建远程版本库(远程仓库)

    • 管理—添加开发者
  5. 将本地仓库push到远程仓库(master分支——master分支)

  6. 在本地创建dev分支

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

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

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

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

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

  3. 开发步骤:

    • 选择要修改的文件–pull
    • 进行修改操作
    • 测试本地修改
    • add到暂存区
    • commit到本地版本库
    • push到远程仓库(dev)
解决团队协同开发的冲突问题

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

  • 选择产生冲突的文件—pull
  • 弹出弹窗提示:accpet yours | accept theirs | Merge
    • accpet yours 保留自己的版本(提交时会覆盖其他开发者代码)
    • accpet theirs 保留远程仓库上的版本(会导致自己修改的代码丢失)
    • Merge 手动合并(和其他开发者沟通合并方案)

对于推送被拒的情况

​ 在远程仓库新建了README.md文件或远程仓库已有文件,而本地仓库为空与远程仓库还没有进行关联,因此需要将两个仓库的文件进行关联后提交。
切换到本地项目所在的目录中,右键选择GIT Bash Here

在弹出窗口中依次输入以下 git 命令:

git pullgit pull origin mastergit pull origin master --allow-unrelated-histories

在idea中重新push自己的项目,如果还不成功,试着删除项目的.git文件夹,重新初始化git。

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

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

相关文章

【汽车销售数据】2015~2023年各厂商各车型的探索 数据分析可视化

数据处理的思路&#xff1a; 1 各表使用情况&#xff1a; 汽车分厂商每月销售表&#xff0c;该表主要分析展示top10销量的厂商销量、占比变化情况&#xff08;柱形图、饼图&#xff09;&#xff1b;中国汽车分车型每月销售量表&#xff0c;该表主要分析展示top20销量的车型销…

基于springboot+uniapp的图书馆座位预约小程序(Java毕业设计)

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

MongoDB-数据库文档操作(2)

任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握&#xff1a; 查询文档命令&#xff1b;删除文档命令。 查询文档 我们先插入文档到集合 stu1 &#xff1a; document([{ name:张小华, sex:男, age:20, phone:12356986594, hobbies:[打篮球,踢足球…

【RT-DETR有效改进】轻量级视觉变换器RepViT改进特征提取网络(轻量化网络)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

【生态适配】亚信安慧AntDB数据库与契约锁完成兼容互认

日前&#xff0c;亚信安慧AntDB数据库与上海亘岩网络科技有限公司&#xff08;简称:契约锁&#xff09;研发的契约锁电子签章产品完成兼容互认。经过双方团队的严格测试&#xff0c;亚信安慧AntDB数据库与契约锁&#xff08;V4&#xff09;完全兼容&#xff0c;整体运行稳定高效…

Docker-数据卷网络

docker数据卷 docker volume ls #查看有哪些数据卷 docker volume inspect mysql-db #查看具体数据卷的元信息 docker container run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORDTrue -v mysql-db:/var/lib/mysql mysql #会在docker 的卷下面新建一个mysqldb用于数据持久…

架构篇02-架构设计的历史背景

文章目录 机器语言&#xff08;1940 年之前&#xff09;汇编语言&#xff08;20 世纪 40 年代&#xff09;高级语言&#xff08;20 世纪 50 年代&#xff09;第一次软件危机与结构化程序设计&#xff08;20 世纪 60 年代~20 世纪 70 年代&#xff09;第二次软件危机与面向对象&…

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame&#xff0c;关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下&#xff1a; 游戏源码如下&#xff1a; import pygame import sy…

STM32——IIC知识总结及实战

1 IIC概念及结构体 IIC&#xff1a;Inter Integrated Circuit&#xff0c;集成电路总线&#xff0c;是一种同步 串行 半双工通信总线。 结构图 2 IIC协议时序 ① 起始信号 当 SCL 为高电平期间&#xff0c;SDA 由高到低的跳变。起始信号是一种电平跳变时序信号&#xff0c;而…

【EI会议征稿通知】2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024)

2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024) 2024 3rd International Conference on the Energy Internet and Energy Interactive Technology 随着EIEIT前2届的成功举办&#xff0c;我们很荣幸地宣布&#xff0c;2024年第三届能源互联网及能源交互技术国际学术…

通过Vscode 简单创建一个vue3+element的项目

首先确保安装的nodejs是18版本以上 确保你安装了最新版本的 Node.js&#xff0c;并且你的当前工作目录正是打算创建项目的目录。在命令行中运行以下命令 VSCode打开终端 输入构建项目命令&#xff0c;个人推荐如果有cnpm使用cnpm npm create vuelatest cnpm create vuelate…

YOLOv5改进 | 检测头篇 | ASFFHead自适应空间特征融合检测头(全网首发)

一、本文介绍 本文给大家带来的改进机制是利用ASFF改进YOLOv5的检测头形成新的检测头Detect_ASFF,其主要创新是引入了一种自适应的空间特征融合方式,有效地过滤掉冲突信息,从而增强了尺度不变性。经过我的实验验证,修改后的检测头在所有的检测目标上均有大幅度的涨点效果,…

AI与区块链的完美交融创新时代的双重引擎

每个投资者都梦想早日进入“下一个亚马逊、苹果或比特币”&#xff0c;以追求代际财富。 然而&#xff0c;这些机会很少而且相距甚远&#xff0c;而且正如每一个虔诚的加密货币本地人都知道的那样&#xff0c;这条道路上常常布满了失败的项目、失信的承诺和波动。 但在 2023 …

flink1.15 维表join guava cache和mysql方面优化

优化前 mysql响应慢,导致算子中数据输出追不上输入,导致显示cpu busy:100% 优化后效果两个图对应两个时刻: - - -- 优化前 select l.id,JSON_EXTRACT(r.msg,$$.key1) as msgv (select id,uid from tb1 l where id?) join (select uid,msg from tb2) r on l.uidr.uid;-- 优化…

STM32+HAL库驱动ADXL345传感器(SPI协议)

STM32HAL库驱动ADXL345传感器&#xff08;SPI协议&#xff09; ADXL345传感器简介实物STM32CubeMX配置SPI配置片选引脚配置串口配置 特别注意&#xff08;重点部分&#xff09;核心代码效果展示 ADXL345传感器简介 ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加…

Flink(十三)【Flink SQL(上)】

前言 最近在假期实训&#xff0c;但是实在水的不行&#xff0c;三天要学完SSM&#xff0c;实在一言难尽&#xff0c;浪费那时间干什么呢。SSM 之前学了一半&#xff0c;等后面忙完了&#xff0c;再去好好重学一遍&#xff0c;毕竟这玩意真是面试必会的东西。 今天开始学习 Flin…

专业140+总410+哈尔滨工业大学803信号与系统和数字逻辑电路考研经验哈工大电子信息(信息与通信工程-信通)

一年的努力付出终于有了收获&#xff0c;今年专业课140&#xff0c;总分410顺利上岸哈工大803电子信息&#xff08;信息与通信-信通&#xff09;&#xff0c;回顾总结了自己这一年的复习&#xff0c;有得有失&#xff0c;希望对大家复习有所帮助。 数学 时间安排&#xff1a;…

“五星卡”上新!合合信息“外国人永久居留身份证”识别产品助力金融机构提升服务效率

外国人永久居留身份证&#xff08;简称“永居证”&#xff09;&#xff0c;是国家移民管理局对符合条件的外国人批准其在境内永久居留后&#xff0c;为其签发的法定身份证件。2023年12月&#xff0c;国家移民管理局正式启用签发更趋近于居民身份证技术体系的新一版永居证&#…

【Flutter 开发实战】Dart 基础篇:List 详解

嗨&#xff0c;各位朋友们&#xff0c;欢迎来到这篇博客&#xff01;今天我们将一起踏入 Dart 语言的神奇世界&#xff0c;深入了解 Dart 中的 List 类型。不用担心&#xff0c;我会尽可能用最通俗易懂的语言&#xff0c;让你对 List 有一个更深刻的理解。 Dart 中的 List Li…

SegVol: Universal and Interactive Volumetric Medical Image Segmentation

Abstract 精确的图像分割为临床研究提供了有意义且结构良好的信息。尽管在医学图像分割方面取得了显著的进展&#xff0c;但仍然缺乏一种能够分割广泛解剖类别且易于用户交互的基础分割模型。 本文提出了一种通用的交互式体医学图像分割模型——SegVol。通过对90k个未标记的C…