
核心概念
理解 Git 的三个主要区域至关重要:
- 工作区 (Working Directory):你正在编辑的本地项目目录。
- 暂存区 (Staging Area / Index):一个文件,保存了下次将要提交的文件列表信息。
- 本地仓库 (Local Repository):保存了项目所有版本历史记录的数据库,位于你的
.git
目录中。
基本的 Git 工作流程是:在工作区修改文件 -> 将修改的文件添加到暂存区 -> 将暂存区的文件提交到本地仓库。
初始配置
在开始使用 Git 之前,你需要配置你的用户名和邮箱,这些信息会出现在你的每一次提交中。
git config --global user.name "Your Name"git config --global user.email "youremail@example.com"
基础命令
1. 创建仓库
-
初始化新仓库: 在现有项目目录中创建一个新的 Git 仓库。
Terminal window git init -
克隆远程仓库: 从一个远程 URL 复制一个完整的 Git 仓库。
Terminal window git clone <repository_url>
2. 日常工作流程
-
查看状态: 检查工作区和暂存区的状态。
Terminal window git status -
暂存文件: 将文件的更改添加到暂存区。
Terminal window # 暂存指定文件git add <file_name># 暂存所有已修改和新添加的文件git add . -
提交更改: 将暂存区的内容提交到本地仓库,并附上描述性消息。
Terminal window git commit -m "Your descriptive commit message" -
查看历史: 查看提交日志。
Terminal window # 显示完整的提交历史git log# 以更简洁的单行格式显示git log --oneline# 显示分支图git log --graph --oneline --all
分支管理 (Branching)
分支是 Git 的核心特性之一,它允许你在一个独立的环境中开发新功能,而不会影响主线(通常是 main
或 master
分支)。
1. 查看与创建分支
-
列出所有分支:
Terminal window git branch -
创建一个新分支:
Terminal window git branch <branch_name> -
创建并切换到新分支:
Terminal window git checkout -b <branch_name># 或者使用新命令 (Git 2.23+)git switch -c <branch_name>
2. 切换分支
-
切换到已存在的分支:
Terminal window git checkout <branch_name># 或者使用新命令git switch <branch_name>
3. 合并分支
-
合并分支: 将指定分支的历史记录合并到当前分支。
Terminal window # 首先,切换到你想要合并入的目标分支,例如 maingit switch main# 然后,执行合并命令git merge <feature_branch_name>如果出现冲突 (conflicts),Git 会提示你手动解决它们,然后再次提交。
4. 删除分支
-
删除已合并的分支:
Terminal window git branch -d <branch_name> -
强制删除未合并的分支:
Terminal window git branch -D <branch_name>
远程协作
为了与他人协作,你需要与远程仓库进行交互。
1. 管理远程仓库
-
查看远程仓库: 列出你配置的每个远程仓库的简写。
Terminal window git remote -v -
添加远程仓库:
Terminal window git remote add <short_name> <url># 例如: git remote add origin https://github.com/user/repo.git
2. 同步数据
-
推送 (Push): 将你的本地分支提交推送到远程仓库。
Terminal window git push <remote_name> <branch_name># 例如: git push origin main -
拉取 (Pull): 从远程仓库获取最新版本并自动合并到当前分支。这相当于
git fetch
+git merge
。Terminal window git pull <remote_name> <branch_name># 例如: git pull origin main -
获取 (Fetch): 从远程仓库下载所有分支和数据,但不会自动合并。这允许你在合并前先查看更改。
Terminal window git fetch <remote_name>
撤销操作
-
撤销工作区的修改: 丢弃某个文件的本地修改,恢复到最近一次提交的状态。
Terminal window git checkout -- <file_name> -
取消暂存: 将文件从暂存区移回工作区。
Terminal window git reset HEAD <file_name> -
重置提交 (Reset): 撤销最近的提交。
--soft
,--mixed
,--hard
三种模式有不同效果,请谨慎使用。Terminal window # 仅撤销提交,保留更改在暂存区git reset --soft HEAD~1# 撤销提交和暂存,保留更改在工作区 (默认)git reset --mixed HEAD~1# 彻底丢弃提交和所有更改 (危险操作)git reset --hard HEAD~1 -
反转提交 (Revert): 创建一个新的提交来撤销某个历史提交的更改,这是一种更安全的方式,因为它不会改变项目历史。
Terminal window git revert <commit_hash>