一、Git 的基本概念
Git 是一个分布式的版本控制系统,由 Linus Torvalds 创建,特别适用于管理软件开发项目中的源代码历史记录。其核心概念包括:
-
对象库和哈希值:
- Git 通过存储内容的 SHA-1 哈希值(现在新版Git已经升级为SHA-256)来唯一标识每一个文件内容、提交信息等对象。每个对象名都是40个字符长度的哈希值。
-
三种主要对象:
- Blob 对象:代表文件内容,不包含文件路径或名称。
- Tree 对象:表示目录结构及其中包含的 Blob 和其他 Tree 对象,记录文件名和对应的 Blob 哈希。
- Commit 对象:每次提交都会创建一个新的 Commit 对象,它指向一个 Tree 对象,并包含了提交作者、时间戳、提交消息以及父提交的哈希。
-
分支(Branches):
- 分支是 Git 中用于开发不同功能或维护不同版本的一种机制,每个分支都指向某个特定的 Commit。
-
索引(Index)或暂存区(Staging Area):
- 在提交之前,修改过的文件需要先被添加到暂存区,这是 Git 管理变更的一个中间步骤。
-
分布式工作流:
- Git 允许开发者在本地拥有完整的项目历史记录副本,可以离线进行提交,然后将更改同步至远程仓库。
二、Git 使用方式
以下是一些 Git 的基本使用步骤和命令:
-
初始化仓库
- 在项目的根目录下执行
git init
命令以创建新的 Git 仓库。
- 在项目的根目录下执行
-
添加文件到版本控制
- 使用
git add <file>
将单个文件添加到暂存区。 - 或者
git add .
添加所有已修改或新创建的文件到暂存区。
- 使用
-
提交更改
- 使用
git commit -m "commit message"
提交暂存区的更改到本地仓库,同时附带一条描述本次提交的简短消息。
- 使用
-
分支管理
-
创建分支:
git branch <branch-name>
创建新的分支。 -
切换分支:
git checkout <branch-name>
切换到指定分支。 -
新版 Git 中推荐使用
git switch <branch-name>
来切换分支。 -
合并分支:
git merge <branch-name>
将指定分支的更改合并到当前分支。
-
-
远程仓库交互
- 克隆仓库:
git clone <remote-url>
将远程仓库复制到本地。 - 推送更改:
git push origin <branch-name>
将本地分支的提交推送到远程对应分支。 - 拉取更新:
git pull origin <branch-name>
从远程仓库获取最新提交并与本地分支合并。
- 克隆仓库:
-
查看状态与历史
- 查看当前仓库状态:
git status
- 查看提交历史:
git log
- 查看单个文件的历史修改记录:
git blame <file>
- 查看当前仓库状态:
-
解决冲突
- 当两个分支对同一文件的不同部分进行了修改并尝试合并时,可能会出现冲突。此时,Git 会标记出冲突位置,用户需手动编辑文件解决冲突后再次提交。
-
忽略文件
- 创建
.gitignore
文件,列出不需要纳入版本控制的文件或文件类型。
- 创建
结语
通过以上基础概念和使用方式,开发者可以开始使用 Git 进行高效的版本控制和团队协作。对于更高级的操作,如标签(Tags)、重置(Reset)、回滚(Revert)、 cherry-pick 等,可根据实际需求进一步学习探索。