Git基础操作快速入门

news2025/2/28 2:48:33

Git是一个免费开源分布式版本控制工具,是由Linux的作者Linus开发的第二个伟大作品。2005年由于BitKeeper软件公司对Linux社区停止了免费使用权。Linus迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了

目前使用Git作为版本控制的开源软件:Linux kernel,Android,jQuery,Ruby on Rails,github,码云Gitee等

Git官网可以下载:https://git-scm.com/

1.Git安装

1.1Git服务器的安装

2.Git命令操作

2.1Git交互流程图

  • Clone:克隆,从共享仓库/中央仓库将代码拷贝一份下来
  • Commit:提交,提交的本地仓库
  • PUSH:推送,将本地仓库代码推送到远程中央仓库
  • PULL:拉取,从远程仓库下载最新的代码
  • Git是先提交到本地仓库,然后再推送

2.2 工作区&暂存区

2.3Git命令操作

桌面新建三个文件夹:

模拟两个开发人员本地仓库:gittest/user1 和 gittest/user2

模拟项目经理远程仓库master:gittest

==============仓库管理员或项目经理操作========================
第一步: 创建仓库,进入gittest目录 - 右键Git Bash here
git init --bare pethome
-- pethome仓库名称可以改【--bare 是参数不用管】

==============开发人员1操作=============================
第二步:克隆,进入usr1目录 - 右键Git Bash here
git clone ../pethome  -- 相对路径的写法【使用TAB自动补全】

第三步:设置个人信息【用户名和邮箱】
cd pethome
git config user.name "user1"
git config user.email "user1@163.com"

第四步:新建一个文件并写入数据
echo "User1 add content" > index.jsp 
-- 会自动创建文件,并将User1 add content字符串写入index.jsp【>>追加写】

第五步:添加并提交文件 -- 提交到本地仓库
git add index.jsp -- 添加到暂存区
git commit -m "User1 add the file"

第六步:把自己的仓库提交到公共服务器
git push origin master

==============开发人员2操作=============================
第七步:克隆,进入usr2目录 - 右键Git Bash here
git clone ../pethome  -- 相对路径的写法【使用TAB自动补全】

第八步:设置个人信息【如果不这是在提交的时候会出问题】
cd pethome
git config user.name "user2"
git config user.email "user2@163.com"

第九步:编写代码:>表示覆盖写,>>表示追加写
echo "User2 add content" >> index.jsp

第十步:添加并提交文件 -- 提交到本地仓库
git add index.jsp -- 添加到暂存区
git commit -m "User2 add the file!"  -- 【-m表示message】

第十一步:把自己的仓库提交到公共服务器
git push origin master

==============开发人员1操作=============================
第十二步:拉取远程服务器最新数据
git pull

其他常用命令

git config --list	 #查看全局配置
git status 				 #查看本地库状态
git checkout 分支名 #分支切换
git fetch          #抓取分支
git reflog 				 #查看版本信息
git branch   			 #查看本地分支信息
git reset --hard 版本号 		#版本穿梭
git reset --hard origin/develop  #将本地分支重置到远程分支的状态
git rm --cached file.txt   #忽略已经被追踪的文件
git add . #将所有发生变动的文件添加到暂存区

3.idea上操作git

3.1 提交文件

3.2拉取代码

3.3解决冲突

正常推送代码,如果出现如下情况可能,就是发生冲突了:

意思是本地代码和远程代码不一样,需要我们手动合并代码,点击 Merge 合并

点击Merge手动合并

中间区域是最终的效果,把中间区域改成你想要的代码即可,然后点击 apply 应用

解决完冲突后,重新执行推送流程

4.分支管理

使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线,不同分支的代码是相互隔离的,也可以通过合并分支的方式来把多个分支的代码合并再一起。企业中,有严格的项目代码控制,不是任何人都能随意操作核心代码。项目开发都是协同开发,必定是多个人来一起开发同一个项目,如果大家都在同一个代码库上去做操作,代码很容易发生冲突。所以,分支开发模式就应运而生。在分支上做开发,调试好了后再合并到主分支。那么每个人开发模块都不会影响到别人。

4.1完整的git版本分支模型图

  1. master 主分支

master分支是Git默认的主分支,它包含了项目的稳定版本。通常,master分支用于发布正式版本,即经过测试和验证的可靠代码。一般情况下,不应该直接在master分支上进行开发,而是通过其他分支进行开发,并在开发完成后将代码合并到master分支。

  1. release 预发布分支

