Git 学堂 · FluxGit

动手练习,学会 Git

在交互式仓库中解决常见 Git 问题。试用命令,观察提交图的变化,再通过指南和视频继续学习。

在浏览器中试一试

选择一节课程,或自由探索。运行建议的 Git 命令,观察仓库如何变化。

练习使用浏览器内存中的模拟仓库,不会访问你的文件,也不会连接真实的远程仓库。

自由探索一个没有固定目标的小仓库。尝试支持的命令,观察队友推送提交后发生的变化。

本模拟器支持部分 Git 命令。输入不支持的命令时,终端会说明限制。

G9

提交到了错误的分支

你在 main 上创建了一个本应属于 feature/discounts 的提交,还没有推送。

将“Apply discounts”移到 feature/discounts,并从 main 上移除。

G4

修改最后一次提交:消息和遗漏的文件

你上次的提交消息是“Add stylsheet”,还遗漏了 style.css。你尚未推送。

用包含 style.css、消息为“Add stylesheet”的提交替换最后一次提交,然后推送。

G5

推送前后如何撤销提交

有些提交不应保留。其中一个只在你的电脑上,较早的另一个已经推送。

先撤销本地提交,再撤销已推送的提交,不改写共享历史。

G8a

撤销 git reset --hard

你运行了 git reset --hard HEAD~2,两个提交消失了。

找到丢失的提交,并将 main 恢复到原来的位置。

G6

解决合并冲突

main 和 feature/title 修改了 index.html 的同一行。

将 feature/title 合并到 main,并保留你选择的标题。

G10

分离 HEAD:保留你的工作

你检出了一个旧提交,在那里创建了新提交,Git 提示“HEAD detached”。

为提交创建一个分支,保留指向它的引用。

G11

你的分支与 origin 已分叉

你创建提交时,队友也推送了提交。现在 git status 提示你的分支与 origin/main 已分叉。

获取队友的提交,将自己的提交重新应用到它之后,再推送。

G12

带着未完成的工作切换分支

你正在 main 上修改内容,却需要立即去 hotfix 修复问题。

暂存手头的工作,在 hotfix 上修复后回来,再恢复原来的工作。

G8b

恢复已删除的 Git 分支

你用 git branch -D 删除了 feature/search,其中有一个其他人都没有的提交。

恢复 feature/search 及其提交。

Git 学堂 · G6

在浏览器中试一试

main 和 feature/title 修改了 index.html 的同一行。

目标: 将 feature/title 合并到 main,并保留你选择的标题。

练习使用浏览器内存中的模拟仓库,不会访问你的文件,也不会连接真实的远程仓库。

练习命令

本模拟器支持部分 Git 命令。输入不支持的命令时,终端会说明限制。

git merge feature/title
cat index.html
echo "<h1>Our Best Shop</h1>" > index.html
git add index.html
git commit --no-edit

使用 FluxGit

  • 合并前,Operation Plan 会预测真实分支之间的冲突。
  • 三方编辑器显示双方内容及结果。你可以标记为已解决,改变主意时也可以撤销合并。
下载 FluxGit Git 学堂
Git 如何只提交文件中的部分修改

Git 如何只提交文件中的部分修改

同一个文件里既有错误修复,又有调试输出?只暂存修复即可。了解 Git 暂存区、FluxGit 的 Stage change,以及 git add -p。

阅读指南观看教程
Git worktree 与 submodule:选哪个,何时用

Git worktree 与 submodule:选哪个,何时用

worktree 还是子模块?它们解决不同的问题。worktree 是同一仓库的第二个工作目录。子模块是另一个仓库,固定到某个提交后嵌入你的仓库。

阅读指南观看教程

使用 FluxGit

在交互式仓库中解决常见 Git 问题。试用命令,观察提交图的变化,再通过指南和视频继续学习。

下载 FluxGit