Git知识点

一、Git简介

1.1 项目的版本管理

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

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

  • 需要手动维护版本的更新日志,记录每个版本的变化
  • 需要手动查找历史版本,当历史版本比较多的时候,查找工作很繁琐
  • 当我们需要回退到某个版本时,只能够手动的通过IDE工具手动打开

1.2 团队协同开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIBI9Oy5-1639493889409)(imgs/1616032657017.png)]

1.3 版本管理工具—Git

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

核心功能:

  • 项目的版本管理
  • 团队协同开发

二、Git下载及安装

2.1 下载Git

https://git-scm.com/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CPgIpSJI-1639493889413)(imgs/1616033012417.png)]

2.2 安装Git

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

2.3 检查

  • win + r
  • 输入cmd
  • 输入 git --version

三、Git架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cCFrAe8W-1639493889414)(imgs/1616034871080.png)]

四、Git基本使用

4.1 创建版本库

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l7wW7Shn-1639493889417)(imgs/1616036472274.png)]

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 远程仓库

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

远程仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BdS1W4Zj-1639493889419)(imgs/1616038980419.png)]

5.2 如何获得远程仓库

  • 使用GitLab搭建私服
  • 远程仓库提供商
    • GitHub https://gitbub.com
    • Gitee(码云) https://gitee.com
    • Coding

5.3 创建远程仓库(码云)

  • 注册账号

    • 366274379 / admin123

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5O0L8CvS-1639493889420)(imgs/1616039783023.png)]

  • 创建远程仓库:https://gitee.com/qfytao/j2010.git

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWFAU8Pi-1639493889420)(imgs/1616040201202.png)]

六、远程仓库操作

6.1 push本地仓库到远程仓库

6.1.1 准备工作
  1. 创建本地工作空间

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

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

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

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

    https://gitee.com/qfytao/fmwy.git

6.1.2 本地仓库关联远程仓库

建立D:\fmwy中的本地仓库 和 远程仓库https://gitee.com/qfytao/fmwy.git的关联

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

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

git push origin master

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fzPZAkpC-1639493889421)(imgs/1616049675765.png)]

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

其他开发者:www.1114325587@qq.com *****

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

  • 创建本地版本库

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

    git pull 远程仓库地址 master
    git pull https://gitee.com/qfytao/fmwy2.git master
    

6.3 解决协同开发冲突问题

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i4t3nA2j-1639493889422)(imgs/1616118889055.png)]

8.2 IDEA中Git版本管理

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

8.2.1 创建本地版本库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENbgEJzN-1639493889422)(imgs/1616119511804.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yl3JQ2To-1639493889423)(imgs/1616119549533.png)]
8.2.2 设置忽略文件

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

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

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

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

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VC6ef12H-1639493889423)(imgs/1616120607480.png)]

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
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7pY3Jm1O-1639493889424)(imgs/1616123528818.png)]
8.3.4 合并分支

例如:将dev合并到master

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

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

8.4.1 项目管理者
  1. 完成项目搭建

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

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

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

    • https://gitee.com/qfytao/git-jd.git
    • 管理—添加开发者
  5. 将本地仓库push到远程仓库(master分支——master分支)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eRiobKUN-1639493889425)(imgs/1616124645208.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C9XlLNfv-1639493889425)(imgs/1616124765710.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvHXxc7t-1639493889426)(imgs/1616124999737.png)]
  1. 在本地创建dev分支

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6hwSjGsm-1639493889426)(imgs/1616125230163.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7MEV8S42-1639493889427)(imgs/1616125375770.png)]
  2. 将本地dev分支push到远程仓库,新建远程仓库的dev分支

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frrc3mPO-1639493889427)(imgs/1616125529083.png)]

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ahh2hSdC-1639493889428)(imgs/1616125664648.png)]

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

    • 远程仓库 https://gitee.com/qfytao/git-jd.git
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oPKui0pu-1639493889428)(imgs/1616126055257.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-79ZV88tQ-1639493889429)(imgs/1616126193999.png)]
  2. 打开项目(此时本地工作空间的项目和远程仓库是同步的)

  3. 开发步骤:

    • 选择要修改的文件–pull
    • 进行修改操作
    • 测试本地修改
    • add到暂存区
    • commit到本地版本库
    • push到远程仓库(dev)

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

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

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

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

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

相关文章

(1)初始化项目

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;1&#xff09;初始化项目 1 使用vue-cli初始化项目 vue init webpack my-renren得到以下输出&#xff1a; ? Project name my-renren ? Project description A Vue.js project ? Author neumeng <4048…

C语言变量

C语言二进制、八进制、十六进制详解 什么是二制制? 在数学计算中&#xff0c;二进制计数系统的公分母是最小的&#xff0c;它以2为基数。你还记得在小学或中学时所学的不同的计数系统吗?笔者在上小学时&#xff0c;曾在一堂数学课中学过以6为基数的计数系统&#xff1b;你先…

Spring Data JPA - 参考文档 地址

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Spring Data JPA - 参考文档 文档地址

JS内置方法(Array)

concat() 用于连接两个或多个数组&#xff0c;该方法不会改变现有的数组&#xff0c;而是返回被连接数组的一个副本。join() 把数组中的所有元素放入一个字符串&#xff0c;元素是通过指定的分隔符进行分隔的。若省略了分隔符参数&#xff0c;则使用逗号作为分隔符。push() 向…

