Git 基础入门
2025/9/17大约 9 分钟
Git基础入门
Git简介
什么是Git
Git是一个开源的分布式版本控制系统,由Linux之父Linus Torvalds在2005年创建,最初目的是为了更好地管理Linux内核开发。Git可以有效、高速地处理从很小到非常大的项目版本管理,是目前世界上最先进、最流行的分布式版本控制系统。
Git的主要特点
- 分布式系统:每个开发者都拥有完整的代码仓库,可以在本地进行大部分操作
- 数据完整性:Git的设计注重数据的完整性,所有数据在存储前都计算校验和
- 快速高效:Git大部分操作都在本地执行,无需网络连接,速度极快
- 分支管理:Git的分支模型轻量且强大,使并行开发变得简单高效
- 暂存区概念:Git引入了暂存区的概念,使提交更加精确可控
Git与其他版本控制系统的区别
特性 | Git | SVN |
---|---|---|
类型 | 分布式 | 集中式 |
存储方式 | 快照 | 差异 |
分支操作 | 轻量级 | 重量级 |
离线工作 | 支持 | 不支持 |
存储介质 | 本地仓库 | 中央服务器 |
Git安装与配置
安装Git
Windows系统
- 访问Git官网下载页面:https://git-scm.com/download/win
- 下载安装包并运行
- 按照安装向导完成安装(大多数情况下使用默认选项即可)
macOS系统
- 使用Homebrew安装:
brew install git
- 或访问Git官网下载页面:https://git-scm.com/download/mac
Linux系统
根据不同的Linux发行版,使用相应的包管理器安装:
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install git
# Fedora
sudo dnf install git
# CentOS/RHEL
sudo yum install git
基本配置
安装Git后,首先需要配置用户信息,这些信息会附加在你的每一次提交中:
# 配置全局用户名
git config --global user.name "你的名字"
# 配置全局邮箱
git config --global user.email "你的邮箱"
其他常用配置:
# 配置默认文本编辑器
git config --global core.editor vim
# 配置差异比较工具
git config --global merge.tool vimdiff
# 查看所有配置
git config --list
配置级别
Git有三个配置级别:
--system
:系统级配置,适用于系统所有用户--global
:用户级配置,适用于当前用户的所有仓库--local
:仓库级配置,只适用于当前仓库(默认级别)
Git核心概念
工作区、暂存区与版本库
Git的三个工作区域
Git项目有三个主要区域:工作区、暂存区和版本库。理解这三个区域的概念对于掌握Git至关重要。

工作区(Working Directory)
- 实际持有项目文件的目录
- 可以直接编辑修改的区域
暂存区(Staging Area/Index)
- 保存了下次将要提交的文件列表信息
- 位于.git目录下的index文件
- 通过
git add
命令将工作区的修改添加到暂存区
版本库(Repository)
- .git目录,包含项目的元数据和对象数据库
- 通过
git commit
命令将暂存区的内容提交到版本库
Git文件的生命周期
Git中的文件可能处于以下四种状态:
- 未跟踪(Untracked):新添加的文件,Git未跟踪其变化
- 已跟踪(Tracked):Git已经知道的文件,又分为三种状态:
- 未修改(Unmodified):文件未发生变化
- 已修改(Modified):文件已修改但未暂存
- 已暂存(Staged):文件已修改且已暂存,等待提交

