什么是 Git?
Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者能够轻松地管理代码库的变更历史。
Git 的核心概念
- Repository(仓库):存储项目代码和版本历史的地方。可以是本地仓库,也可以是远程仓库。
- Commit(提交):一个代码变更的记录,包含了作者、时间、描述和变更内容。
- Branch(分支):从主分支(通常是
master
或main
)分出来的独立开发线。允许多个开发者同时工作在不同的特性或修复上。 - Merge(合并):将一个分支的变更合并到另一个分支的过程。
- Clone(克隆):从一个远程仓库复制一份完整的代码库到本地。
- Pull(拉取):从远程仓库获取最新的变更并合并到本地分支。
- Push(推送):将本地分支的变更推送到远程仓库。
- Status(状态):查看当前工作目录中文件的变更状态。
- 用户A从服务端仓库中获取最新的代码和文件,这个过程称为“Pull”。通过这种方式,他们可以在自己的计算机上获得项目的最新状态。
- 在完成一些修改或添加新功能后,用户A会将自己的更改推送到服务端仓库,这就是所谓的“Push”操作。这样做的目的是确保其他团队成员也能看到这些更新。
- 同样地,用户B和用户C也会执行类似的流程——先从服务端仓库拉取数据,然后再将他们的工作成果上传回去。
-
抓取/克隆 (fetch/clone):首先,你需要从一个远程仓库(Remote)中获取代码。这个操作通常通过
git clone
命令完成,它会将远程仓库的所有内容复制到你的本地计算机上。 -
检出 (checkout):在本地仓库(Repository)中,你可以使用
git checkout
命令切换到不同的分支或提交记录。这样可以让你在一个安全的环境中测试和修改代码。 -
添加 (add):当你对文件进行了更改并希望将其纳入版本控制时,需要使用
git add
命令将这些文件添加到暂存区(Index)。这是提交前的一个必要步骤。 -
提交 (commit):接下来是执行
git commit
命令来正式保存你所做的所有改动。此时,Git会创建一个新的快照,并附带一条描述此次变更的信息。 -
拉取 (pull):为了确保你的本地副本是最新的,可以通过运行
git pull
命令来合并任何来自远程仓库的新提交。此操作相当于先执行git fetch
以下载最新的数据,然后用git merge
将它们整合进当前分支。 -
推送 (push):最后一步是使用
git push
命令将你在本地做出的修改推送到远程服务器上。这样其他团队成员就可以看到并使用你的更新了。
Git 快速入门
1. 安装 Git
- Windows: 下载并安装 Git for Windows。
- macOS: 使用 Homebrew 安装,
brew install git
。 - Linux: 使用包管理器安装,例如在 Ubuntu 上使用
sudo apt-get install git
。
2. 配置 Git
在开始使用 Git 之前,你需要配置你的用户名和邮箱地址,这些信息将会出现在你的提交记录中。
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
3. 创建新仓库
你可以通过两种方式创建一个新的 Git 仓库:
创建本地仓库的方法有两种:
- 一种是创建全新的仓库:
git init
,会在当前目录初始化创建仓库。 - 另一种是克隆远程仓库:
git clone [url]
-
从零开始创建一个新的仓库:
# 初始化一个新的 Git 仓库 git init my-project cd my-project
-
克隆一个已有的远程仓库:
git clone https://github.com/username/my-project.git cd my-project
创建完多出了一个被隐藏的.git
目录,这就是本地仓库Git的工作场所。
4. 添加文件
可以简单理解为,git add
命令就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到仓库。
# 创建一个新文件
echo "Hello, World!" > README.md# 将文件添加到暂存区
git add README.md# 查看状态
git status
修改文件“R.md”,未暂存:
执行git add .
暂存:
5. 提交变更
当你完成了一些工作,可以通过创建一个提交(Commit)来记录这些变更。
# 提交变更
git commit -m "Initial commit"
提交时,-m
参数后面跟随的是提交信息,用于描述这次变更的内容。
6. 查看提交历史
你可以使用 git log
命令查看仓库的提交历史。
git log
7. 创建分支
Git 的分支功能非常强大,允许你在不影响主分支的情况下进行开发。
# 创建并切换到新分支
git branch my-feature
git checkout my-feature
或者使用一行命令:
git checkout -b my-feature
8. 合并分支
当你在分支上完成了开发工作,可以将该分支的变更合并到主分支。
# 切换回主分支
git checkout main# 合并 my-feature 分支到 main 分支
git merge my-feature
9. 删除分支
当你不再需要某个分支时,可以将其删除。
git branch -d my-feature
10. 远程仓库操作
Git 支持与远程仓库交互,例如 GitHub、GitLab 等。
-
添加远程仓库:
git remote add origin https://github.com/username/my-project.git
-
推送本地分支到远程仓库:
git push -u origin main
-u
参数表示将本地分支与远程分支关联,这样以后可以直接使用git push
而不需要指定远程分支。 -
从远程仓库拉取更新:
git pull origin main
常用 Git 命令
git init
: 初始化一个新仓库。git clone [url]
: 克隆一个远程仓库到本地。git add [file]
: 将文件添加到暂存区。git commit -m "message"
: 提交暂存区的变更。git status
: 查看工作目录的状态。git log
: 查看提交历史。git branch
: 查看分支。git checkout [branch]
: 切换分支。git merge [branch]
: 合并指定分支到当前分支。git push [remote] [branch]
: 推送变更到远程仓库。git pull [remote] [branch]
: 从远程仓库拉取并合并变更。
更多 Git 功能
git diff
: 查看工作目录和暂存区之间的差异。git stash
: 临时保存当前工作目录的变更,便于切换分支或处理紧急任务。git rebase
: 将一个分支的变更应用到另一个分支上,通常用于保持提交历史的整洁。git tag
: 为特定的提交打上标签,通常用于标记发布版本。
总结
Git 是一个强大的工具,通过掌握这些基本的命令,你可以开始使用 Git 管理你的代码。随着使用的深入,你还可以学习更多高级的 Git 功能,如 rebase
、stash
、tag
等。