Git 的核心概念
Git 的核心概念
在使用 Git 之前,理解几个核心概念能让你更好地理解它的工作方式:
- 仓库 (Repository / Repo):你的项目文件及其所有历史记录的集合。可以存在于本地(本地仓库)或远程服务器(远程仓库,如 GitHub)。
- 工作区 (Working Directory):你当前正在进行修改的文件。
- 暂存区 (Staging Area / Index):一个介于工作区和本地仓库之间的区域。你将要提交的修改会先放到这里。
- 提交 (Commit):将暂存区的修改永久保存到本地仓库。每次提交都代表项目历史的一个快照。
- 分支 (Branch):独立的代码开发线。你可以在不影响主线代码的情况下进行新功能开发或 bug 修复。
- 主分支 (Main / Master Branch):项目的主开发分支,通常包含稳定的、可发布的代码。
- 远程 (Remote):通常指远程仓库,例如 GitHub 上的仓库。
- HEAD:指向当前所在分支的最新提交。
Git 的基本工作流程
一个典型的 Git 工作流程如下:
- 初始化仓库或克隆远程仓库:开始一个新项目或从现有项目入手。
- 修改文件:在工作区对文件进行增、删、改。
- 暂存修改:将你想要提交的修改添加到暂存区。
- 提交修改:将暂存区的修改保存到本地仓库,并附带一条描述信息。
- 推送到远程仓库(可选):将本地的提交同步到远程仓库,与团队成员共享。
- 拉取远程更新(可选):从远程仓库获取最新的修改并合并到本地。
Git 常用命令详解
下面是一些最常用的 Git 命令及其用途:
1. 设置 Git 用户信息
首次使用 Git 时,你需要配置你的用户名和邮箱,这些信息会记录在你的提交中。
Bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
2. 初始化或克隆仓库
-
初始化新仓库:在一个空文件夹中启动一个新的 Git 仓库。
Bash
cd my-project # 进入你的项目目录 git init # 初始化一个空的Git仓库
-
克隆远程仓库:从远程服务器(如 GitHub)复制一个现有仓库到本地。
Bash
git clone [远程仓库URL] # 示例: git clone https://github.com/username/repo-name.git
3. 查看仓库状态
-
git status
:显示工作区和暂存区的状态,告诉你哪些文件已修改、哪些已暂存、哪些未被跟踪等。Bash
git status
4. 添加文件到暂存区
-
git add [文件名]
:将指定文件添加到暂存区。Bash
git add index.html
-
git add .
:将所有修改过(包括新增、修改、删除)的文件添加到暂存区。Bash
git add .
5. 提交修改
-
git commit -m "提交信息"
:将暂存区的内容提交到本地仓库,并附带一条简明的提交信息。Bash
git commit -m "Add initial homepage content"
6. 查看提交历史
-
git log
:显示所有提交历史,包括提交哈希、作者、日期和提交信息。Bash
git log
-
git log --oneline
:以简洁的一行显示提交历史。Bash
git log --oneline
7. 分支管理
-
git branch
:列出所有本地分支。Bash
git branch
-
git branch [分支名]
:创建新分支。Bash
git branch feature-x
-
git checkout [分支名]
:切换到指定分支。Bash
git checkout feature-x
-
git checkout -b [新分支名]
:创建并立即切换到新分支(相当于git branch [新分支名]
和git checkout [新分支名]
的组合)。Bash
git checkout -b new-feature
-
git merge [源分支名]
:将源分支的修改合并到当前分支。Bash
git checkout main # 切换到主分支 git merge feature-x # 将 feature-x 分支的修改合并到 main
-
git branch -d [分支名]
:删除指定分支(只有在合并后才能删除)。Bash
git branch -d feature-x
8. 远程仓库操作
-
git remote -v
:查看已配置的远程仓库。Bash
git remote -v
-
git push [远程仓库名] [本地分支名]
:将本地的提交推送到远程仓库。Bash
git push origin main # 将本地的 main 分支推送到名为 origin 的远程仓库
-
git pull [远程仓库名] [远程分支名]
:从远程仓库拉取最新的修改并合并到当前本地分支。Bash
git pull origin main # 从名为 origin 的远程仓库拉取 main 分支的修改
9. 撤销操作
Git 提供了多种撤销方式,但使用时需要谨慎,特别是涉及已推送到远程的提交。
-
git reset [文件名]
:将文件从暂存区移回工作区(取消暂存)。Bash
git reset index.html
-
git reset --hard HEAD
:危险操作! 彻底丢弃所有未提交的修改,将工作区和暂存区回退到最近一次提交的状态。谨慎使用,因为它会丢失你的工作。Bash
git reset --hard HEAD
-
git revert [提交哈希]
:创建一个新的提交来撤销指定提交的更改。这是一种更安全的撤销方式,因为它不会改写历史,适合在共享分支上使用。Bash
git revert abc1234 # 撤销哈希为 abc1234 的提交
.gitignore
文件
在你的项目根目录下创建一个名为 .gitignore
的文件,可以在其中指定 Git 应该忽略的文件或目录,避免将它们添加到版本控制中。这对于编译生成的文件、日志文件、敏感配置等非常有用。
示例 .gitignore
文件:
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 目录
node_modules/
# 忽略特定文件
.env
Git 工作流建议
- 特性分支工作流 (Feature Branch Workflow):
main
(或master
) 分支保持稳定。- 为每个新功能或 bug 修复创建一个新的特性分支。
- 在特性分支上开发和提交。
- 完成后,将特性分支合并回
main
分支。 - 合并后删除特性分支。
- 提交频率:
- 经常提交,每次提交只包含一个逻辑上的完整修改。
- 提交信息要清晰、有意义,描述本次提交做了什么。
- 拉取更新:
- 在开始工作前和推送前,习惯性地
git pull
以获取最新代码,避免冲突。
- 在开始工作前和推送前,习惯性地