从新手的角度理解 Git

126 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 2 天,点击查看活动详情

在日常工作中,我经常会想要把某个状态的工作保存一下,这样我可以随时回到某个地方重新开始工作。和打游戏很像,在关键的地方就存档一下。

现在我写了一些东西,我感觉是时候存档一下了。在 git 里,存档被称为提交(commit)。一次提交就是你当时工作成果的快照。

archive-checkpoint.png

为了方便,我给这个存档起了一个名字叫 main,然后加了描述 我的一个灵感,这样我就可以快速的找到这个存档,然后继续创作。当我提交了多次,存档变成了这样。

branch.png

这个时候我突然有个新的灵感,但是需要基于我的第二次提交创作,于是我新建了一个存档取名叫 another-idea,然后又提交了几次,现在我的提交历史看起来就像一棵树,不同的存档名就是树枝,在 git 里,我们称 mainanother-idea 为分支,是不是很形象。

tree.png

当我完成 another-idea 后,我发现其实可以把 another-idea 合到一起,两边的工作都可以保留,在确定好两边的工作如何融合之后,再做一次提交就可以了。在 git 里,我们把分支的合并称为 merge。

merge.png

这个时候我又有另外一个灵感,但是我不确定合不合适,可以试一试,于是我基于 main 分支新建了一个分支 yet-another-idea 开始创作并做了几次提交。

reset.png

我发现第 8 次提交并没有必要,决定丢弃它,回到第 7 次提交。在 git 里,我们把提交删除称为 reset。然后我就可以把我的创作合并到 main 分支了。

reset-2.png

这次合并并没有新做一次提交,因为 main 分支在第 5 次提交之后并没有任何改变,合并之后的最新工作状态就是第 7 次提交的样子。

我是个灵感很多的人,我又有个新的灵感可以尝试一下,于是我又新建了一个分支 idea-3 创作。

branch-delete.png

如果从分支列表的角度来看的话是下面这样的。

branch-list.png

但是我发现 idea-3 并不好,决定把这个分支删掉,同时也把其他分支删掉,只保留 main 分支。于是就变成了这样。

branch-delete-2.png

another-idea 和 yet-anthor-idea 并没有删除任何提交,因为他们的内容都被合并到了 main 分支,只是删除了分支名而已。但是 idea-3 删除了 8,9 两次提交,因为它们并没有被合并到 main 分支中,所以在删除分支的时候需要确认一下真的要删除吗?如果有没有合并的提交,删除以后就找不回了。

拥有了 git,我就好像拥有了一台时间机器,我可以随时回到任何时间点去修改完善我的工作,git 真的是一个非常棒的工具。