轻松学习 Git:版本控制入门指南

发布: (2026年1月2日 GMT+8 01:43)
8 min read
原文: Dev.to

I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the text, I’ll translate it into Simplified Chinese while preserving the original formatting, markdown syntax, and technical terms.

Git

In technical terms: Git 是一个 Distributed Version Control System (DVCS)

In simple terms: Git 是你项目的时间机器。它会跟踪你对代码所做的每一次修改,所以如果你弄坏了某些东西,只需“倒回”到之前的工作状态即可。

为什么我们使用它?

  • Collaboration – 多人可以同时在同一文件上工作,而不会相互覆盖对方的工作。
  • Distributed architecture – 每个开发者都有仓库的完整本地副本(包括历史记录和提交)。这使得离线工作成为可能,并消除单点故障。
  • Branching & merging – 开发者为一个功能创建单独的分支,随后将其合并回主分支。

术语词典

术语含义
Repository (Repo)包含所有项目文件 以及 完整修订历史的文件夹。
Commit在特定时间点的代码快照;由唯一哈希标识。
Staging Area您准备下一次提交的文件列表。
Local存储在个人电脑上的仓库。
Remote存储在服务器上的仓库(例如 GitHub、GitLab)。
Clone将远程仓库下载到本地电脑。
Push将本地提交上传到远程服务器。
Pull将远程服务器的更改下载到本地机器。
Merge将一个分支的代码合并到另一个分支。
Branch代码的平行版本;更改在合并之前不会影响主项目。
HEAD指向您当前正在查看或工作的提交的指针。
OriginGit 为您克隆的远程 URL 默认给出的昵称。
Pull Request (PR)请求将您的分支合并到主分支(在 GitHub/GitLab 上使用)。

核心架构

在进入命令之前,先了解三个阶段:

  1. 工作目录(工作台) – 实际编写代码的文件夹。
  2. 暂存区(箱子) – 从工作台挑选特定文件放入箱子。
  3. 本地仓库(运输卡车) – 将箱子封好并贴上标签。这就形成了一个 提交,项目历史中的永久部分。

GIT Architecture

仓库结构概览

Project Structure

  • src/ – 包含实际的源代码,使项目保持有序。
  • .gitignore – 列出 Git 应该有意忽略的文件/文件夹(例如,机密信息)。
  • README.md – 说明手册,解释项目是什么以及如何运行。
  • LICENSE – 法律文档,说明他人如何使用或复制你的代码。
  • .git/ – 隐藏的数据库,Git 在此存储整个项目的历史记录和保存点。

开发者工作流

初始化

告诉 Git 监视你的文件夹:

git init

检查状态

查看仓库的当前状态:

git status

暂存

创建一个名为 index.html 的文件。再次运行 git status —— 文件会以 红色(未跟踪)出现。将其移到暂存区:

git add index.html

提示: 要一次性暂存 所有 已更改的文件,可使用 git add .。暂存后,git status 会以 绿色(已准备好保存)显示该文件。

提交

将快照保存到历史记录(必须包含一条信息):

git commit -m "Created the homepage file"

-m = “信息”。

懒人快捷方式

对已经跟踪的文件同时进行暂存和提交:

git commit -am "Updated the style"

注意:不会 暂存新(未跟踪)文件;它只会提交已修改或已删除的已跟踪文件。

历史

查看所有提交的列表:

git log

差异

显示工作目录与最近一次提交之间的变化:

git diff

这就是 Git 的基本工作流。从这里你可以进一步探索分支、远程协作以及 Git 提供的更多强大功能。祝编码愉快!

Source:

Git Cheat Sheet

Diff

当你暂存或提交时,应该始终检查实际改动了什么。

git diff

Branching

Create a Branch

默认情况下,你位于 main(或 master)分支。创建一个新分支:

git branch dark-mode-feature

Switch Branches

切换到新分支:

git checkout dark-mode-feature

较新的 Git 版本也支持 git switch dark-mode-feature

Merging

你在 dark-mode-feature 中编写了代码,提交并测试通过。现在把它合并回 main

  1. 切换回 main

    git checkout main
  2. 合并特性分支

    git merge dark-mode-feature

Going Remote

到目前为止,所有操作都在本地进行。要共享代码,需要一个远程仓库。

Clone

将已有仓库下载到本机:

git clone 

Push

将本地提交上传到远程仓库:

git push origin main

Pull

从远程下载新更改到本地电脑:

git pull

Stashing

你正在开发新功能(代码凌乱,半成品)。突然出现一个关键 bug 需要修复。此时不能切换分支,因为工作未完成,也不能提交。可以临时保存你的改动:

git stash

Pop Stash

取回暂存的改动:

git stash pop

Reset

有时你提交得太早,需要回退。git reset 会把 HEAD 移动到指定的提交。它主要有两种方式。

Soft Reset

撤销提交 但保留代码改动 在暂存区。

# 回退一个提交(保留已暂存的改动)
git reset --soft HEAD~1

# 回退一个提交(保留未暂存的改动)– mixed reset
git reset HEAD~1

# 回到指定的提交
git reset 

Hard Reset

撤销提交 并删除所有改动。它会把所有内容恢复到工作开始前的状态。

# 回退一个提交(删除提交并删除改动)
git reset --hard HEAD~1

# 回到指定的提交(删除所有改动)
git reset --hard 

Warning: 这会永久删除你的工作。请谨慎使用。

Revert

如果已经把有问题的代码推送到共享的 main 分支,不能使用 reset(删除他人已下载的历史会导致冲突)。相反,创建一个提交来撤销错误的提交:

git revert 

Cherry‑Pick

你的团队成员在一个大型实验分支上修复了一个小 bug,但你不想要他们的其他改动。只把那个单独的提交应用到你的分支:

git cherry-pick 

Rebase

你正在一个特性分支上工作。与此同时,main 分支已经有了新更新,使你的分支变得落后。与其进行混乱的合并,不如 rebase 你的工作到最新的 main,保持线性历史:

git rebase main

Tip

遇到紧急情况时:git commitgit push,让 CI/CD 流水线处理其余工作。

Anonymous Developer

Back to Blog

相关文章

阅读更多 »

GitLab 入门

Git是什么 Git是一种分布式版本控制系统,用于在软件开发过程中跟踪源代码的更改。它允许多个开发者…

提交信息格式

提交信息格式 每个提交信息由标题、正文和脚注组成。标题采用特殊格式,包含类型、可选范围,……

常见 Git 错误(以及如何修复)

常见的 Git 错误及其修复方法 1. 在 main 分支上提交而不是在特性分支上 解决方法: bash git checkout -b feature-branch git reset --soft HEAD~1 git ...