Git基础命令
创建仓库
# 初始化新仓库
git init
# 克隆现有仓库
git clone <仓库URL> [本地目录名]
示例:克隆一个仓库并指定目录名
# 克隆Spring Boot项目到本地my-spring-boot目录
git clone https://github.com/spring-projects/spring-boot.git my-spring-boot
基本操作
# 查看文件状态
git status
# 添加文件到暂存区
git add <文件名> # 添加指定文件
git add . # 添加所有修改的文件
# 提交更改到版本库
git commit -m "提交信息"
# 查看提交历史
git log
git log --oneline # 简洁模式
git log --graph # 图形化显示
撤销与恢复
# 撤销工作区的修改
git checkout -- <文件名>
# 撤销暂存区的修改(保留工作区修改)
git reset HEAD <文件名>
# 修改最后一次提交
git commit --amend
# 回退到指定版本
git reset --hard <commit_id>
注意
使用git reset --hard
会丢失工作区和暂存区的所有修改,请谨慎使用!
分支管理基础
分支操作
# 查看分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
# 创建分支
git branch <分支名>
# 切换分支
git checkout <分支名>
# 创建并切换分支(组合命令)
git checkout -b <分支名>
# 合并分支
git merge <分支名> # 将指定分支合并到当前分支
# 删除分支
git branch -d <分支名> # 安全删除(会检查是否已合并)
git branch -D <分支名> # 强制删除
分支工作流示例
一个简单的分支工作流示例
// 假设我们正在开发一个简单的Java应用
// 1. 创建并切换到新特性分支
// git checkout -b feature-login
// 2. 在新分支上开发登录功能
public class UserService {
// 添加登录方法
public boolean login(String username, String password) {
// 实现登录逻辑
return validateCredentials(username, password);
}
private boolean validateCredentials(String username, String password) {
// 验证用户名和密码
return username != null && password != null;
}
}
// 3. 提交更改
// git add .
// git commit -m "添加用户登录功能"
// 4. 切回主分支
// git checkout main
// 5. 合并特性分支
// git merge feature-login
// 6. 删除特性分支
// git branch -d feature-login
远程仓库操作
添加远程仓库
# 添加远程仓库
git remote add <远程名> <仓库URL>
# 查看远程仓库
git remote -v
推送与拉取
# 推送到远程仓库
git push <远程名> <分支名>
# 从远程仓库拉取
git fetch <远程名> # 只下载不合并
git pull <远程名> <分支名> # 下载并合并
远程分支管理
# 推送本地分支到远程
git push <远程名> <本地分支>:<远程分支>
# 删除远程分支
git push <远程名> --delete <远程分支>
# 或
git push <远程名> :<远程分支>
实际应用案例
案例1:创建项目并推送到GitHub
步骤详解
# 1. 初始化本地仓库
mkdir my-java-project
cd my-java-project
git init
# 2. 创建项目文件
# 创建一个简单的Java类
echo "public class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello, Git!\");\n }\n}" > HelloWorld.java
# 3. 添加并提交文件
git add .
git commit -m "初始化项目,添加HelloWorld类"
# 4. 在GitHub上创建仓库(假设已创建名为my-java-project的仓库)
# 5. 添加远程仓库
git remote add origin https://github.com/yourusername/my-java-project.git
# 6. 推送到GitHub
git push -u origin master
案例2:多人协作开发流程
协作流程示例
假设团队有两名开发者(开发者A和开发者B)正在共同开发一个Java项目:
开发者A:
# 克隆项目
git clone https://github.com/team/project.git
cd project
# 创建特性分支
git checkout -b feature-user-registration
# 开发新功能...
# 编辑文件,实现用户注册功能
# 提交更改
git add .
git commit -m "实现用户注册功能"
# 推送特性分支到远程
git push origin feature-user-registration
# 在GitHub上创建Pull Request请求合并到main分支
开发者B:
# 克隆项目
git clone https://github.com/team/project.git
cd project
# 创建特性分支
git checkout -b feature-password-reset
# 开发新功能...
# 编辑文件,实现密码重置功能
# 提交更改
git add .
git commit -m "实现密码重置功能"
# 推送特性分支到远程
git push origin feature-password-reset
# 在GitHub上创建Pull Request请求合并到main分支
项目维护者:
# 审查并合并Pull Request(通常在GitHub网页上操作)
# 本地更新
git checkout main
git pull origin main
常见问题与解决方案
冲突解决
当多人修改同一文件的同一部分时,合并时可能会产生冲突。Git会在文件中标记冲突区域:
<<<<<<< HEAD
当前分支的内容
=======
合并分支的内容
>>>>>>> feature-branch
解决冲突的步骤:
- 打开冲突文件,找到冲突区域
- 编辑文件,决定保留哪些内容
- 删除冲突标记(<<<<<<< HEAD, =======, >>>>>>> feature-branch)
- 保存文件
- 添加并提交解决后的文件
git add <冲突文件>
git commit -m "解决合并冲突"
.gitignore文件
.gitignore
文件用于指定Git应该忽略的文件和目录。
Java项目常用的.gitignore内容
# 编译输出
/target/
/build/
/out/
*.class
# 包文件
*.jar
*.war
*.ear
# IDE相关文件
.idea/
.vscode/
*.iml
.classpath
.project
.settings/
# 日志文件
*.log
log/
logs/
# 操作系统文件
.DS_Store
Thumbs.db
# 本地配置文件
application-local.properties
application-local.yml
常见错误及解决方法
错误 | 解决方法 |
---|---|
fatal: refusing to merge unrelated histories | 使用 git pull origin main --allow-unrelated-histories |
error: failed to push some refs | 先执行 git pull 再尝试推送 |
fatal: not a git repository | 确认当前目录是否为Git仓库,或使用 git init 初始化 |
fatal: remote origin already exists | 使用 git remote rm origin 删除已有远程,再添加新的 |
小结
本文介绍了Git的基础知识和常用操作,包括:
- Git的基本概念和工作原理
- 安装与配置Git
- 基本的Git命令和操作
- 分支管理基础
- 远程仓库操作
- 实际应用案例
- 常见问题与解决方案
掌握这些基础知识后,你已经可以使用Git进行日常的版本控制工作。在下一篇文章中,我们将深入探讨Git的分支管理策略和高级特性。
学习建议
- 尝试在本地创建一个Git仓库,实践本文中的命令
- 在GitHub或GitLab上创建账号,尝试远程仓库操作
- 参与开源项目,体验真实的协作开发流程