Git 是什么,为什么需要它?
假设你写代码时出了错,想回到两天前的样子。如果没有每天单独备份文件,就没办法做到。所以跟代码打交道的人都用版本控制软件,而事实上的标准就是 Git。用 Git,你可以安全地记录当前代码,并随时回到那个时点。
好处归纳为三点:出错后能回退到之前的版本,能查看自己按什么顺序做了哪些工作,还能在不担心弄坏原稿的前提下尝试新功能。
这正是刚开始做 Vibe Coding 的人在写代码之前就卡住的地方。AI 会替你写代码,但保存、回退、分叉出来做实验,仍然是你的活儿。好在新手不需要学太多,几个命令就能上手。
怎么安装和初始设置?
Windows 从 git-scm.com 下载安装程序运行,安装过程中的选项保持默认即可。Mac 如果装了 Homebrew,在终端里 brew install git 一行就搞定。Mac 用自带的“终端”应用,Windows 用 PowerShell 来执行。
装好后,只需登记一次你是谁。因为每次提交(版本记录)都会一并保存“是谁提交的”,可以理解为登记一个身份。下面两行输入一次,之后就不用再管了。
# Mac(Homebrew):安装 Git
brew install git
# Windows:从 git-scm.com 下载安装程序并运行
# 仅一次:登记身份(会记录到提交中)
git config --global user.name "你的名字"
git config --global user.email "you@example.com"add 与 commit —— 把代码记录成版本
先建一个工作文件夹,用 VS Code 之类的编辑器打开。在该文件夹里打开终端运行 git init,从这一刻起 Git 就开始监视这个文件夹。你在这里建文件、写代码的所有变化都会被它追踪。
当你觉得代码满意、想记录(备份)这一刻时,分两步。先用 git add 挑出要记录的文件,再用 git commit 把这个状态定格为版本。提交时在 -m 后面加一句简短说明,写你做了什么,例如 git commit -m "创建第一个文件"。
为什么偏偏是两步?因为不是每个文件都需要记录版本。比如图片文件内容几乎不变,就没必要记录。所以用 add 只挑出要记录的,用 commit 敲定。中间这个暂存空间叫暂存区(staging area),敲定后的版本累积的地方叫仓库(repository),add 这个动作就叫暂存(staging)。
有三个常用的辅助命令。git add . 一次性暂存所有改动的文件,git status 告诉你现在哪些已暂存、哪些被修改,git log 把你至今的提交历史逐条列出来。拿不准时就敲 git status。
# 在工作文件夹里启动 Git(仅一次)
git init
# 挑出要记录的文件(暂存)
git add app.txt
# 或一次性暂存所有改动文件
git add .
# 敲定为一个版本(必须写说明)
git commit -m "创建第一个文件"
# 查看当前状态 / 查看提交历史
git status
git log什么时候该提交?
新手最常见的错误,就是像保存文件一样不停地提交。没这个必要。提交和保存不是一回事。
标准是:一个有意义的整块完成时。加了一个小功能,就提交;改了那个功能,再提交。按工作单位这样记录,日后看历史会很清晰——什么时候做了什么。当然,一个人练习时别想太多,随意即可。
查看改动 —— diff 与编辑器 GUI
一个好习惯:提交前先看看改了什么。把当前文件和最近一次提交作比较,确认只改了你想改的地方再提交,能减少失误。
在终端里用 git diff 查看最近提交与当前代码的差异。用空格滚动,用 q 退出。要和某个特定提交比较,先用 git log 找到提交 ID,再用 git diff <提交ID>;要看两个提交之间,用 git diff <ID1> <ID2>。不过终端 diff 在单个窄窗里显示,代码一长就难读,而且连多敲一个回车、一个空格这种小改动都当成差异,看着累。
所以现实的答案是编辑器 GUI。打开 VS Code 左侧的源代码管理选项卡(叶子形状的图标),它会告诉你哪些文件被改了;+ 按钮暂存,− 按钮取消,勾选按钮提交,点几下就完成。装上 GitLens 或 Git Graph 之类的扩展,还能把提交历史和改动用图形可视化,看起来轻松得多。没必要执着于终端,用顺手的那个就行。
# 查看当前相对最近提交的改动(q 退出)
git diff
# 在历史中找到提交 ID
git log
# 把某个提交与当前比较 / 比较两个提交
git diff <提交ID>
git diff <ID1> <ID2>
# 用可视化比较工具打开
git difftoolbranch —— 复制一份,安全地做实验
你在写代码,想加个新功能,但直接写进原稿又心里没底——万一写错了出 bug 或者把程序弄崩就麻烦了。这时的做法是把原稿安全地放着,复制一份,先在副本上做出功能,跑通后再合并回原稿。这个副本就是分支(branch)。可以把分支理解为项目分叉出来的一个副本。
git branch coupon 创建一个叫 coupon 的分支,git switch coupon 切换到那个副本(旧写法是 git checkout)。你原本工作的代码其实也是一个分支,通常叫 main(或按环境叫 master)。编辑器状态栏会显示你现在在哪个分支。在 coupon 分支上创建的文件,回到 main 就看不见了——这说明你可以多么独立地开发,而不动原稿。
合并时,先切到接收方(main),再用 git merge coupon 把副本的工作拉进来。git log --graph --oneline 会以图形展示分支如何分叉、如何合并,而 HEAD 表示你当前的位置。
有一点要留心,就是冲突(conflict)。如果两个分支对同一文件的同一行做了不同修改,Git 不知道该选哪边,就会停止合并并报告冲突。这时需要人来处理——只留下你想要的代码,删掉其余的,再提交即可。VS Code 可以用按钮选择应用哪一边的代码,会轻松很多。
分支真正发挥威力是在协作。十个人同时改同一份源代码会是灾难。所以每个人先在自己的分支上开发,跑通了再合并。哪怕一个人练习,也建议建个分支、提交、再合并回来,并故意制造一次冲突去解决,很快就能找到感觉。
# 创建 'coupon' 分支(副本)并切换过去
git branch coupon
git switch coupon # 旧写法:git checkout coupon
# 在 coupon 上工作,然后 add · commit
git add .
git commit -m "添加优惠券功能"
# 回到 main,把副本的工作合并进来
git switch main
git merge coupon
# 以图形查看分支的分叉
git log --graph --oneline那么从哪里开始?
要记的命令就那么几个。一开始,在工作文件夹里 git init 一次,然后反复 add 和 commit,把持续记录代码变成习惯就行。查看改动(diff)和分支,先把概念弄懂,用 VS Code 的源代码管理 GUI 起步就足够了。终端命令等熟练了再一个个加也不迟。
核心很简单:持续把代码记录下来的习惯,以及随时能回退的安全感。能回退,你才敢放手实验;实验越多,Vibe Coding 的成果也越好。
本文以 Vibe Coding 新手的视角,重新整理了 코딩애플 的“简单讲解 Git 基础”入门三部曲。原视频:youtu.be/sly2u8BIi9E(add·commit)、youtu.be/xD9GnHKveRk(git diff·编辑器)、youtu.be/XFm2qNs30BE(branch)。