Java学习第六十二部分——Git

目录

一、关键概述

二、核心概念

三、常用命令

四、优势因素

五、应用方案  

六、使用建议


一、关键概述

提问:Git 是什么?  
回答:一句话,分布式版本控制系统(DVCS),用来跟踪文件(主要是源码)随时间的变化,让多人协作变得高效、安全、可追溯。

二、核心概念

1. 仓库(Repository)  
   项目的完整历史 + 所有分支,存在 `.git` 目录里。  
   - 本地仓库:每个开发者电脑上都有一份。  
   - 远程仓库:GitHub、GitLab、Gitee 等服务器上的副本。

2. 工作区(Working Directory)  
   你正在编辑的文件目录。

3. 暂存区(Index / Stage)  
   介于“工作区”与“仓库”之间的缓冲区,决定哪些改动将进入下一次提交。

4. 提交(Commit)  
   用 SHA-1 哈希唯一标识的快照;一旦提交就不可更改。

5. 分支(Branch)  
   轻量指针,指向某个提交;创建/切换几乎瞬间完成。

6. 合并(Merge) / 变基(Rebase)  
   把不同分支的修改整合到一起。

三、常用命令

git init                 # 新建本地仓库
git clone <url>          # 克隆远程仓库
git status               # 查看状态
git add <file>           # 把改动放入暂存区
git commit -m "msg"      # 提交
git log --oneline        # 查看历史
git branch <name>        # 创建分支
git checkout <branch>    # 切换分支
git merge <branch>       # 合并分支
git push origin <branch> # 推送到远程
git pull                 # 拉取并合并远程更新

四、优势因素

  • 离线也能提交、查看历史。  

  • 分支/合并极快,鼓励频繁分支开发(Feature Branch Workflow)。  

  • 内容完整性——任何篡改都会被哈希校验发现。  

  • 生态庞大——GitHub/GitLab/Gitee、CI/CD、代码审查、Issue 管理全部围绕 Git。

五、应用方案  

