CodeGym /Java 博客 /随机的 /天作之合:Git 和 IntelliJ IDEA
John Squirrels
第 41 级
San Francisco

天作之合:Git 和 IntelliJ IDEA

已在 随机的 群组中发布
秉承既定传统,我以未来的高级软件工程师的身份向你们致意。 今天的文章是我关于 Git 的文章天作之合:Git 和 IntelliJ IDEA - 1的逻辑延伸。在关于 Git 的文章中,我描述了如何在命令行上使用 Git。今天我将向您展示如何在 IntelliJ IDEA 中完成这一切。在我作为开发人员的旅程之初,我使用命令行并认为我不需要为此使用 GUI。毕竟,一切都一目了然……但直到我开始在 IntelliJ IDEA 中使用 Git 的那一刻……从一开始,我想说我是在描述我的个人经历。有多种方法可以解决 IntelliJ IDEA 中的任何给定问题。如果您知道比我将在本文中描述的更好的方法,请将其写在评论中,我们将进行讨论。

所需输入:

  1. 阅读、跟随并理解我关于 Git 的文章。这将有助于确保一切都已设置好并准备就绪。
  2. 安装 IntelliJ IDEA。
  3. 分配一个小时的个人时间来完全掌握。
让我们使用我在有关 Git 的文章中使用的 演示项目。更新:在发布时,新的 GitHub UI 将可用,一些图标将不会出现在文章中显示的位置。不要惊慌:您只需要要么不切换到新 UI,要么寻找它们。

在本地克隆项目

这里有两个选项:
  1. 如果你已经有一个 GitHub 帐户并想稍后推送一些东西,最好 fork 项目并克隆你自己的副本。
  2. 克隆我的存储库并在本地执行所有操作,但无法将整个操作推送到服务器。毕竟,这是我的存储库 :)
要从 GitHub 克隆项目,您需要复制项目链接并将其传递给 IntelliJ IDEA:
  1. 复制项目地址:

    天作之合:Git 和 IntelliJ IDEA - 2
  2. 打开 IntelliJ IDEA 并选择“从版本控制获取”:

    天作之合:Git 和 IntelliJ IDEA - 3
  3. 复制粘贴项目地址:

    天作之合:Git 和 IntelliJ IDEA - 4
  4. 系统将提示您创建一个 IntelliJ IDEA 项目。接受提议:

    天作之合:Git 和 IntelliJ IDEA - 5
  5. 由于没有构建系统并且超出了本文的范围,我们选择从现有源创建项目

    天作之合:Git 和 IntelliJ IDEA - 6
  6. 接下来您将看到这个漂亮的屏幕:天作之合:Git 和 IntelliJ IDEA - 7现在我们已经弄清楚了克隆,您可以四处看看。

作为 Git UI 的 IntelliJ IDEA 第一眼

仔细查看克隆的项目:您已经可以获得很多关于版本控制系统的信息。首先,我们在左下角有版本控制面板。在这里您可以找到所有本地更改并获得提交列表(类似于“git log”)。让我们继续讨论Log。有一定的可视化可以帮助我们准确地了解开发是如何进行的。例如,您可以看到创建了一个新分支,并在 txt commit 中添加了 header,然后将其合并到 master 分支中。如果单击一个提交,您可以在右上角看到有关该提交的所有信息:所有更改和元数据。天作之合:Git 和 IntelliJ IDEA - 8此外,您可以看到实际的变化。我们还看到那里解决了冲突。IDEA 也很好地展示了这一点。如果您双击在此提交期间更改的文件,我们将看到冲突是如何解决的:我们天作之合:Git 和 IntelliJ IDEA - 9注意到在左侧和右侧我们有同一文件的两个版本需要合并为一个。在中间,我们有最终的合并结果。当一个项目有很多分支、提交和用户时,你需要按分支、用户和日期分别搜索:天作之合:Git 和 IntelliJ IDEA - 10在我们开始之前我想解释的最后一件事是如何理解我们在哪个分支。我给你花点时间弄明白……你找到了吗?放弃?:D 在右下角,有一个标记为Git: master 的按钮. “Git:”后面的内容是当前分支。如果单击该按钮,您可以做很多有用的事情:切换到另一个分支、创建一个新分支、重命名现有分支等等。天作之合:Git 和 IntelliJ IDEA - 11