模切ERP和免费OA系统是互相结合提高效率

模切ERP和免费OA系统是互相结合提高效率在模切行业中&#xff0c;模切ERP在管理上的作用占了很大的比重&#xff0c;但是免费OA在管理上的地位都不容忽视的。点晴OA的核心问题是如何提高日常的办公效率问题。因此点晴OA系统里包含的功能是非常全面&#xff0c;如&#xff1a;办…

maven知识点

一、Maven简介 1.1 在项目中如何导入jar包&#xff1f; 下载jar包 &#xff08;mvn&#xff09;将下载的jar包拷贝到项目中&#xff08;WEB-INF/lib&#xff09;选择jar文件–右键–Add as Library 1.2 传统导入jar包的方式存在什么问题&#xff1f; 步骤多&#xff08;相对…

使用SpringBoot yml配置文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.上一次我们已经使用SpringBoot实现了一个简单的HelloWord程序&#xff0c;辣么接下来我们简单的使用一下他的yml格式的配置文件。 2.在…

软件行业资讯

为什么只有设计师才能发明流行的新语言 先回顾一下知名编程语言的作者和创造时间&#xff1a;Fortran 语言&#xff0c;50年代&#xff0c;IBM 研究员&#xff1b;Lisp 语言&#xff0c;50年代&#xff0c;MIT 的教授和学生&#xff1b;C语言&#xff0c;70年代&#xff0c;贝尔…

spring知识点

一、Spring概述 1.1 web项目开发中的耦合度问题 在Servlet中需要调用service中的方法&#xff0c;则需要在Servlet类中通过new关键字创建Service的实例 public interface ProductService{public List<Product> listProducts(); }public class ProductServiceImpl1 imple…

Linux系统下的权限试题测试

不会做的留言&#xff0c;到时在发布答案&#xff01;一、 有两个参赛团队team1、team2&#xff0c;两个团队各3人, 这两个团队互相竞争&#xff0c;各需提交一份报告&#xff0c;每组成员可以修改自己团队内的所有文件&#xff0c;且不能让其他团队的人修改自己的文件内容&…

电子科大软件系统架构设计——软件建模详细设计

文章目录 软件建模详细设计概述软件建模详细设计目标软件建模详细设计原则开闭原则里氏 (Liskov) 替换原则依赖倒置原则接口分离原则单一职责原则最少知识原则&#xff08;迪米特法则&#xff09;高内聚原则松耦合原则可重用原则 软件建模详细设计内容 UML 软件静态结构视图建模…

YAML文件解析

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 YAML是“另一种标记语言”的外语缩写,YAML 是一种比JSON&#xff08;json多层次{ 与 [ 会被搞晕的&#xff09;更直观的表现形式&#xf…

120分钟React快速扫盲教程

在教程开端先说些题外话&#xff0c;我喜欢在学习一门新技术或读过一本书后&#xff0c;写一篇教程或总结&#xff0c;既能帮助消化&#xff0c;也能加深印象和发现自己未注意的细节&#xff0c;写的过程其实仍然是一个学习的过程。有个记录的话&#xff0c;在未来需要用到相关…

springmvc知识点

一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架。 SpringMVC是基于Servlet封装的用于实现MVC控制的框架&#xff0c;实现前端和服务端的交互。 1.1 SpringMVC优势 严格遵守了MVC分层思想 采用了松耦合、插件式结构&#xff1b;相比较于我们封装的…

spring @component的作用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、controller 控制器&#xff08;注入服务&#xff09; 2、service 服务&#xff08;注入dao&#xff09; 3、repository dao&#xff…

微信小程序 悬浮按钮

2019独角兽企业重金招聘Python工程师标准>>> 效果视频 https://pan.baidu.com/s/1yfrDaG9YAX0--v0EA3awZA 布局需要按照圆形排列&#xff0c;所以我们需要计算每个点的坐标 代码部分 <view styleposition:fixed; wx:for"{{list}}" wx:for-index"i…

C语言const关键字—也许该被替换为readolny

const 是constant 的缩写&#xff0c;是恒定不变的意思&#xff0c;也翻译为常量、常数等。很不幸&#xff0c;正是因为这一点&#xff0c;很多人都认为被const 修饰的值是常量。这是不精确的&#xff0c;精确的说应该是只读的变量&#xff0c;其值在编译时不能被使用&#xff…

dbus服务自启动方法

Linux 一般发行版上 "/usr/share/dbus-1/services/"目录就是dbus放service文件的地方。 需要自动启动的服务器 就在这个目录放一个 service文件&#xff0c;内容如下&#xff1a; $ cat /usr/share/dbus-1/services/dhcdbd.service [D-BUS Service] Namecom.redhat.…

在Spring Boot中使用 @ConfigurationProperties 注解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 上一篇博客写了 如何在Spring Boot application中配置mail . 使用 Value 注解注入属性. 但 Spring Boot 提供了另一种方式 &#xff0c;能…

Micronaut教程:如何使用基于JVM的框架构建微服务

\本文要点\\Micronaut是一种基于jvm的现代化全栈框架&#xff0c;用于构建模块化且易于测试的微服务应用程序。\\tMicronaut提供完全的编译时、反射无关的依赖注入和AOP。\\t该框架的开发团队和Grails框架的开发团队是同一个。\\tMicronaut框架集成了云技术&#xff0c;服务发现…