Vibe Coding 必学技能之 Git

日月小楚
日月小楚|2025年12月12日 13:17
即便 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 <commit-ID> 查看特定版本的详细变更。 查看文件特定版本: 右键文件 > 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 <filename> (撤销单个文件的更改) git restore . (撤销所有文件的更改) git restore <directory>/* (撤销特定目录下的更改) 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 <commit-id> git reset --hard 9fd5c20c1e9d9caa6eebce4edc2bb897e441d181 (硬回滚到指定提交) git reset --hard HEAD~1 (硬回滚到上一个提交) (2) 使用 Revert(推荐用于已推送的提交) revert 不会删除历史,而是会创建一个新的提交,这个新提交的内容刚好是用来抵消掉某个旧提交的改动。 git revert <commit-hash> (创建一个反向提交来撤销更改) git revert HEAD (撤销最近的提交) git revert <start-commit>..<end-commit> (撤销一系列提交) (3) 软回滚(保留更改在工作目录) commit 恢复到上一个或者指定的一个,但是修改的内容不变动。 它的核心作用是:仅仅将版本库的指针(HEAD)移动到你指定的旧版本,但完全不改变你已经写好的代码(工作目录)和已经添加到暂存区的内容。简单来说,就是撤销了 commit。 用于 commit 太多,合并多个凌乱的 commit。 使用 Git Graph 扩展: 安装 "Git Graph" 扩展 在源代码管理面板点击 "Git Graph" 按钮 右键点击目标提交 → 选择 "Reset current branch to this commit" 选择 "Soft" 模式 通过终端: git reset --soft <commit-id> git reset --soft HEAD~1 (软回滚到上一个提交) (4) 混合回滚(保留更改但取消暂存) git reset <commit-hash> (混合回滚,默认模式) git reset HEAD~1 (回滚到上一个提交) 4.3 分支级别的回滚与恢复 删除本地分支后的恢复 git reflog (查看被删除分支的引用) git branch <branch-name> <commit-hash> (恢复被删除的分支) 强制推送后的恢复 git reflog show origin/<branch-name> (查看远程引用日志) git reset --hard <previous-commit> (恢复到之前的状态) 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:遇到的时候再查资料)
分享至:

热门快讯

APP下载

X

Telegram

Facebook

Reddit

复制链接

热门阅读