【Vibe Coding 必学技能之 Git】即便 AI 能搞定项目

CN
3小时前

【Vibe Coding 必学技能之 Git】

即便 AI 能搞定项目,依然还有一些技能是必学的。其中最基础的就是 Git。

如果你做过乙方,你一定做过第一版、第二版.....最终版、打死不改版、再改是小狗版。而最终还是选择了第一版。

现在,即使 AI 成了那个任劳任怨修改的好脾气。你依然需要对各种版本进行管理,而这个就是 Git 的核心功能。简单来说,你 Git 一下,就为现在的代码进行一次新的备份。

Git 是程序员的必备技能,它还可以防止 AI 乱修改代码、创建分支、还可以一键推送 GitHub 等。

当然,在 AI 时代,大部分都可以让 AI 来操作,我们需要的是对它有基础的了解,掌握核心功能。

──────────────

🛠️ 1. Git 初始配置

• 下载 Git,官网下载后可以一路默认下一步操作

• 配置用户名和密码

git config --global http://user.name

git config --global http://user.email

配置好后,可以在终端查看:

git -v

git config --list

──────────────

📂 2. 初始化项目

在项目中第一次运行 Git,需要先进行初始化 Git。

方法 1:

• 在 Cursor 中打开你的项目文件夹。

• 打开集成终端(View > Terminal 或 Ctrl+`)。

• 运行命令:git init。这会在项目中创建一个 .git 文件夹,初始化本地仓库。

• (可选)连接远程仓库(如 GitHub):运行 git remote add origin https://github.com/你的用户名/仓库名.git。如果你没有远程仓库,先在 GitHub 创建。

方法 2:

Cursor 中,在 Git 的页面直接选择 initialize Repository

──────────────

💾 3. GIT提交版本,查看版本变动

3.1 添加和提交变更(管理版本):

编辑代码后,在 Cursor 左侧侧边栏点击源控制图标(看起来像一个分支符号)。

在 Source control 源控制面板中,你会看到变更的文件列表。点击文件旁的 + 图标来暂存(Stage)变更,或点击顶部的 + 来暂存所有。

在提交消息输入框中写描述(如“添加登录功能”)。Cursor 的 AI 功能可以帮助生成消息:点击输入框旁的闪光图标(✨),AI 会基于变更和历史自动生成提交消息(支持 Conventional Commits 风格)。

点击“Commit”按钮或运行 git commit -m "消息" 提交。这创建一个新版本。

重复此过程,每次小变更都提交一次,保持原子性。

第一次 commit 的时候出跳出,选择 Always

3.2 查看不同的版本

推荐:在 source contral graph 中,可以查看保存的不同的版本,并且有每个文件的变化

通过命令查看: 在终端运行 git log(显示所有提交历史,包括 ID、作者、消息)。用 git log --oneline 简化显示,或 git show 查看特定版本的详细变更。

查看文件特定版本: 右键文件 > Open Timeline,或运行 git blame <文件名> 查看每行代码的提交来源。

比较版本: 在源控制面板,选择两个提交,右键 > Compare Changes 查看差异

──────────────

⏪ 4. 回滚/恢复

4.1 撤销未提交 (commit) 的更改

• Cursor 中的修改有 restore,单次修改的可以恢复

• 在 source control 页面,对于从上次 commit 之后的修改,点击文件名旁边的 discard changes 直接回滚到上次 commit 的状态

通过 Cursor 界面操作:

• 打开左侧源代码管理面板(Ctrl+Shift+G)

• 在 "Changes" 区域找到修改的文件

• 右键点击文件 → 选择 "Discard Changes"(丢弃更改)

• 或点击文件旁边的撤销图标 "↶"

通过命令面板:

• 按 Ctrl+Shift+P 打开命令面板

• 输入 Git: Discard All Changes - 撤销所有更改

• 输入 Git: Discard Changes - 撤销选中文件的更改

通过终端命令:

git restore (撤销单个文件的更改)

git restore . (撤销所有文件的更改)

git restore /* (撤销特定目录下的更改)

4.2 提交历史的回滚与恢复

暂存区是一个缓冲区,让你在提交前能够精心挑选和准备本次要记录的改动。Staged Changes (暂存的更改)

Cursor 提交 commit 的时候,会自动把你“Changes”列表里的所有文件,全部 add 到暂存区,然后立刻执行 commit。

commit-id 可以在 source contral graph 中右击版本,获得。

(1) 硬回滚(完全删除更改)

⚠️ 警告:硬回滚会永久删除更改,请谨慎使用

git reset --hard 会让你的项目文件夹(包括所有 .py 文件)完全恢复到你指定的那个旧版本的状态,并且会删除那之后的所有版本记录。

通过 Git Graph:

• 右键目标提交 → "Reset current branch to this commit" → 选择 "Hard"

通过终端:

git reset --hard

git reset --hard 9fd5c20c1e9d9caa6eebce4edc2bb897e441d181 (硬回滚到指定提交)

git reset --hard HEAD~1 (硬回滚到上一个提交)

(2) 使用 Revert(推荐用于已推送的提交)

revert 不会删除历史,而是会创建一个新的提交,这个新提交的内容刚好是用来抵消掉某个旧提交的改动。

git revert (创建一个反向提交来撤销更改)

git revert HEAD (撤销最近的提交)

git revert .. (撤销一系列提交)

(3) 软回滚(保留更改在工作目录)

commit 恢复到上一个或者指定的一个,但是修改的内容不变动。

它的核心作用是:仅仅将版本库的指针(HEAD)移动到你指定的旧版本,但完全不改变你已经写好的代码(工作目录)和已经添加到暂存区的内容。简单来说,就是撤销了 commit。

用于 commit 太多,合并多个凌乱的 commit。

使用 Git Graph 扩展:

安装 "Git Graph" 扩展

在源代码管理面板点击 "Git Graph" 按钮

右键点击目标提交 → 选择 "Reset current branch to this commit"

选择 "Soft" 模式

通过终端:

git reset --soft

git reset --soft HEAD~1 (软回滚到上一个提交)

(4) 混合回滚(保留更改但取消暂存)

git reset (混合回滚,默认模式)

git reset HEAD~1 (回滚到上一个提交)

4.3 分支级别的回滚与恢复

删除本地分支后的恢复

git reflog (查看被删除分支的引用)

git branch (恢复被删除的分支)

强制推送后的恢复

git reflog show origin/ (查看远程引用日志)

git reset --hard (恢复到之前的状态)

git push --force-with-lease

──────────────

🌿 5. 分支 (Branch)

它们在 Git 中是极其轻量和廉价的操作,请大胆地为每一个新任务、新想法、新 Bug 修复创建分支,这是通往高效、安全开发的必由之路。

默认情况下,Git 仓库初始化时会有一个主分支,通常名为 main。

分支的作用与优势:

• 并行开发: 不同功能/修复相互独立,互不干扰。

• 实验隔离: 尝试新方案,不影响稳定代码。

• 代码审查与发布: 通过 PR/MR 合并到主干,触发 CI/CD。

• 回滚与追踪: 每个分支的提交历史清晰,便于定位和回滚。

从技术上讲,分支并不是一个项目文件夹的完整拷贝,那样太浪费空间了。一个分支,本质上只是一个轻量级的、可移动的指针,它指向某一次特定的“提交 (Commit)”。

• main 分支是一个指针,它通常指向项目最新的、最稳定的那个提交。

• 当你创建一个新分支时,你只是创建了一个新的指针,它和你当前所在的提交指针指向同一个地方。

查看分支Cursor 右下角的分支

git branch (查看所有本地分支,当前所在分支会用 * 标记)

git branch -a (查看所有分支,包括远程仓库的分支)

创建分支Cursor 右下角的分支

2.1 从当前的点创建分支

git branch feature-payment (创建一个名为 feature-payment 的新分支,但人还在当前分支)

git checkout -b feature-payment (✨ 强烈推荐:创建并立即切换到新分支,一步到位)

2.2 从指定的点创建第二个分支?

用于创建几个不同的分支方向,假设你当前在另一个分支,但想从 main 的最新状态开始一个新工作:

git checkout -b test2 main

使用 Commit ID (哈希值):最精确的方式。

git checkout -b test3 87be5a4304950ba71c375fdb785e44d3ac2dc7c7

切换分支Cursor 右下角的分支git switch test2 (这是更新的、更推荐的命令,因为它的语义更清晰,只用于切换)

在分支上工作切换到分支后,你的所有 git add 和 git commit 操作都只作用于当前分支。

(在 feature-payment 分支上)

...编写代码...

git add .

git commit -m "feat: add payment processing logic"

合并分支当你完成了分支上的开发,就需要将成果合并回主线。

1. 首先,切换回你的目标分支(通常是 main)

git switch main

2. 拉取一下远程最新代码,确保你的 main 分支是最新状态(好习惯)

git pull

3. 执行合并命令,将 feature-payment 分支的改动合并进来

git merge feature-payment

方法 2:

• 切换到目标分支。

• source control > “...” > “Branch” > “Merge” 选择源分支。

关于合并冲突 (Merge Conflict):如果 Git 在合并时发现,你在 main 分支和 feature-payment 分支上,对同一个文件的同一行代码做了不同的修改,它就不知道该听谁的了,这时就会发生“冲突”。你需要手动打开那个文件,解决冲突(决定保留哪些代码),然后再 add 和 commit 来完成合并。

删除分支分支合并后,通常就可以删掉了,以保持仓库整洁。

git branch -d feature-payment (删除一个已经合并过的本地分支,-d 是 --delete 的缩写,比较安全)

git branch -D failed-experiment-branch (如果分支还没合并,但你确定要强行删除,比如一个失败的实验,使用 -D)

与远程仓库协作

git push -u origin feature-payment (将你的新分支推送到远程仓库,如 GitHub,让其他人也能看到)

git push origin --delete feature-payment (删除远程仓库上的分支,通常在合并到 main 并推送到远程后进行)

──────────────

☁️ 6. GitHub 远程

6.1 首次操作仓库

首次设置:将本地的项目与一个 GitHub 仓库关联起来。

在 GitHub 网站上创建新仓库:• 打开 GitHub 官网,登录你的账号。• 点击右上角的 + 号,选择 New repository。• 给仓库取一个名字(通常和你的项目文件夹名一样)。• 不要勾选 "Add a README file"、"Add .gitignore" 或 "Choose a license",因为我们本地已经有了。• 点击 "Create repository"。

本地关联:创建仓库后,GitHub 会显示一个页面,上面有几行命令。找到标题为 "...or push an existing repository from the command line" 的部分,复制那里的命令。通常是这样的:

echo "# test2" >> http://README.md

git init

git commit -m "first commit"

git branch -M main

git remote add origin https://github.com/ishicm/test2.git

git push -u origin main

方法二:

在 souce contral 里面有 push,第一次 push 的时候会让你关联相关的内容,只要填入仓库的链接,例如 https://github.com/ishicm/test2.git

从已有的 GitHub 仓库 -> 本地这个流程更简单。

(1) 在 GitHub 上复制仓库地址:

• 打开你想同步的 GitHub 仓库页面。

• 点击绿色的 <> Code 按钮。

• 复制 HTTPS 或 SSH 地址。

(2) 在 Cursor 中克隆仓库:

方式一(通过欢迎页面):打开一个新的 Cursor 窗口,在欢迎页面上,直接选择 clone,然后粘贴你复制的地址。

方式二(通过命令面板):Cursor 会自动将整个项目下载到你的电脑上。现在,本地和远程就已经关联好了。

6.2 第二次以上操作仓库

Push:

commit

push。方法一:在 cursor 的 source control 中,有多处可以同步,包括 commit 之后出现的 sync changes,左下角的方法二:在终端中输入 git push。

Pull:

在 cursor 的 source control 左下角,直接有个更新的按钮。

然后分为两个情况:

情况 1:本地仓位没有改动过,那么就会直接下载最新的版本

情况 2:本地有代码的改动,那么有可能会冲突,(ps:遇到的时候再查资料)


免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

分享至:
APP下载

X

Telegram

Facebook

Reddit

复制链接