11-3 Git 基本操作
在 IDEA 中创建提交
既然说了那么多有关 Git 的东西,现在就让我们来试试吧!
Git 中的一切时间魔法都是与提交相关的,所以我们先来创建一个提交,提交的内容就是 IDEA 为我们提供的初始代码。你可以创建一个新项目来测试,或者就使用已有的项目,这都是 OK 的。
在 11-1 中,我们已经通过 Commit 面板设置了 Git,现在展开 Unversioned Files(或者 Changes,如果有的话),你将看到一组文件:

每个文件左侧都有一个复选框,这是用来选择要提交的内容的。大多数情况下,每次提交我们都会提交所有的修改,但 Git 也允许我们根据需要,只提交部分文件的修改。
现在勾选所有文件(其实只要勾选 Unversioned Files 或者 Changes 左侧的复选框就可以了),并在下方的 Commit Message 文本框里填入此次提交的说明,例如:
Initial commit
这里的内容用来说明本次提交的作用,和注释一样,是给人(而不是 Git)阅读的,因此你也完全可以填入其它的内容。
填写好之后,按下下方的 Commit 按钮,IDEA 将弹出一个窗口,要求你填写用户信息:

像图中那样填写 Name 和 E-mail(当然,要换成你自己的信息),随后点按 Set and Commit 按钮,提交就完成了!
Git 安装时没有任何用户信息,因此 IDEA 发现了这一点,并提醒你进行补全。这项配置在每台电脑上只需要进行一次。
Git 使用邮箱来标识『这个提交是谁创建的』,因此我们不需要注册什么帐户,只要确保使用正确的邮箱就行。非常注重数据隐私的读者也大可放心,因为 Git 只在你的电脑上运行,除非明确要求,否则它不会与任何网站交换数据。
抛弃修改
现在我们已经创建了一个提交,这下信心大增,因为哪怕是情况再坏,我们也可以回退到这个提交,再重新来过。
现在试试做些修改吧!回到项目文件中(左边栏最上方的面板按钮,或者使用快捷键 Alt + 1)找到第一次提交中创建的文件,例如 build.gradle.kts 或者 Main.kt 之类,然后向其中随便添加或者删除一点内容:

IDEA 会在文件左侧的行号那里使用一条线标出你所做的修改,绿色代表增加,橙色代表改动,红色代表删除。
要撤销某一部分的修改,只需要点击对应的线,并在弹出的窗口中单击 Rollback 图标按钮:

点击之后,Git 就会把这部分修改丢弃,并将文件原先的内容拿回来。
如果在文件中做了很多修改,不想一个个撤销,那也可以在项目文件面板中右键文件,选择 Git,并点按 Rollback 按钮,在弹出的窗口中确认后,就可以抛弃整个文件的修改,将文件恢复到最近一次提交时的状态。
能够将文件状态回退到最近的提交真是太好了,就像你在下界错综复杂的石块中漫无目的地找寻出去的路,突然发现了前人留下的传送门一样。不管项目的文件已经乱成什么样子,或者我们把代码改得多面目全非,我们至少都能回到最近一次『存档』,真令人安心。
由于我们现在只有一个提交,因此还没办法完整体验到 Git 的功能,所以让我们再创建一个提交:向 Main.kt 或者别的什么文件中增加一些内容(可以是注释或者其它你喜欢的代码),并使用与上面同样的流程提交代码,这样我们的项目就有两个提交了。
回退提交
通过抛弃或提交修改,我们可以『搭上』Git 的时间线,只要搭上时间线,我们就可以在 Git 的所有提交上自由旅行了。
按下 Alt + 9,或者按两下 Shift 并搜索 git,打开带有图标的 Git 日志面板,这个面板会显示当前项目中 Git 的状态,包括各个分支的提交历史:

现在我们来试试回退吧!选择一个历史提交,右键它并点按 Reset Current Branch to Here...,在弹出的窗口中选择 Hard,并单击 Reset 按钮确认。IDEA(和 Git)随即会将项目回退到指定的提交,文件的内容也应当发生变化。
Git 有几种不同的回退模式,它们都能倒退时间线,但做法有些不同:
Soft和Mixed:删除指定提交之后的提交,但仍然保留文件当前的内容,文件就好像是『从那次提交的状态修改成现在这样』一般,也就是说,不同之处会被视作未提交的修改,可以抛弃、重用或重新提交。Hard和Keep:删除指定提交之后的提交,并将文件的内容也恢复到指定提交时的状态。
由于 Hard 和 Keep 会修改文件,并且逻辑上不可撤销,因此在 Git 中也常被认为是一项危险的操作。如果你不能 100% 确定『放弃一切并回到过去』,那么可以选择 Soft 或者 Mixed 模式,它们同样会改变提交的历史,但会将自那时起的修改保留,以便稍后使用。
这样我们就能倒退时间了!如果项目开发到一半碰到了什么困难也没关系,大不了我们可以从过去再来一次,这总比陷入泥潭迷茫无措要好。
恭喜!在刚才的步骤中你已经掌握了 Git 最基本但也是常用的操作:提交和回退,对于大多数单人开发的项目而言,这已经足够了。不过,如果你是团队中的一员,或者计划要与你的好朋友共同完成一个项目,那么了解如何为项目设置一个远程仓库并进行同步是非常必要的 —— 我们将在下一节中介绍,不过如果你暂时没有这种打算,也可以直接跳到下一章。