文章
Git

Git 使用指南

Git:版本管理

Git 官网提供了免费的操作手册,Git 官网,应该是写的最全的,但是看下去依旧很煎熬,下面用我的方式简短地介绍一下 Git 的基本使用

Git 官方手册

Linus & Git

Git 的诞生多少有点“Linus 看了一圈现成工具,眉头一皱,决定自己写一个”的味道。2005 年,Linux 内核社区原本使用的 BitKeeper 出现授权风波,项目急需替代方案。于是 Linus Torvalds 亲自下场,设计了一个速度快、分布式、适合大规模协作的版本控制系统(10天搞定)。

这个临时救火工具,后来成了程序员世界里的基础设施级存在。Git 也就这样从 Linux 内核开发的需求中诞生,并一路发展成今天最流行的版本控制工具之一。也因此诞生了 GitHub 这个全球最大的同性交友平台

下载与配置

首先在 PowerShell 中安装 Git:

scoop install git

安装完成后,重新打开终端,检查 Git 和 SSH 是否可用:

git --version
ssh -V

如果能正常输出版本号,说明 Git 已经安装成功。

Scoop 安装 Git 后,可能会提示一些额外命令,例如注册文件关联、右键菜单、Git Credential Manager 等:

reg import "...\install-associations.reg"
reg import "...\install-context.reg"
git config --system credential.helper manager

这些都不是必须项。但是最后一个可以推荐,用于 https 方式连接时免密

如果只是使用命令行进行 Git 操作,并且准备用 SSH 连接 GitHub / Gitee / GitLab,可以先全部忽略。它们主要用于 Windows 文件关联、右键菜单,以及 HTTPS 登录凭据管理。

接下来配置 Git 的全局用户名和邮箱。这个信息会记录在 commit 中:

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

例如:

git config --global user.name "karene"
git config --global user.email "your_email@example.com"

检查配置是否生效:

git config --global --list

建议顺手设置默认分支名为 main:

git config --global init.defaultBranch main

配置 SSH 连接代码平台

为了避免每次 push 都输入账号密码,推荐使用 SSH。(因为 https 如果没有设置的话,每次都要输入密码真的烦)

生成 SSH key:

ssh-keygen -t ed25519 -C "你的邮箱"

一路回车即可使用默认路径:

C:\Users\你的用户名\.ssh\id_ed25519

生成后会得到两个文件:

id_ed25519      私钥,不能泄露
id_ed25519.pub  公钥,可以添加到 GitHub / Gitee / GitLab

复制公钥到剪贴板:

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard

然后进入 GitHub / Gitee / GitLab 的账号设置页面,找到 SSH Keys,新建一个 SSH Key,把刚才复制的公钥粘贴进去。

以 GitHub 为例:

GitHub 头像
→ Settings
→ SSH and GPG keys
→ New SSH key
→ 粘贴公钥
→ Add SSH key

添加完成后,在 PowerShell 中测试 SSH 连接:

ssh -T git@github.com

第一次连接时会询问是否信任主机:

Are you sure you want to continue connecting?

输入:

yes

如果看到类似下面的提示:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

说明 SSH 配置成功。后半句不是报错,只是 GitHub 告诉你:认证通过了,但不提供远程 shell 登录。

日常使用

Git 日常工作流其实很简单,把它当成一个“三段式存档游戏”:

工作区  →  暂存区  →  本地仓库  →  远程仓库
改文件     git add     git commit     git push

最最最极简工作流就是:

git status
git add .
git commit -m "写清楚这次改了什么"
git push

这四步已经足够了。

比如你改完代码之后:

git status

看看 Git 发现了哪些变化。它像一个很啰嗦但靠谱的仓库管理员,会告诉你哪些文件改了、哪些文件还没被追踪。

然后把改动放进暂存区:

git add .

这里的 . 表示当前目录下所有改动。新手阶段可以先这么用,省心。等以后精细一点,再用:

git add 文件名

然后提交到本地仓库:

git commit -m "add login page"

这一步相当于给当前项目拍一张快照,并写一句说明。commit message 不要写成:

update
fix
改了一下

这种纯属害人害己,其实可以直接写中文,自己的项目也没事,但是如果是给人写 PR 的话还是用 conventional commits 的规范:

add user login page
fix navbar layout
update README installation guide

最后推送到远程仓库:

git push

如果是第一次推送当前分支,可能需要:

git push -u origin main

这里的 -u 是设置默认上游分支。设置过一次之后,以后直接 git push 就行。

所以个人项目的最小闭环是:

git status
git add .
git commit -m "your message"
git push

That's all

稍微完整一点的日常个人工作流是:

git pull
# 修改代码
git status
git add .
git commit -m "说明这次修改"
git push

也就是工作前先同步远程,如果是拉的别人的项目,其实就是更新:

git pull

避免你本地落后远程。尤其是你在多台电脑上写同一个项目,比如 Windows 主机、Linux 笔记本、云服务器都可能动过代码,那每次开工前最好先 git pull。不然 Git 会在某个深夜突然变身门卫:“你本地和远程不一致,先处理一下。”

个人项目推荐口诀:

开工先 pull,改完看 status,提交先 add,存档用 commit,上传用 push。

多人协作最常见的是 feature branch 工作流,也就是不要直接在 main 上乱开推土机,而是为每个功能开一个新分支。

流程大概是:

git pull
git switch -c feature/login
# 修改代码
git add .
git commit -m "add login form"
git push -u origin feature/login

解释一下:

git switch -c feature/login

表示创建并切换到一个新分支,名字叫 feature/login。

分支可以理解成一条平行时间线。你可以在这条时间线上折腾登录功能,主线 main 不受影响。等功能做好之后,再通过 Pull Request / Merge Request 合并回主线。

常见分支命名:

feature/login       新功能
fix/navbar-bug      修 bug
docs/git-notes      文档
refactor/api-layer  重构

如果你是团队项目,这套很常用:

main 保持稳定
每个功能开新分支
写完 push 到远程
发起 PR / MR
review 后合并

这就是现代协作开发最常见的小剧场:每个人在自己的分支里施工,最后由 PR 这个”工地验收处”统一检查。

还有几个日常高频命令,很值得早早认识。

查看当前状态:

git status

这是 Git 里最应该多用的命令。迷路了就敲它,像拿出地图。

查看提交历史:

git log --oneline

更清爽一点:

git log --oneline --graph --all

它会把提交历史画成小树杈,分支关系更直观。

查看具体改了什么:

git diff

它显示工作区里还没有 add 的改动。

如果已经 git add 了,想看暂存区里的改动:

git diff --staged

撤销某个文件的未暂存修改:

git restore 文件名

比如:

git restore README.md

注意这个会丢掉你对这个文件的本地修改,取消暂存:

git restore --staged 文件名

比如你不小心 git add . 把一堆东西加进去了,可以用:

git restore --staged .

这只是把文件从暂存区拿出来,不会删除你的修改。

临时保存当前工作:

git stash

适合这种情况:你正在改一半,突然要切分支处理别的事,但当前改动还不适合 commit。stash 就像把桌面上的零件扫进一个临时抽屉。

恢复临时保存:

git stash pop

查看所有 stash:

git stash list

你可以先记住三套工作流。

第一套,个人最小流:

git status
git add .
git commit -m "message"
git push

第二套,个人同步流:

git pull
# 修改代码
git status
git add .
git commit -m "message"
git push

第三套,团队分支流:

git pull
git switch -c feature/xxx
# 修改代码
git add .
git commit -m "message"
git push -u origin feature/xxx