Git入门指北

0x00 什么是Git?

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
—菜鸟教程

感觉看不懂?

简单来说,git是一个开源的版本控制和分支管理工具。

你可能还会疑惑,什么是版本控制,什么又是分支管理?

举个简单的🌰,你是一名大学生,正在为论文头疼。
别问为什么是大学生

什么是版本控制?

你把论文发给老师审核,由于存在错误老师给你打了回来。
于是你决定改改再重新提交。
这时你想,如果修改不满意了怎么办?是不是要留一份原版方便再次修改?
为了避免改错了无法回退,你选择把原论文拷贝一个副本后再进行修改。
这样做存在一个潜在的问题。
一次两次可以简单的拷贝一份副本,但是如果要改的次数很多呢?
你每进行一次修改更新,都要产生一份拷贝。
你会收获大量的只是与原版有些许差别的拷贝副本。
这些副本不仅会占用空间,更会让你头大。
此时你就有了版本管理的需求。
Git允许你进行增量修改并留下记录,这样当你某次修改不满意后可以随时找到并回退版本到修改前。
这就是Git的版本控制功能。
简洁而又优雅。

什么是分支管理?

同样是一篇论文,但不同的是你与其他人合著的论文。
论文再次被打回,你与你的合作者两人都需要修改自己所写的那一部分。
如果你仍旧先拷贝副本,修改完后再拷贝给他,他进行修改,产生新的副本拷贝给你,你再次修改……
这未免也太乱且复杂了。
Git给出的方案为,
首先你们每个人都从原版上拷贝一份副本,分别进行修改。
修改完成后Git会把你们进行的修改统一整合到一起。
处理可能存在的冲突情况,如两人修改了同一个地方等……
最后产生一篇船新版本的论文。
这篇论文成功包含了你们所作的所有更改,
并且对哪里的修改不满意可随时还原修改。
上述的操作用Git的方式表示为,fork、conflict check、merge。
这就是分支管理。

0x01 如何使用Git?

第一步 当然是安装Git

  • Windows: 下载戳这里 Git for Windows
  • Mac: brew install git(需要先安装Homebrew)
  • Linux: sudo apt install git(Debian/Ubuntu)
    sudo yum install git(CentOS)

Tips
安装完成后可以执行

1
git --version

来验证是否成功安装

第二步 建立一个自己的仓库

1
git init

执行该命令后会在当前目录下初始化一个仓库(一个隐藏的.git文件夹)。
顾名思义,仓库就是用来保存你的代码和提交记录的地方。

仓库一般分本地仓库和远程仓库。
本地仓库是你在本地存放代码的地方。
远程仓库是你把代码托管到平台的地方。

注意命令的执行目录以免回头找不到自己的仓库在哪里

第三步 设置一些基本信息

1
git config --global user.name "你的名字"
1
git config --global user.email "你的邮箱"

填了这两个基础信息git才能知道作者(你)是哪一位

我没有邮箱怎么办?

没有当然是去注册一个!

第四步 掌握一些常见的命令

命令 作用 示例
git add 将文件添加到暂存区 git add file.txt(添加一个文件)
git add .(添加所有文件)
git commit 提交更改到本地仓库 git commit -m "提交说明"
git status 查看当前仓库状态 git status
git log 查看提交历史 git log --oneline(精简版历史)
git branch 查看分支 git branch
git branch 分支名 创建新分支 git branch feature
git checkout 分支名 签出分支(切换分支) git checkout feature
git merge 分支名 合并指定分支到当前分支 git merge feature
git branch -d 分支名 删除分支 git branch -d feature
git clone 仓库地址 克隆远程仓库到本地 git clone https://github.com/torvalds/linux.git
(这个是Linux内核的仓库地址)
git remote add origin 仓库地址 关联远程仓库 git remote add origin https://github.com/name/repositories
git push -u origin 分支名 推送本地分支到远程 git push -u origin feature
git pull 拉取远程更新到本地 git pull
git checkout -- 文件名 撤销工作区更改 git checkout -- file.txt
git reset HEAD 文件名 撤销暂存区文件 git reset HEAD file.txt
git reset --hard 提交ID 回退到某次提交
(慎用!)
git reset --hard 2ebae9aa06cead3bb6fc84fa51997acfc9f87339

