Git基本使用 使用Git管理IDEA项目

news2026/5/7 9:37:23
目录Gitee的注册和代码提交(附有下载链接)Git的基本原理如何查看配置创建一个本地仓库 并用git管理它新建本地库git initadd添加到暂存区commit提交到本地库修改了文件 如何再次commit查看历史版本回退历史版本克隆远程仓库Gitee的项目到本地查看文件状态.gitignore忽略文件拉取远程仓库的项目到IDEA将本地IDEA独立项目和远程仓库项目关联获取远程仓库的最新代码(pull)如何查看操作记录如何删除一个文件Git分支管理介绍Git分支指令(创建分支实例)IDEA创建新的分支一个问题:IDEA本地看不见分支IDEA切换分支IDEA合并分支-无冲突有冲突-接受某一方有冲突-手动修改删除分支总结Gitee的注册和代码提交(附有下载链接)参考博客Git的基本原理分布式版本控制Git工作流程1.在工作目录中添加、修改文件(workspace)2.将需要进行版本管理的文件放入暂存区域(add)3.将暂存区域的文件提交到本地仓库(commit)4.把本地仓库的文件代码push到远程仓库(比如Gitee GitHub…)因此,git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)Git 本地有三个工作区域1.工作目录(Working Directory):就是希望Git帮助你管理的文件夹 可以是项目的目录2.暂存区(Stage/Index):它只是一个文件 保存即将提交的文件列表信息(临时存放做的改动)3.资源库(Repository或Git Directory 也叫本地仓库):安全存放数据的位置 这里面有你提交的所有版本的数据其中HEAD指向最新放入仓库的版本4.再加上远程的git仓库(Remote Directory) 托管代码的服务器(比如Github/Gitee) 就可以分为四个工作区域文件在这四个区域之间的转换关系如下注意:Remote直接pull到工作区 也会影响本地仓库如何查看配置安装Git后 首先要设置你的用户名称和e-mail地址, 因为每次提交都会使用该信息git config --global user.name “XXX”git config --global user.email “XXXxx.com”指令成功执行 会生成 C:\Users\Administrator.gitconfig查看所有配置git config -l查看系统配置git config --system --list查看当前用户配置git config --global --list(该指令显示的就是 C:\Users\Administrator.gitconfig 内容)创建一个本地仓库 并用git管理它新建本地库git init创建一个本地库:就是Git用来存 “文件历史、版本记录” 的文件夹1.先建一个文件夹比如叫Git-Test用命令进入这个文件夹cd /d/Git-Test2.输入初始化命令git init可以新增文件 熟悉一些指令 红色就代表文件未被追踪add添加到暂存区add 添加到暂存区(Stage/Index)万一你不小心把 “不想提交的文件” 加进了暂存区用这个命令 “移除”git rm --cached test.txt再敲git status文件又会变回红色 “未追踪”commit提交到本地库commit把add过的文件 提交到资源库(Repository或Git Directory 也叫本地仓库)add到暂存区的文件还不算 “正式保存” 万一电脑坏了暂存区的内容会丢commit提交到本地库后 文件会被写入.git文件夹 还会生成一个 “版本号” 以后想回退到这个版本都能找到这里是本地库 所以没有push到远程仓库的操作修改了文件 如何再次commit如果修改了已经add 已经commit的文件 怎么再次commit?需要再次add再commit修改文件后必须重新git add因为 Git 只认 “暂存区的内容”不直接认工作区的修改。假设已经修改了前面的.txt文件1.敲git status会看到红色提示 “modified: hello.txt”文件被修改了 且是未追踪状态2.敲git add test.txt把修改后的文件重新放进暂存区3.敲git commit -m “xxx” test.txt正式提交修改。查看历史版本改了好几次文件想看看 “之前有哪些版本、版本号是啥”用两个命令git reflog看 “简洁版历史”常用git log看 “详细版历史”回退历史版本如果你发现 “修改后的test.txt有 bug想回到第一次提交的版本”用git reset --hard 版本号1.先从git reflog里找到第一次提交的版本号比如22d41192.git reset --hard 22d41193.打开test.txt看看 已经回退了克隆远程仓库Gitee的项目到本地目标:把这个仓库克隆到本地来说明:克隆远程代码仓库 就是将远程服务器上的仓库完全镜像一份至本地克隆一个代码仓库和它的整个代码历史(版本信息)$ git clone [url] # url 就是远程 git 项目的地址执行 git clone [url]查看文件状态文件四种状态: 版本控制就是对文件的版本控制 在Git管理中 文件被统一管理 有四个状态1.Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到 git 库, 不参与版本控制 通过git add 状态变为 Staged2.Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种处理方式, 如果它被修改, 变为Modified. 如果使用 git rm 移出版本库,则成为 Untracked3.Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这种文件有两个去处,通过 git add 可进入暂存 staged 状态, 使用 git checkout 则丢弃修改过, 返回到 unmodify 状态, 这个 git checkout 即从库中取出文件, 覆盖当前修改(原来是A 修改成B了 但是本地库里还是A 我checkout就把本地库的A覆盖回来了)4.Staged: 暂存状态. 执行 git commit 则将修改同步到远程库中, 这时本地库中的文件和workspace中的文件又变为一致, 文件为 Unmodify 状态. 执行 git reset HEAD filename 取消暂存, 文件状态为Modified查看指定文件状态git status [filename]先在 D:\hspgit2\lunar-javascript , 创建一个测试文件 ABC.txt查看所有文件状态git status添加所有文件到暂存区git add .提交暂存区中的内容到本地仓库git commit -m “消息内容”推送分支到远程仓库 git push --all.gitignore忽略文件.gitignore文件语法和常见写法就看这篇就行了_.gitignore !**表示什么_石头wang的博客-CSDN博客下面这个列子就表示忽略 忽略文件所在目录 以及他的子目录下 所有.log后缀的文件拉取远程仓库的项目到IDEA需求:比如在Gitee上托管有一个项目1.入职第一天 项目经理就会把那个项目的地址给我2.我在IDEA上拉取该项目代码 然后进行开发3.我写完自己的文件 再把这些文件push到远程仓库去从远程仓库克隆到本地仓库以及工作区这样就克隆下来了 关联起来了完成相应的工作 然后push到远程仓库去新建一个Maven的测试模块会问你要不要直接add 第一次就先不要 手动add一下新建测试代码一开始是红色的(未追踪文件)add之后就变绿色了(放到暂存区了)然后就是commit到本地仓库最后push到远程仓库下面这是哪里变了就push哪里当然 我可以直接push整个项目(他自动会识别你哪里变了 不过哪里变了就push哪里是最好的)去远程仓库确定一下使用命令行操作将本地IDEA独立项目和远程仓库项目关联需求:在本地 创建了一个IDEA项目(没有从 Gitee拉取)后面又希望和Gitee的某个代码仓库关联 如何操作?在Gitee创建一个测试仓库 并设置成开源在本地IDEA创建一个独立的Maven项目new→project→Maven→设置坐标创建一个临时的目录 克隆远程仓库的项目信息把克隆下来的东西复制到Maven项目文件夹下刷新Maven或者重启IDEA 关联生效创建测试文件 写入一些内容 并将其push到远程仓库 执行add→commit→push界面方式或者命令行方式 都行获取远程仓库的最新代码(pull)需求:项目经理搭建了一个远程仓库 给项目组的两个人开发这个项目然后把远程仓库的地址给了程序员A和B程序员A和程序员B拿到地址 各自都在IDEA上克隆到了本地 进行开发项目经理让程序员A开发user模块 让程序员B开发goods模块问题出现了:程序员B在开发工程中 需要用到程序员A开发的user模块的某些代码那么程序员B就需要定时的把仓库的最新代码拉取下来演示1:Win11拉取Win10的就以我在Gitee上的测试项目002为例克隆到Win11上 作为Goods:克隆到Win10上 作为User:Win10完成User模块相关的代码后 push到远程仓库W11开发Goods的时候 需要用到User相关代码 就需要pull最新的仓库这个时候 刚刚Win10提交的代码 已经pull下来了而且在Win11上 可以看到所有记录演示2:Win10拉取Win11的Maven项目在Win11上 创建并push整个这个Maven模块然后我在Win10拉取这个Maven模块 这里可能出现一个问题问题原因是IDEA的环境设置等可能各不相同正常Maven项目下面那个main包下面的java包是蓝色的(默认是Source Root)你pull下来的项目可能是灰色的 而且java文件可能有一个时钟的标志解决方法:选中该项目 然后设置如何查看操作记录下图的Test001.java已经add过了 接下来代码变化 只需要commitpush 不需要再add这里可以查看 每次操作和上一次的变化之处checkout切换到某一个版本如何删除一个文件删除本地文件(本地操作)commit被删除文件的文件夹你可以push主分支 也可以push该文件夹或者都会:Git分支管理介绍默认有一个主分支master但是我过年的时候可能会出什么贺岁版 或者给别的公司定制的电信版这个时候会有分支了分支可以有多个(根据业务需求)如果各分支没有交集始终平行发展则不需要合并(merge)如果两个分支需要合并则执行 merge 操作Git分支指令(创建分支实例)查看本地分支查看远程仓库分支本地创建分支时刻要有那张图 本地和远程 都是有分支的所以这个时候 只有本地有V1.0的分支 本地的还没有push到远程切换到本地v1.0分支进行开发切换之后 我做的任何动作和master就没关系了这就意味我做的开发不会影响master分支 就算出了问题 删了重新再基于master开一个分支即可上面的操作 都还没有对远程仓库生效将本地分支v1.0作为独立分支提交到远程IDEA创建新的分支1.创建分支2.此时 只有本地有 远程仓库还没有这个分支3.push到远程仓库一个问题:IDEA本地看不见分支可能出现如下问题其实也就是把远程的分支再拉到本地仓库来(比如误删了本地仓库的某个分支 但是还没删远程的)从远程check out下来就行IDEA切换分支分支之间是相互独立的此时 在v2.0分支下 我们修改/增加文件 就是针对当前v2.0的不会影响到主分支和v1.0 分支之间是相互独立的在v2.0分支下 修改ZcyApplication代码 然后给他三板斧到远程仓库(其实已经add过就没必要再add了 不过也不会报错)在远程仓库观察master分支和v2.0分支在idea也能观察到v2.0的变化IDEA合并分支-无冲突1.切换到主分支 从主分支上新建一个分支v3.0(此时远程仓库还没有v3.0分支)2.把v3.0分支push到远程仓库3.观察一下v3.0分支因为我是从master分支开出来的分支 所以内容和他应该是一致的如果我从v2.0分支开一个v4.0分支 那v4.0的内容就会和v2.0一样了如下图:4.checkout到v3.0分支5.在v3.0分支下 无冲突地开发(我的操作 没有影响到原来master的任何东西 这里指的就是ZcyApplication)6.三板斧push新增的功能代码7.观察主分支和v3.分支(在IDEA也能观察到)注意:原因是它意味我要去master分支下面的NewFunc.java 显然是没有的8.开始合并注意:一定要切换到master分支下!(因为目标是把v3.0分支合并到主分支)9.然后选中你要合并的分支(v3.0) 开始合并10.无冲突是很顺利的11.在IDEA发现主分支已经多了v3.0的文件注意此时远程仓库的master 还没有这个文件 因为刚刚的合并工作 只是发生在本地仍然需要push一下合并过后的主分支到远程仓库 别的程序员才能pull到相应文件12.push合并过后的master分支有冲突-接受某一方需求:比如 master分支有一个Hello.java我在master分支上开出一个v1.0分支 自然v1.0也有Hello.java这个时候我在v1.0进行开发 然后修改了Hello.java合并的时候就有冲突→选择其一保留以解决冲突1.以master和v5.0为例 v5.0是在master的基础上开的分支 master原先有的文件是ZcyApplication和NewFunc切换到v5.0 修改其中的ZcyApplication2.三板斧把v5.0的变化push到远程仓库3.checkout回master 又修改了ZcyApplication 故意造成冲突4.三板斧把master的变化push到远程仓库5.截止到上面为止因为各个分支都是独立 所以没有出现任何的问题再以master为准(checkout到master) 把v5.0分支合并到master分支6.这时候就出现冲突了选择Merge就是在如下界面自己修改 然后apply就是采用修改的结果7.我选择theirs 以v5.0为准 合并出一个新的master8.注意这个时候远程仓库的master 还是没变化的因为我刚刚解决冲突的操作 一切都还是发生在本地的仍然要push 远程仓库才会变化9.因为我是以v5.0为准 合并到主分支的所以本地仓库的v5.0没变化 但是主分支已经被覆盖了这个时候再push一下master主分支 远程仓库的主分支也会变 IDEA也能检测出哪里变了有冲突-手动修改1.修改master分支的ZcyApplication 然后三板斧push到远程仓库2.修改v5.0分支的ZcyApplication 然后三板斧push到远程仓库3.切换到主分支 把v5.0合并到主分支—报冲突4.点击close5.手动修改自己修改:6.修改后 必须要add(因为冲突导致文件状态未追踪) 最后再push到远程仓库7.观察远程仓库 由于你是把v5.合并到主分支 所以v5.没变 主分支变了删除分支1.删除本地分支(这个时候删完还能从远程checkout恢复下来见上面的笔记 “一个问题” 那里的操作)2.删除远程分支总结1.Master主分支应该非常稳定 用来发布新版本 一般情况下不要在上面工作 工作一般在新建的分支(比如 dev、v1.0、v2.0)上工作2.分支代码稳定后 可以再合并到主分支Master3.在进行分支合并时最好是各分支都已经处于Committed的状态这样可以减小处理合并冲突的难度4.push操作是push你已经commit了的代码如果你修改了一个文件 但是你没有执行commit那么你push的其实是上次commit的状态结合这张图理解 push的是你commit到本地Repo里的东西5.add 、 commit 、push 的操作可以针对单个文件,也可以针对文件夹

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…