Git 正确使用指南:系统性结构化总结

一、核心概念

理解 Git 的核心概念是正确使用的基础:

  • 仓库(Repository):包含项目完整历史记录的目录,分为本地仓库(在你的电脑上)和远程仓库(在服务器上,如 GitHub、GitLab)。
  • 工作区(Working Directory):你实际编辑的文件目录。
  • 暂存区(Staging Area):临时保存即将提交的修改的区域(类似“购物车”)。
  • 提交(Commit):将暂存区的修改永久保存到仓库的历史记录中,每个提交有唯一的哈希值。
  • 分支(Branch):独立的开发线,默认分支通常为 mainmaster

二、安装与配置

1. 安装

  • Windows:下载 Git for Windows 安装包。
  • macOS:使用 Homebrew 安装:brew install git
  • Linux(Ubuntu/Debian)sudo apt install git

2. 基础配置

配置用户信息(全局生效):

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

其他常用配置:

  • 设置默认编辑器:git config --global core.editor vim
  • 查看配置:git config --list

三、基本工作流程(本地仓库)

1. 初始化/克隆仓库

  • 初始化新仓库:在项目目录下运行 git init
  • 克隆远程仓库git clone <远程仓库URL>(如 git clone https://github.com/username/repo.git)。

2. 查看状态与差异

  • git status:查看工作区、暂存区的状态(哪些文件被修改、暂存)。
  • git diff:查看工作区与暂存区的差异。
  • git diff --staged:查看暂存区与最后一次提交的差异。

3. 暂存与提交

  • git add <文件>:将文件添加到暂存区(如 git add . 暂存所有修改)。
  • git commit -m "提交信息":将暂存区的修改提交到仓库,提交信息需清晰描述修改内容。

4. 查看提交历史

  • git log:查看提交历史(按时间倒序)。
  • git log --oneline:简洁显示提交历史(每个提交一行)。

5. 撤销操作

  • 取消暂存git restore --staged <文件>(将文件从暂存区移回工作区)。
  • 丢弃工作区修改git restore <文件>(谨慎使用,会丢失未暂存的修改)。
  • 修改最后一次提交git commit --amend(修改提交信息或补充遗漏的文件)。

四、分支管理

1. 基本分支操作

  • git branch:查看所有分支(当前分支前有 * 标记)。
  • git branch <分支名>:创建新分支(如 git branch dev)。
  • git switch <分支名>:切换到指定分支(或旧命令 git checkout <分支名>)。
  • git switch -c <分支名>:创建并切换到新分支(一步完成)。

2. 合并分支

  • git merge <分支名>:将指定分支合并到当前分支(如在 main 分支运行 git merge dev)。
  • 解决冲突:如果合并时出现冲突,Git 会标记冲突文件,需手动编辑文件解决冲突,然后 git addgit commit 完成合并。

3. 删除分支

  • git branch -d <分支名>:删除已合并的分支。
  • git branch -D <分支名>:强制删除未合并的分支(谨慎使用)。

4. 变基(Rebase)

  • git rebase <目标分支>:将当前分支的提交“移动”到目标分支的顶部,保持提交历史线性(如 git rebase main)。
  • 注意:不要对已推送到远程仓库的公共分支使用变基!

五、远程仓库与协作

1. 关联远程仓库

  • git remote add origin <远程仓库URL>:将本地仓库与远程仓库关联(origin 是远程仓库的默认名称)。
  • git remote -v:查看关联的远程仓库。

2. 推送与拉取

  • git push -u origin <分支名>:将本地分支推送到远程仓库(-u 关联本地与远程分支,后续可直接 git push)。
  • git pull:拉取远程仓库的最新修改并合并到当前分支(等价于 git fetch + git merge)。
  • git fetch:获取远程仓库的最新修改但不自动合并。

3. 协作流程(Fork + PR)

  1. Fork 仓库:在 GitHub/GitLab 上 Fork 他人的仓库到自己的账号。
  2. 克隆自己的 Forkgit clone <你的Fork仓库URL>
  3. 创建分支开发git switch -c feature-xxx
  4. 提交并推送git add .git commit -m "feat: 添加xxx功能"git push origin feature-xxx
  5. 提交 Pull Request (PR):在 GitHub/GitLab 上提交 PR,等待原仓库维护者审查合并。

六、常见问题与最佳实践

1. .gitignore 文件

创建 .gitignore 文件,指定不需要提交的文件(如依赖目录、日志文件、临时文件):

node_modules/
*.log
.DS_Store

2. 提交信息规范

使用清晰的提交信息格式(参考 Conventional Commits):

  • feat: 新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 重构

3. 恢复丢失的提交

如果误删了提交,使用 git reflog 查看操作历史,找到丢失的提交哈希值,然后:

  • git checkout <哈希值>:临时查看该提交。
  • git reset --hard <哈希值>:恢复到该提交(谨慎使用,会丢失后续修改)。

4. 最佳实践

  • 频繁提交:小步提交,每个提交对应一个独立的功能或修复。
  • 分支开发:在分支上开发新功能,完成后合并到主分支,保持主分支稳定。
  • 代码审查:通过 PR 进行代码审查,提高代码质量。
  • 定期同步:定期从远程仓库拉取最新修改,避免冲突。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