使用存储库

有用的热键

为了以后的工作,你需要记住几个非常有用的热键:
  1. CTRL+T — 从远程存储库 (git pull) 获取最新更改。
  2. CTRL+K — 创建提交/查看所有当前更改。这包括未跟踪和修改的文件(请参阅我关于 git 的文章,其中对此进行了解释)(git commit)。
  3. CTRL+SHIFT+K — 这是将更改推送到远程存储库的命令。所有在本地创建但尚未在远程存储库中创建的提交都将被推送 (git push)。
  4. ALT+CTRL+Z — 将特定文件中的更改回滚到在本地存储库中创建的最后一次提交的状态。如果在左上角选择整个项目,则可以回滚所有文件中的更改。
天作之合:Git 和 IntelliJ IDEA - 12

我们想要什么?

为了完成工作,我们需要掌握一个随处可见的基本场景。目标是在单独的分支中实现新功能,然后将其推送到远程存储库(然后您还需要创建到主分支的拉取请求,但这超出了本文的范围)。这样做需要什么?
  1. 获取主分支中的所有当前更改(例如,“master”)。

  2. 从这个主要分支,为您的工作创建一个单独的分支。

  3. 实施新功能。

  4. 去主分支检查我们工作时是否有任何新的变化。如果没有,那么一切都很好。但是,如果有变化,那么我们将执行以下操作:转到工作分支并将更改从主分支重新设置为我们的分支。如果一切顺利,那就太好了。但完全有可能会发生冲突。碰巧的是,它们可以提前解决,而不会在远程存储库中浪费时间。

    你想知道为什么你应该这样做吗?这是一种礼貌,并且可以防止在将您的分支推送到本地存储库后发生冲突(当然,仍然有可能发生冲突,但会变得更)。

  5. 将您的更改推送到远程存储库。
接下来会发生什么取决于您的任务和您的想象力。

从远程服务器获取更改?

我在 README 中添加了一个新提交的描述,并希望获得这些更改。如果在本地存储库和远程存储库中都进行了更改,那么我们将被邀请在合并和变基之间进行选择。我们选择合并。 输入 CTRL+T天作之合:Git 和 IntelliJ IDEA - 13您现在可以看到 README 是如何更改的,即从远程存储库中提取更改,并且在右下角您可以看到来自服务器的更改的所有详细信息。天作之合:Git 和 IntelliJ IDEA - 14

基于master新建分支

这里的一切都很简单。
  1. 转到右下角并单击Git: master。选择+ 新分支

    天作之合:Git 和 IntelliJ IDEA - 15
  2. 选中Checkout branch复选框并输入新分支的名称。对我来说,它将是readme-improver

    天作之合:Git 和 IntelliJ IDEA - 16

    Git: master然后将更改为Git: readme-improver

让我们模拟并行工作

为了出现冲突,必须有人创建它们 :D 我将通过浏览器使用新的提交来编辑 README,从而模拟并行工作。就好像有人在我处理同一个文件时对它进行了更改。结果会发生冲突。我将从第 10 行中删除单词“fully”。

实现我们的功能

我们的任务是更改 README 并为新文章添加描述。也就是说,Git 中的工作是通过 IntelliJ IDEA 进行的。添加:天作之合:Git 和 IntelliJ IDEA - 17更改已完成。现在我们可以创建一个提交。按CTRL+K,这会告诉我们:天作之合:Git 和 IntelliJ IDEA - 18在创建提交之前,我们需要仔细查看此窗口提供的内容。我添加了红色箭头来告诉你在哪里看。这里有很多有趣的东西。在Commit Message部分,我们编写与提交相关的文本。然后创建它,我们需要点击提交. 我仍然没有找到如何使用热键执行此操作。如果有人知道怎么做,请写信给我——那会让我很高兴。我们写 README 已经更改并创建提交。左下角会弹出一个警告,其中包含提交的名称:天作之合:Git 和 IntelliJ IDEA - 19

