Git学习记录

文章目录

  • 一、版本控制工具
    • 1.1、集中式版本控制工具
    • 1.2、分布式版本控制工具
  • 二、Git安装与常用命令
    • 2.1、Git环境配置
    • 2.2、基础操作指令
    • 2.2、分支
      • 2.2.1、基本指令
      • 2.2.2、合并冲突
  • 三、Git远程仓库
    • 3.1、添加和查看远程仓库
    • 3.2、推送到远程仓库
    • 3.3、从远程仓库克隆
    • 3.4、从远程仓库中抓取和拉取
    • 3.5、解决合并冲突
  • 四、在Idea中使用Git
    • 4.1、设置远程仓库
    • 4.2、git clone
    • 4.3、git merge

一、版本控制工具

1.1、集中式版本控制工具

  集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。

  举例:SVN和CVS
在这里插入图片描述

1.2、分布式版本控制工具

  分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,不需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的
修改了。举例:Git。
在这里插入图片描述
 
Git工作流程图:
在这里插入图片描述

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库。
  2. checkout (检出):从本地仓库中检出一个仓库分支到工作区,然后进行修订。
  3. add(添加): 在提交前先将代码提交到暂存区。
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本。
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge。
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。

二、Git安装与常用命令

2.1、Git环境配置

安装完成后,右键会出现这两个选项:

  • Git GUI:Git提供的图形界面工具。
  • Git Bash:Git提供的命令行工具。

在这里插入图片描述

安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

查看git所有配置信息:
git config -l清除历史命令:
clear查看用户配置:
git config --global --list设置用户名:
git config --global user.name "用户名"设置邮箱:
git config --global user.email 邮箱

2.2、基础操作指令

1.桌面上随便建一个文件夹:
在这里插入图片描述
2.进入文件夹,右键->git bash,执行git init,就创建了一个本地仓库
在这里插入图片描述
接下来就可以尝试git的各种命令了,下图是从右向左看的,仓库是本地仓库

在这里插入图片描述

  • git add:工作区 --> 暂存区
  • git add .:将所有修改加入暂存区
  • git commit:暂存区 --> 本地仓库
  • git commit -m '注释内容':提交暂存区内容到本地仓库的当前分支
  • git status:查看的修改的状态(暂存区、工作区)
  • git reset --hard commitID:版本切换(commitID 可以使用 git log 指令查看)
  • git log :查看提交记录

在这里插入图片描述
  如上图,有两次commit,想回到第一次commit后的状态,就执行命令,此时回到了第一次commit后的状态(图中的git -log是给一长串命令起的别名)。如果又想回到第二次commit后的状态,可以用git refllg命令查看提交记录,然后执行git reset --hard commitID就可以了。

在这里插入图片描述
在这里插入图片描述
 
 
  一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。

2.2、分支

  几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

2.2.1、基本指令

  • git branch:查看本地分支
  • git branch 分支名:创建本地分支
    在这里插入图片描述
  • git checkout 分支名:切换分支
    在这里插入图片描述
  • git checkout -b 分支名:直接切换到一个不存在的分支(创建并切换
  • git merge 分支名称:合并分支
    在这里插入图片描述

2.2.2、合并冲突

  当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突。master和dev分支都有file01文件,master分支上写入update count = 2,dev分支上写入update count = 3,此时将dev合并到master就会出行冲突:

在这里插入图片描述

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)

在这里插入图片描述

三、Git远程仓库

3.1、添加和查看远程仓库

此操作是先初始化本地库,然后与已创建的远程库进行对接:git remote add <远端名称> <仓库路径>

  • 远端名称,默认是origin,取决于远端服务器设置。
  • 仓库路径,从远端服务器获取此URL。

在这里插入图片描述

3.2、推送到远程仓库

git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]
  • -f :表示强制覆盖,如果线上代码和推送的代码冲突,以推送的为准,一般公司里都会禁用。
  • --set-upstream:推送到远端的同时并且建立起本地分支和远端分支的关联关系,后续就知道需要把本地分支的代码推送到远端的哪个分支了。
    在这里插入图片描述