release 分支可以认为是 master 分支的未测试版,基于develop分支克隆,主要用于打包给测试人员测试,比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题就合并到master 分支,只有develop分支可以合并到该分支上,在测试过程中发现的BUG就从该分支再切一个分支进行修复,修复完之后再合并到develop分支

  1. develop 开发分支

基于master分支克隆日常开发分支,该分支正常保存了开发的最新代码,不在该分支上开发,在feature分支上开发具体的新功能然后合并到该分支上,当某一期的功能全部开发完成就合并到release分支,打包给测试人员测试

  1. feature (开发新功能)

feature分支是用于开发单个功能或解决某个问题的分支。当需要开发新功能时,可以从develop分支上创建一个新的feature分支,并在该分支上进行开发工作。在feature分支上进行的开发工作是相对独立的,不会影响其他分支的代码。一旦功能开发完成并通过测试,可以将feature分支合并回develop分支

  1. hotfix (紧急修复)

线上紧急bug修复分支 ,基于master分支克隆, 用于对线上版本的BUG进行修复 ,BUG修复完之后需要合并到develop和master分支

4.2分支的使用

4.2.1IDEA中创建分支

在IDEA任务栏右下角有一个 : Get:master代表当前工作空间是在master分支

如图:这里有一些Git的常用操作,如果需要创建一个新的分支可以使用 Get:master -> New Branch 可以新建一个分支,然后填上分支名。

如果想要切换到某一个分支,可以直接选中分支名 -> 点击 check out 即可切换。比如我们可以选中: remote 下的 feature分支,然后进行checkout ,那么工作空间就会切换到 feature分支。

4.2.2合并分支

现在我们在自己的feature分支中编写好功能,然后接下来就是需要把代码合并到 Develop分支了。首先我们在IDEA工具中把代码切换到开发分支

切过来发现 项目中是没有 这是我新写的代码.txt刚才写的代码的。那么就是需要我们把feature分支中的代码合并过来,如下:(在develop分支把feature分支的代码合并到develop分支) ,合并代码是有可能产生冲突的,需要根据情况解决冲突

合并过来之后就发现在当前分支就有了feature分支的代码了,然后我们可以pull(拉取)一下远程代码,如果有冲突就解决冲突,没冲突就可以push代码到develop的远程分支了。

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

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

相关文章

Android APP跳转到另一个APP

