跳转至

03 Git日常操作

文件的添加、修改和删除

当你踏上编码之旅,与代码的交互是不可避免的。在 Git 的世界中,你将如何优雅地处理文件的添加、修改和删除呢?这不仅仅是保持你的代码库整洁的问题,更是关乎到如何高效地记录你的代码演变历程。

添加文件:迎接新成员

git add <file>
每当你创造出一个新文件时,你需要告诉 Git,“嘿,这里有个新伙伴。” 使用 git add 命令就像是在给你的新文件办理入仓库手续。一旦添加,它就会出现在你的下一次提交中,成为仓库历史的一部分。

修改文件:雕琢宝石

## 修改文件后
git add <file>
git commit -m "描述你的修改"
就像雕琢宝石一样,我们总想让代码更完美。当你改进文件时,重复 add 和 commit 的流程就像是在记录每一次刻划。这确保了你的每次修改都被记下,以便未来查看或者如果需要的话,回退到某个特定版本。

删除文件:告别旧朋友

git rm <file>
git commit -m "描述为何删除文件"
随着项目的进展,有些文件不再需要,就像告别一个旧朋友。使用 git rm 可以将文件从工作目录和暂存区中移除。完成这个命令后,文件在下一次提交时就会从你的仓库中消失。记得留下一条消息解释为什么这个文件不再是必需的,这就像是给它写一封告别信。

小结

添加、修改和删除文件是你在 Git 仓库中日常会进行的操作。掌握这些基本的文件操作是你成为 Git 巫师必经的路径。记得,每一个 commit 都是你项目故事中的一个节点,确保它们清晰和有意义,这将帮助未来的你,或者是与你协作的其他巫师了解每一步的魔法是如何施展的。

查看更改(diff)

在编写代码的过程中,我们经常需要回顾所做的更改,以确保每一次提交都像艺术品一样精致。在 Git 的世界里,有一个强大的术语叫做 diff,它是一种巧妙的术士工具,让你能够窥视代码的过去和现在之间的差异。

使用 Git Diff 检视魔法变化

git diff
当你施展了一系列编码咒语后,git diff 将揭示出自上次提交以来,你的代码发生了哪些变化。它展示了行与行之间的对比,标出了被移除的旧咒语(红色)和新增的新魔法(绿色)。

详细对比工作目录和暂存区

git diff --staged
如果你已经将一些文件添加到暂存区,准备好提交它们,但在最后一刻想再次确认,git diff --staged 将会显示工作目录与暂存区之间的差异。这是一次深入审视,确保你的暂存区只包含了你想要的魔法。

对比历史提交

git diff <commit1> <commit2>
有时,你可能会好奇在两次历史提交之间你的代码发生了哪些变化。这个命令将打开一扇时间之窗,让你可以审视两个不同时间点的代码之间的不同。

小结

git diff 是 Git 里一项重要的巫术,它让你能够在提交之前进行最终检查,确认你的改动正是你所希望的。它像是一面镜子,清晰地反映出你的代码随时间变化的轨迹。每当你准备提交一段重要的代码时,不妨先使用 git diff,给你的代码变动一个最后的审视。这样做不仅能帮助你避免一些小错误,还能提高你作为一名代码巫师的精准度和自信心。

版本回退(checkout, reset)

在编码的道路上,我们有时会走进歧途,或者决定放弃一些魔法实验。在 Git 的领域里,这并不是问题,因为你拥有时光倒流的能力。我们来探索 checkoutreset,这两个强大的咒语,它们能让你穿梭于不同版本之间,就像拥有一部时光机一样。

Git Checkout: 时光穿梭

git checkout <commit-hash>
想要回到过去,检查或恢复到某个特定的魔法状态(提交)吗?git checkout 就是你的时光旅行咒语。只需一个提交的哈希值,你就可以把文件恢复到那个时刻的状态。这就像是读取一本旧日记,让你回忆起当时的魔法编排。

但记住,这种旅行是临时的。如果你想在那个时间点开始一个新的魔法故事,你需要创建一个新的分支。

git checkout -b <new-branch> <commit-hash>

Git Reset: 改写过去

git reset --hard <commit-hash>
如果你决定某个魔法实验是个错误,想要彻底撤销它,git reset 是更为极端的咒语。使用 --hard 选项,你可以将当前分支的状态回退到你所指定的历史提交,并且清除所有后续的变化,就像它们从未发生过。

但请小心,这个咒语的力量很大,会造成无法恢复的后果。它会将工作目录和暂存区的变化全部抹去,所以在施展之前,一定要确保你不会失去重要的魔法成果。

小结

checkout 和 reset 都是版本控制中的强力工具。它们使得回退到过去的版本变得可能,但每个咒语都有其特定的使用场景和潜在的风险。在使用这些咒语时,记得要像对待任何强大的魔法一样谨慎,只有这样,你才能确保你的代码历史书写得既精彩又正确。

分支管理(branch, checkout, merge, rebase)

在编程的魔法世界中,分支管理是巫师们保持秩序、探索新领域并最终统一魔法成果的重要法术。想象一下,你可以在安全的实验室中试验各种强大的咒语,而不会影响到外面世界的和平。接下来,让我们探索一些关于分支管理的基础咒语:branch, checkout, mergerebase

Git Branch: 魔法分支的创建与管理

git branch <new-branch-name>
创建一个新的分支就像是在你的魔法森林中开辟了一条新的小径。这个路径允许你安全地进行实验,而不会影响到主路径(通常是 master 或 main 分支)。使用 git branch 不仅可以创建新的小径,还可以查看所有分支的清单,让你了解森林中所有的路径。

Git Checkout: 在分支间跳跃

git checkout <branch-name>
巫师们需要能够自由地在不同的分支间跳跃。git checkout 咒语可以让你做到这一点。它就像是一双神奇的靴子,让你能够立即从一个分支跳到另一个分支,继续你的魔法工作。

Git Merge: 融合分支的魔力

git merge <branch-name>
当你在一个分支上的实验成功了,你就需要将这些新的魔法成果带回主路径。git merge 咒语允许你将一个分支的改动合并到另一个分支上,就像是将两条小径合并成一条大道,让所有人都能享受到你的魔法。

Git Rebase: 重新编织你的魔法历史

git rebase <base-branch>
有时,你的魔法实验小径可能会落后于主路径。git rebase 是一种更高级的法术,它允许你重新编织你分支上的改动,使其看起来就像是直接在最新的主路径上进行的。这个过程可以让历史更加整洁,但也更加复杂,需要谨慎使用。

小结

分支管理是一门艺术,也是一门科学。通过精通 branch, checkout, merge, 和 rebase 这些咒语,你可以在编码过程中保持灵活性和组织性。记得,每个分支都是你魔法创造力的体现,管理它们的过程就像是在编织一张庞大的魔法网络。使用这些咒语来指导你的代码历史,让它成为一部精彩的魔法史诗。