如果当前分支已经和远端分支关联,则可以省略分支名和远端名,直接git push 将本地分支推送到已关联的远端分支。

3.3、从远程仓库克隆

  一般在公司里,是由具有权限的管理人员创建好远程仓库和开发组件的基本框架,对应的开发人员需要将此组件从远程仓库克隆到本地后再进行开发。命令是:git clone <仓库路径> [本地目录],【本地目录】可以省略,会自动生成一个目录。

3.4、从远程仓库中抓取和拉取

远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。

  • git fetch [remote name] [branch name]:抓取指令就是将仓库里的更新都抓取到本地,不会进行合并。如果需要将远程分支合并到本地分支,还需要执行git merge命令。
  • git pull [remote name] [branch name]:拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于git fetch + git merge

3.5、解决合并冲突

  在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支,如下图所示:

在这里插入图片描述
  在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同,在此不再赘述(本质就是由开发人员决定要保留谁的代码或者更改成想要的结果)。

四、在Idea中使用Git

4.1、设置远程仓库

在这里插入图片描述
将上图中在gitee中创建的仓库的SSH地址,在git push时配置。

在这里插入图片描述

4.2、git clone

在gitee中复制目标仓库的SSH地址:

在这里插入图片描述
idea中找到git clone功能:

在这里插入图片描述
将SSH地址粘贴即可:
在这里插入图片描述

4.3、git merge

在这里插入图片描述

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

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

相关文章

如何打开/关闭 GitLab 的版本检查功能?

本文分享如何打开/关闭 GitLab 的版本检查功能。 极狐GitLab 是 GitLab 的中国发行版【https://dl.gitlab.cn/ncecn6kb】&#xff0c;中文版本对中国用户更友好&#xff0c;文章以私有化部署的极狐GitLab 实例来演示版本检查功能的开启和关闭。强烈不建议关闭该功能&#xff0…

Docker入门系列——网络

Docker 通过容器化应用程序&#xff0c;彻底改变了我们构建、分发和运行应用程序的方式。然而&#xff0c;有效使用 Docker 的一个关键方面是理解容器如何相互通信以及与外界通信。 1. 什么是 Docker 网络&#xff1f; Docker 网络允许容器相互通信以及与外部资源通信。默认情况…

20241029软考架构-------软考案例9答案

每日打卡题案例9答案 【2014年真题】 难度&#xff1a;简单 请详细阅读有关软件架构评估方面的说明&#xff0c;回答下列问题。&#xff08;25分&#xff09; 【说明】 某电子商务公司拟升级目前正在使用的在线交易系统&#xff0c;以提高客户网上购物时在线支付环节的效率和安…

双分解+一区极光优化+Transformer!CEEMDAN-Kmeans-VMD-PLO-Transformer多元时序预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CEEMDAN-Kmeans-VMD-PLO-Transformer融合K均值聚类的数据双重分解极光优化Transformer多元时间序列预测&#xff08;完整源码和数据&#xff09; 2.CEEMDAN分解&#xff0c;计算样本熵&#xff0c;根据样…

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前&#xff0c;需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed&#xff0c;它就是一个绝对定位元素。​ 在…

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候&#xff0c;出现一个问题&#xff1a; 表头过长的时候&#xff0c;会有左右滑动的操作&#xff0c;当我们把表格拉到最右侧&#xff0c;这个时候重新请求数据的话&#xff0c;表格位置还是在最右侧&#xff0c;不会恢复原位。 那我们想恢复原位&a…

【Android】View的事件分发机制

文章目录 分发顺序ActivityViewGroupView 协作方法整体流程注意 Activity事件分发ViewGroup事件分发View点击事件总结 分发顺序 Activity->ViewGroup->View Activity 分发事件&#xff1a;Activity 通过 dispatchTouchEvent 方法分发事件&#xff0c;首先尝试将事件传递…

基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,公告信息,课程分类,考研资料,考研视频,课程信息,院校建议,教师 开题报告内容 基于Vue框架的考研网上辅导系统开题报告 一、研究背景与意义 随着高等教育的普及和就业竞争的加剧&#xff0c;考研已成为众多大学生提升学历、增强就…

