目录
一、关键概述
二、核心概念
三、常用命令
四、优势因素
五、应用方案
六、使用建议
一、关键概述
提问: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 JavaGit | JGit |
---|---|---|
定位 | 早期社区项目,API 简洁;最新一次提交 2013 年 | Eclipse 官方维护,活跃开发,功能最全 |
协议 | LGPL 2.1 | EDL(类 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