检查主分支是否发生变化

我们完成了任务。有用。我们编写了测试。一切安好。但是在推送到服务器之前,我们仍然需要检查主分支是否有变化。怎么会这样?很容易:有人在您之后收到任务,并且有人完成任务的速度比您完成任务的速度快。所以我们需要去master分支。为此,我们需要执行以下屏幕截图右下角所示的操作:天作之合:Git 和 IntelliJ IDEA - 20在 master 分支中,按CTRL+T从远程服务器获取其最新更改。查看发生了什么变化,您可以轻松地看到发生了什么:天作之合:Git 和 IntelliJ IDEA - 21“fully”这个词被删除了。也许营销人员认为它不应该这样写,并给开发人员一个任务来更新它。我们现在有一个最新版本的 master 分支的本地副本。返回readme-improver。现在我们需要将更改从 master 分支重新设置为我们的。我们这样做:天作之合:Git 和 IntelliJ IDEA - 22如果你做的一切都正确并跟着我,结果应该在 README 文件中显示冲突:天作之合:Git 和 IntelliJ IDEA - 23这里我们还有很多信息需要理解和吸收。此处显示的是存在冲突的文件列表(在我们的示例中为一个文件)。我们可以从三个选项中进行选择:
  1. 接受你的——只接受来自 readme-improver 的更改。
  2. 接受他们的——只接受主人的改变。
  3. 合并——自己选择要保留的和丢弃的。
目前尚不清楚发生了什么变化。如果 master 分支有变化,那肯定是那里需要的,所以我们不能简单地接受我们的变化。相应地,我们选择merge天作之合:Git 和 IntelliJ IDEA - 24这里可以看到分为三部分:
  1. 这些是自述文件改进程序的更改。
  2. 合并的结果。目前,它是更改之前存在的内容。
  3. 来自 master 分支的更改。
我们需要产生一个让每个人都满意的合并结果。查看我们更改之前更改的内容,我们意识到他们只是删除了“fully”这个词。好的没问题!这意味着我们还将在合并结果中删除它,然后添加我们的更改。更正合并结果后,我们可以单击Apply。然后会弹出一个通知,告诉我们 rebase 成功了:天作之合:Git 和 IntelliJ IDEA - 25好了!我们通过 IntelliJ IDEA 解决了第一个冲突 :D

将更改推送到远程服务器

下一步是将更改推送到远程服务器并创建拉取请求。为此,只需按CTRL+SHIFT+K即可。然后我们得到:天作之合:Git 和 IntelliJ IDEA - 26在左边,会有一个未被推送到远程仓库的提交列表。右侧将是所有已更改的文件。就是这样!按推送,你会体验到幸福:) 如果推送成功,你会在右下角看到这样的通知:天作之合:Git 和 IntelliJ IDEA - 27

奖金部分

起初,我不想在本文中添加拉取请求的创建,但没有它就不完整了。因此,让我们转到 GitHub 存储库(当然是你的 :)),我们看到 GitHub 已经知道我们想要什么:天作之合:Git 和 IntelliJ IDEA - 28单击Compare & pull request。然后单击创建拉取请求。因为我们提前解决了冲突,所以现在创建一个pull request,我们可以立即合并它:天作之合:Git 和 IntelliJ IDEA - 29这就是我这次想说的。当然,我只是给你开了一点门,给你看了一小部分。您将根据需要了解其余部分。我有邀请你在 GitHub 上关注我的习惯,我在其中发布涉及我在工作中使用的各种技术的项目。我最近取得了个人成就:我的一个项目获得了一百多位开发者的好评。当你知道你所做的正在被其他人使用时,会有一种难以置信的喜悦感。并永远使用它。

有用的链接

  1. CodeGym:Git 入门:新手综合指南
  2. GitHub:用于实践的演示项目
  3. JetBrains:设置 Git 存储库
  4. GitHub:我的账户
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION