本文用于说明 Git 的基本原理、常用指令和日常开发流程。内容以够用、清晰为目标,不包含过多低频命令。
Git 是一个分布式版本控制工具,用来记录文件变化、管理不同版本,并支持多人协作。
Git 的核心作用:
- 记录项目文件在不同时间点的状态。
- 允许回到历史版本。
- 通过分支支持并行开发。
- 通过远程仓库支持团队协作。
Git 管理文件时,主要涉及三个区域:
| 区域 | 含义 | 常见操作 |
|---|---|---|
| 工作区 | 当前正在编辑的文件 | 修改、创建、删除文件 |
| 暂存区 | 准备提交的改动 | git add |
| 本地仓库 | 已经提交保存的版本历史 | git commit |
一次普通提交的过程是:
- 在工作区修改文件。
- 用
git add把改动加入暂存区。 - 用
git commit把暂存区内容保存为一次提交。
Git 每次提交都会生成一个提交对象,提交对象会记录:
- 本次提交对应的文件快照。
- 提交说明。
- 提交作者和时间。
- 上一次提交的引用。
因此,Git 的历史记录可以理解为一条由提交连接起来的版本链。
分支是指向某个提交的引用。创建分支并不会复制一份完整项目,而是创建一个新的指针。
常见概念:
| 概念 | 含义 |
|---|---|
main |
常见的主分支名称 |
HEAD |
当前所在位置 |
| 分支 | 指向某个提交的可移动引用 |
| 合并 | 把一个分支上的提交整合到另一个分支 |
当在某个分支上提交时,该分支指针会向前移动到新的提交。
远程仓库通常托管在 GitHub、GitLab 等平台上。它用于保存一份在线版本,并支持多人同步。
常见关系:
| 名称 | 含义 |
|---|---|
| 本地仓库 | 自己电脑上的 Git 仓库 |
| 远程仓库 | GitHub 等平台上的仓库 |
origin |
默认远程仓库名称 |
push |
把本地提交上传到远程仓库 |
pull |
从远程仓库拉取并合并最新内容 |
git init
git statusgit init:在当前目录初始化 Git 仓库。git status:查看当前文件状态。
git add README.md
git add .
git commit -m "说明本次修改"git add README.md:暂存指定文件。git add .:暂存当前目录下的所有改动。git commit -m:提交暂存区内容,并写明提交说明。
git log --onelinegit log --oneline:用简洁形式查看提交历史。
git branch
git switch -c feature-name
git switch main
git merge feature-namegit branch:查看分支。git switch -c feature-name:创建并切换到新分支。git switch main:切换回主分支。git merge feature-name:把指定分支合并到当前分支。
git remote add origin <仓库地址>
git push -u origin main
git pullgit remote add origin:添加远程仓库地址。git push -u origin main:第一次把本地main分支推送到远程仓库,并建立默认关联。git pull:拉取远程最新内容并合并到当前分支。
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin <仓库地址>
git push -u origin main流程说明:
- 初始化本地仓库。
- 添加并提交文件。
- 确认主分支名称为
main。 - 关联 GitHub 仓库。
- 推送到 GitHub。
git status
git add .
git commit -m "更新说明"
git push流程说明:
- 查看当前改动。
- 暂存需要提交的文件。
- 提交本地版本。
- 推送到远程仓库。
git switch -c feature-name
git add .
git commit -m "完成某个功能"
git switch main
git merge feature-name
git push流程说明:
- 从主分支创建功能分支。
- 在功能分支上修改并提交。
- 切回主分支。
- 合并功能分支。
- 推送到远程仓库。
- 提交说明要简洁说明本次改动,不要只写
update。 - 提交前先用
git status查看状态。 - 多人协作时,修改前先
git pull,避免本地版本落后。 - 不要把密码、密钥、账号令牌等敏感信息提交到仓库。
.gitignore用于忽略不需要提交的文件,例如临时文件、构建产物和本地配置。