分析 std::optional 的使用与常见错误

文章目录 引言常见错误及解决方案1. 错误使用 std::optional 变量进行算术运算2. 错误检查 std::optional 是否有值3. 忽视 std::optional 的默认值 结论 引言 std::optional 是 C17 引入的一个模板类&#xff0c;用于表示可能有也可能没有值的情况。它特别适用于函数返回值&a…

本地搭建php包依赖管理工具,使用satis搭建私有composer仓库

一、总体设计 dns服务器nginxsatis web 静态页面satis manage 管理程序 二、nginx配置 1、nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://ngi…

软件测试学习笔记丨SeleniumPO模式

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于sel…

Ubuntu-22.04 虚拟机安装

1. Ubuntu安装方式 1.1. 基于物理介质安装 光盘安装&#xff1a;通过将 Ubuntu 镜像刻录到光盘&#xff0c;在计算机 BIOS/UEFI 中设置光盘为第一启动项&#xff0c;然后按照安装程序的提示进行语言选择、分区、用户信息设置等操作来完成安装。这种方式需要有光盘刻录设备和空…

软件设计师-上午题-12、13 软件工程(11分)

软件工程题号一般为17-19和29-36题&#xff0c;分值一般为11分。 目录 1 软件过程 1.1 CMM(能力成熟度模型) 1.1.1 真题 1.2 CMMI(能力成熟度模型集成) 1.2.1 真题 2 软件过程模型 2.1 瀑布模型 2.2 V模型 2.2.1 真题 2.3 增量模型 2.3.1 真题 2.4 演化模型 2.5 …

Bartender 5 for Mac 菜单栏管理软件 安装教程【保姆级教程,操作简单小白轻松上手使用】

Mac分享吧 文章目录 Bartender 5 for Mac 菜单栏管理软件 安装完成&#xff0c;软件打开效果一、Bartender 5 菜单栏管理软件 Mac电脑版——v5.2.3⚠️注意事项&#xff1a;1️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件3️⃣&#xff1a;打开软件&#xff0c;根据自己…

C#/.NET/.NET Core优秀项目和框架2024年10月简报

前言 每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架&#xff08;每周至少会推荐两个优秀的项目和框架当然节假日除外&#xff09;&#xff0c;推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等&#xff08;打不开或者打开GitHub很慢的同学可以优先查看…

OWASP TOP10 OSS 风险:开源软件安全指南

OWASP OSS 列表提供了旨在绕过 CVE 目录等滞后指标的建议&#xff0c;并为安全从业者提供了安全使用 OSS 组件的指南。 在最近的一些暴露的漏洞和风险之后&#xff0c;对开源软件 &#xff08;OSS&#xff09;的安全和使用方式进行批判性审视的呼声越来越高&#xff0c;特别是 …

数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 Matlab基于SP符号递归图&#xff08;Symbolic recurrence plots&#xff09;一维数据转二维图像方法 符号递归图(Symbolic recurrence plots)是一种一维时间序列转图像的技术&#xff0c;可用于平稳和非平稳数据集;对噪声具有…

01.如何用DDD重构老项目

学习资料来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 动机DDD与重构实践重构? 重写从一开始就采用DDD重构步骤1. 添加领域模块2.分离出有价值的代码3.迁移到领域模块4.重复2,3 动机 …

【uni-app】创建自定义模板

1. 步骤 打开自定义模板文件夹 在此文件夹下创建模板文件&#xff08;注意后缀名&#xff09; 重新点击“新建页面” 即可看到新建的模板 2. 注意事项 创建的模板必须文件类型对应&#xff08;vue模板就创建*.vue文件, uvue模板就创建*.uvue文件&#xff09;

本地部署开源在线即时通讯软件Fiora打造个人私密聊天室

文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 相信大家在聊天时候总是很没安全感&#xff0c;比如在和小姐妹背着男朋友聊一些不能说的坏话&#xff0c;或者背着女朋友和兄…