1. Swiss Army JavaGit(https://gitlab.com/bit-man/SwissArmyJavaGit)  
2. JGit(Eclipse 官方出品:https://gerrit.googlesource.com/jgit)

维度Swiss Army JavaGitJGit
定位早期社区项目,API 简洁;最新一次提交 2013 年Eclipse 官方维护,活跃开发,功能最全
协议LGPL 2.1EDL(类 BSD,商业友好)
Maven 坐标需自己 mvn install 本地构建org.eclipse.jgit:org.eclipse.jgit:6.10.+
初始化仓库DotGit.getInstance(dir).init()Git.init().setDirectory(dir).call()
创建分支git.branchCreate().setName("feature").call()同上
合并分支git.merge().include(...).call()同上
底层实现调用本机 Git 可执行文件纯 Java 实现,无需本地 Git

JGit 简单示例

<dependency><groupId>org.eclipse.jgit</groupId><artifactId>org.eclipse.jgit</artifactId><version>6.10.0.202406032230-r</version>
</dependency>
import org.eclipse.jgit.api.Git;
import java.io.File;public class JGitQuickStart {public static void main(String[] args) throws Exception {// 1. 创建并初始化仓库try (Git git = Git.init().setDirectory(new File("/tmp/demo")).call()) {// 2. 创建并切换到新分支git.checkout().setCreateBranch(true).setName("feature").call();// 3. 以后任何 commit、merge、push 等操作均可通过 git.xxx() 完成System.out.println("当前分支: " + git.getRepository().getBranch());}}
}

Swiss Army JavaGit使用说明

1. 克隆源码——git clone (https://gitlab.com/bit-man/SwissArmyJavaGit.git)
2. mvn install安装到本地仓库(`~/.m2/repository/javagit/javagit/0.01-SNAPSHOT`)  
3. 在pom.xml文件中加入依赖:

<dependency><groupId>javagit</groupId><artifactId>javagit</artifactId><version>0.01-SNAPSHOT</version>
</dependency>

4. 详细示例用法见官方Cookbook。

六、使用建议

  • 新项目建议直接选JGit,维护活跃、API 清晰、无需本地 Git

  • 维护老代码或特殊场景才考虑 Swiss Army JavaGit

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

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

相关文章

CDN和DNS 在分布式系统中的作用

一、DNS&#xff1a;域名系统&#xff08;Domain Name System&#xff09; 1. 核心功能 DNS是互联网的“地址簿”&#xff0c;负责将人类易记的域名&#xff08;如www.baidu.com&#xff09;解析为计算机可识别的IP地址&#xff08;如180.101.50.242&#xff09;。没有DNS&…

uniapp用webview导入本地网页,ios端打开页面空白问题

目前还没解决&#xff0c;DCloud官方也说不行 IOS下webview加载本地网页时&#xff0c;无法加载资源 - DCloud问答

软考 系统架构设计师系列知识点之面向服务架构设计理论与实践(8)

接前一篇文章:软考 系统架构设计师系列知识点之面向服务架构设计理论与实践(7) 所属章节: 第15章. 面向服务架构设计理论与实践 第3节 SOA的参考架构 15.3 SOA的参考架构 IBM的Websphere业务集成参考架构(如图15-2所示,以下简称参考架构)是典型的以服务为中心的企业集…

基于 Docker 及 Kubernetes 部署 vLLM:开启机器学习模型服务的新篇章

在当今数字化浪潮中&#xff0c;机器学习模型的高效部署与管理成为众多开发者和企业关注的焦点。vLLM 作为一款性能卓越的大型语言模型推理引擎&#xff0c;其在 Docker 及 Kubernetes 上的部署方式如何呢&#xff1f;本文将深入探讨如何在 Docker 及 Kubernetes 集群中部署 vL…

工业互联网六大安全挑战的密码“解法”

目录 工业互联网密码技术应用Q&A Q1&#xff1a;设备身份认证与接入控制 Q2&#xff1a;通信数据加密与完整性保护 Q3&#xff1a;远程安全访问 Q4&#xff1a;平台与数据安全 Q5&#xff1a;软件与固件安全 Q6&#xff1a;日志审计与抗抵赖 首传信安-解决方案 总…

基于springboot的在线问卷调查系统的设计与实现(源码+论文)

一、开发环境 1 Java语言 Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生&#xff0c;不仅仅是创造者感觉C语言在编程上面很麻烦&#xff0c;如果只是专注于业务逻辑的处理&#xff0c;会导致忽略了各种指针以及垃圾回收这些操作&#x…

民法学学习笔记(个人向) Part.1

民法学学习笔记(个人向) Part.1有关民法条文背后的事理、人心、经济社会基础&#xff1b;民法的结构民法学习的特色就是先学最难的民法总论&#xff0c;再学较难的物权法、合同法等&#xff0c;最后再学习最简单的婚姻、继承、侵权部分。这是一个由难到易的过程&#xff0c;尤为…

ElasticSearch Doc Values和Fielddata详解

一、Doc Values介绍倒排索引在搜索包含指定 term 的文档时效率极高&#xff0c;但在执行相反操作&#xff0c;比如查询一个文档中包含哪些 term&#xff0c;以及进行排序、聚合等与指定字段相关的操作时&#xff0c;表现就很差了&#xff0c;这时候就需要用到 Doc Values。倒排…

【C语言】解决VScode中文乱码问题

文章目录【C语言】解决VScode中文乱码问题弹出无法写入用户设置的处理方法弹出无法在只读编辑器编辑的问题处理方法【C语言】解决VScode中文乱码问题 &#x1f4ac;欢迎交流&#xff1a;在学习过程中如果你有任何疑问或想法&#xff0c;欢迎在评论区留言&#xff0c;我们可以共…

MySQL笔记4

一、范式1.概念与意义范式&#xff08;Normal Form&#xff09;是数据库设计需遵循的规范&#xff0c;解决“设计随意导致后期重构困难”问题。主流有 三大范式&#xff08;1NF、2NF、3NF&#xff09;&#xff0c;还有进阶的 BCNF、4NF、5NF 等&#xff0c;范式间是递进依赖&am…

切比雪夫不等式的理解以及推导【超详细笔记】

文章目录参考教程一、意义1. 正态分布的 3σ 法则2. 不等式的含义3. 不等式的意义二、不等式的证明1. 马尔科夫不等式马尔可夫不等式证明(YYY 为非负随机变量 &#xff09;2. 切比雪夫不等式推导参考教程 一个视频&#xff0c;彻底理解切比雪夫不等式 一、意义 1. 正态分布的…

Spring Boot Jackson 序列化常用配置详解

一、引言在当今的 Web 开发领域&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;已然成为数据交换的中流砥柱。无论是前后端分离架构下前后端之间的数据交互&#xff0c;还是微服务架构里各个微服务之间的通信&#xff0c;JSON 都承担着至关重要的角色 。它…

Jetpack ViewModel LiveData:现代Android架构组件的核心力量

引言在Android应用开发中&#xff0c;数据管理和界面更新一直是开发者面临的重大挑战。传统的开发方式常常导致Activity和Fragment变得臃肿&#xff0c;难以维护&#xff0c;且无法优雅地处理配置变更&#xff08;如屏幕旋转&#xff09;。Jetpack中的ViewModel和LiveData组件正…

Python数据分析案例79——基于征信数据开发信贷风控模型

背景 虽然模型基本都是表格数据那一套了&#xff0c;算法都没什么新鲜点&#xff0c;但是本次数据还是很值得写个案例的&#xff0c;有征信数据&#xff0c;各种&#xff0c;个人&#xff0c;机构&#xff0c;逾期汇总..... 这么多特征来做机器学习模型应该还不错。本次带来&…

板凳-------Mysql cookbook学习 (十二--------3_2)

3.3链接表 结构 P79页 用一个类图来表示EmployeeNode类的结构&#xff0c;展示其属性和关系&#xff1a; plaintext ----------------------------------------- | EmployeeNode | ----------------------------------------- | - emp_no: int …

深度学习图像预处理:统一输入图像尺寸方案

在实际训练中&#xff0c;最常见也最简单的做法&#xff0c;就是在送入网络前把所有图片「变形」到同一个分辨率&#xff08;比如 256256 或 224224&#xff09;&#xff0c;或者先裁剪&#xff0f;填充成同样大小。具体而言&#xff0c;可以分成以下几类方案&#xff1a;一、图…

pytest-log

问题1&#xff1a;我们在运行测试用例的时候如何记录测试的log&#xff0c;如何使用&#xff1f;问题2&#xff1a;我写的函数&#xff0c;为了方便log记录&#xff0c;但是在pytest运行时&#xff0c;会兼容pytest且不会重复记录&#xff0c;怎么解决&#xff1f;1、pytest有内…

在安卓源码中添加自定义jar包给源码中某些模块使用

一、具体步骤 1. 准备目录与 Jar 包 在vendor下 创建新的模块目录&#xff0c;放入demo.jar 包&#xff1a; demojar/ # 模块目录 ├── Android.bp # 编译配置文件 └── demo.jar 2. 编写 Android.bp 配置 Android.bp 示例配置&#xff1a; java_import {…

buntu 22.04 上离线安装Docker 25.0.5(二)

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 兑换码要是过期了&#xff0c;可以私信我获取最新兑换码&#xff01;&a…

初探 Web 环境下的 LLM 安全:攻击原理与风险边界

文章目录前言1 什么是大型语言模型&#xff08;LLM&#xff09;&#xff1f;1.1 LLM的核心特征1.2 LLM在Web场景中的典型应用2 LLM攻击的核心手段&#xff1a;提示注入与权限滥用3 LLM与API集成的安全隐患&#xff1a;工作流中的漏洞节点3.1 LLM-API集成的典型工作流3.2 工作流…