⚠️
git reset --hard 会永久删除未提交的更改,使用前请确保:

  1. 已备份重要修改
  2. 确认commit hash正确

看到这些命令密密麻麻是不是有些头大?
放轻松,头晕是正常现象

上面的命令基本就是一个典型工作流会用到的所有命令。

这些命令可以拆解为版本管理,分支管理,仓库管理,更改回退四个部分。

要掌握这些基础命令,你需要了解Git管理的基本流程。

在本地仓库,Git划分出了工作区、暂存区。
工作区,顾名思义,就是你编辑文件编写代码的地方,你对文件进行的所有更改都是在工作区进行的。
暂存区,是你暂存你进行的编辑的地方,之所以叫暂存,因为此时还没有把更改写入仓库,只是临时存一下。
当你完成一个阶段性任务时,你就可以进行一次提交,把暂存区保存的更改提交至仓库。
每一次提交都会拥有一个唯一的Hash值,并且每次提交都会附带提交说明,来解释此次提交的更改。
仓库里面存储了你从创建仓库起对项目的所有更改。
仓库中保存了项目的所有分支和更改记录,你可以对分支和记录进行操作。

graph LR
A[工作区] -->|git add| B[暂存区]
B -->|git commit| C[本地仓库]
C -->|git push| D[远程仓库]

Git通过分支来管理开发,能够让多个工作者并行工作而不会冲突。
每一个分支代表一条独立的开发线。
一般仓库以main作为主分支,也有部分仓库使用master作主分支。
你可以在新分支中开发新功能,修复Bug,或者实验你的奇思妙想,这些都不会影响到你的开发主线——在你合并分支前。
当你确认你的更改是有益的且不会产生问题后,你就可以把你的分支合并进主分支并删除你的分支。
在合并前删除分支是不推荐的,这会使你丢失所有的新更改。
常见做法是每增加一个需求就单开一条新分支,并在代码合并后删除分支。
在远程仓库中,为了保证项目根基稳定,主分支一般是受保护的,不允许将更改直接推送到主分支。
当你想要将你的分支合并到远程仓库的主分支时,一般需要提出PR(Pull Request)请求。
仓库审核者在审查完毕你的代码并确认没有冲突后,会通过你的PR,你的更改才会被合并至主分支中。

一个常见的开发流程为

1
2
3
4
5
6
7
8
9
git pull # 从远程仓库同步最新更改
git branch feature # 创建新分支
git add file.txt # 暂存更改
git commit -m "提交说明" # 提交更改
git push -u origin feature # 将更改推送至远程仓库
git checkout main # 签出到主分支
git merge feature # 合并新分支
git push -u origin main # 将更改推送至远程仓库
git branch -d feature # 删除分支

只要熟悉工作流程,这些命令就很容易掌握了。

0x02 实用技巧

你可以在仓库所在目录下创建一个.gitignore文件,写入文件中的文件/路径将被Git忽略,不会添加至仓库中。
示例:

1
2
3
.vscode
test/
test_*.c

VS Code目前已经集成Git可视化工具,当然也有一些第三方工具如GitKraken等,Git本身也有GitGUI

你可以在你的提交说明中插入emoji让提交信息显得更直观。
示例:

1
git commit -m "✨ 添加新功能"

另一种方法是使用emoji简码:

1
git commit -m ":sparkles:添加新功能"

:sparkles:将在受支持的地方自动渲染为emoji,即

关于emoji简码的使用可以参考gitmoji

git --help是一个很好的朋友,当遇到问题时不妨看一下官方帮助。

0x03 常见问题

Q:commit message写错了怎么办?
A:使用git commit --amend修改最近一次提交

Q:如何撤销已push的提交?
A:git revert <commit>创建反向提交


最后提醒一点:

你必须清楚的知道你要执行的命令会带来什么,执行不当的命令可能造成不可逆转的严重后果!


Git入门指北
https://www.letr.top/2025/08/16/what-is-git/
作者
letr
发布于
2025年8月16日
许可协议