1. Android APP跳转到另一个APP 从当前APP去全新启动另外一个目标APP(非覆盖同一个进程) 1.1. 启动另外一个目标APP(非覆盖原来APP的方式) (1)当前APP加入获取权限声明:(不加入权限…

云服务的flow流水线中项目配置与运行的错误解决

在阿里云的 **Flow** 流水线中,遇到 "codeup服务连接已失效" 错误通常是由于 **阿里云 Codeup**(阿里云的 Git 仓库服务)与流水线之间的连接中断导致的。这种问题一般可以通过以下几个步骤来解决: ### 1. **检查 Codeu…

PHP富文本编辑器eWebEditor实战指南

本文还有配套的精品资源,点击获取 简介:eWebEditor是一个基于PHP的开源在线文本编辑器,提供类似Word的用户界面,简化了网页文本的创建和编辑过程。它广泛适用于博客、论坛、CMS等平台的内容管理,具备富文本编辑、表格…

flink yarn模式3种提交任务方式

接上文:一文说清flink从编码到部署上线 1.引言 Apache Hadoop的Yarn是许多数据处理框架中非常流行的资源提供者。Flink的服务提交给Yarn的ResourceManager后,ResourceManager会在由Yarn的NodeManager管理的机器上动态分配运行容器。Flink在这些容器上部…

【JAVA高级篇教学】第三篇:Redisson作用简介

Redisson 是一个强大的 Redis 客户端,不仅可以实现限流和分布式锁,还提供了许多其他分布式工具和功能,涵盖数据结构、同步控制、消息队列等多个方面。以下是 Redisson 的主要作用和使用场景: 目录 1. 分布式数据结构 支持的数据…

springboot413福泰轴承股份有限公司进销存系统(论文+源码)_kaic

摘 要 使用旧方法对福泰轴承股份有限公司进销存系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在福泰轴承股份有限公司进销存系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不…

Linux部署oceanbase

一、源码部署 1. 下载官网安装包 https://www.oceanbase.com/softwarecenter 2. 上传安装包并解压缩 #在/home目录下创建oceanbase文件夹 mkdir oceanbase cd oceanbase/ tar -xzf oceanbase-all-in-one-4.2.1_bp10_20241122.el7.x86_64.tar.gz 3. 安装 cd oceanbase-all-in…

分布式 分布式事务 总结

前言 相关系列 《分布式 & 目录》《分布式 & 分布式事务 & 总结》《分布式 & 分布式事务 & 问题》 分布式事务 所谓分布式事务是指操作范围笼罩多个不同节点的事务。例如对于订单节点&库存节点而言,一次完整的交易需要同时调动两个节…

【蓝桥杯每日一题】重新排序

重新排序 2024-12-8 蓝桥杯每日一题 重新排序 前缀和 差分 题目大意 给定一个数组 A 和一些查询 L i , R i Li_,R_i Li,​Ri​, 求数组中第 L i L_i Li​至第 R i R_i Ri​个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查 询结果的和尽可能…

jupyterlab 增加多个kernel,正确做法

1、背景 需要增加一个kernel然后相当于隔离一个环境 juypterlab Version 3.0.14 2、用conda 安装 例如,你在conda下有一个python 3.12 的环境 py312 ipython kernel install --user --namepy312 如果保持的话,用pip安装相应的包就好 3、检查是否配置好 …

uni-app 组成和跨端原理 【跨端开发系列】

🔗 uniapp 跨端开发系列文章:🎀🎀🎀 uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…

KV Shifting Attention Enhances Language Modeling

基本信息 📝 原文链接: https://arxiv.org/abs/2411.19574👥 作者: Mingyu Xu, Wei Cheng, Bingning Wang, Weipeng Chen🏷️ 关键词: KV shifting attention, induction heads, language modeling📚 分类: 机器学习, 自然语言处…

算法-字符串-72.编辑距离

一、题目 二、思路解析 1.思路&#xff1a; 最少操作数——动态数组 res[i][j]:长度为i的字符串转化为长度为j字符串的最少操作 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.情况一&#xff1a;当word1为空&#xff0c;word2不为空时 for(int i0;i<size2;i){res[0…

云开发实战教程:手把手教你高效开发应用

声明&#xff1a;本文仅供实践教学使用&#xff0c;没有任何打广告成分 目录 1.引言 2.云开发 Copilot介绍 云开发 Copilot 的功能与特点 3.环境准备 步骤一登录账号 步骤二新建环境 4.开发实践 4.1AI 生成低代码应用 4.2AI 生成低代码页面/区块 4.3AI 优化低代码组件…

Linux笔记9 DNS域名解析服务器

简介 DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分 布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS使用的是53端口&#xff0c; 通常DNS是以UDP这个较快速的数据传输协议来查询的&#x…

编程的“超能力”:解锁 MarsCode AI 的智能助手

文章目录 前言MarsCode AI 提供的超能力**1. 代码补全 | Code Completion**你是否曾卡在函数的中途&#xff0c;不知道下一行该怎么写&#xff1f;MarsCode AI 就是你的灵感缪斯&#xff01;示例 **2. 代码解释 | Explain Code**“这段代码是干嘛的&#xff1f;”当你面对团队老…

大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

提升搜索体验!—— 推出 Elastic Rerank 模型(技术预览版)

作者&#xff1a;来自 Elastic Shubha Anjur Tupil 几分钟内即可开始使用 Elastic Rerank 模型&#xff1a;强大的语义搜索功能&#xff0c;无需重新索引&#xff0c;提供灵活性和成本控制&#xff1b;高相关性、顶级性能和文本搜索效率。 使用我们全新的先进跨编码器 Elastic …

STM32+模拟或硬件IIC+SHT20驱动问题:接上拉电阻、BUSY死锁?

主要问题&#xff1a; 1&#xff0c;使用STM32F103C8T6&#xff0c;模拟IIC&#xff0c;SCL和SDA口配置为推挽输出上拉&#xff0c;主要是SDA脚&#xff0c;每次都要输出输入模式重新配置&#xff0c;虽然也能通信&#xff0c;但不稳定&#xff0c;出错率大&#xff1b; 2&…

Windows11和Ubuntu用PointNet++训练自己的数据集(部件分割模型)

省流&#xff1a; &#xff08;1&#xff09;不管是Linux还是Windows都不影响&#xff0c;只要有pycharm或者vscode即可&#xff0c;啥系统都行。 &#xff08;2&#xff09;此外由于自己的需求&#xff0c;所以只做物体部件分割&#xff08;partseg&#xff09;任务&#xff0…