CodeGym /课程 /Frontend SELF ZH /在IntelliJ IDEA中与git分支一起工作

在IntelliJ IDEA中与git分支一起工作

Frontend SELF ZH
第 20 级 , 课程 3
可用

11.1 在Git中的分支

使用Git进行分支(branches)操作 是版本管理中很关键的一部分,它允许在一个repository中同时进行多条开发线。分支功能让Git成为了一个很强大的工具,无论是协作、实验还是管理项目的不同版本。

在Git中的分支

可以把Git里的分支想成文件夹,git会把你的项目复刻到这些文件夹里。你的项目有一个主文件夹 在你的 本地repository——master,git可以创建这个文件夹的复制,这样你就可以在这些复制上进行实验而不弄坏原来的、正常运行的代码。这些复制的文件夹被称为分支 —— branches

分支是代码的替代版本。假设你想在一个大项目中改变一些东西,进行一个你不太确定的实验。要是没有git,你会怎么做?

你可能会把项目复制到一个新文件夹中并在那儿尝试改变。如果结果你满意,那你就把它复制回主文件夹。如果不满意——就忘掉它,甚至删掉。

或者让我们举个生活中的例子。比如写书:

  1. 你有一本书的手稿(主分支)。
  2. 你想尝试改变结局(创建新分支)。
  3. 你在一个单独的文档中写新结局(在新分支上工作)。
  4. 如果新结局更好,你在手稿中替换旧的(合并分支)。
  5. 删除带新结局的单独文档(删除分支)。

11.2 创建分支

在IntelliJ IDEA中创建分支非常简单:

创建分支

输入分支的名字:

创建分支

IntelliJ IDEA会在菜单的顶部显示你当前分支的名字:

创建分支

之前那边显示的是什么?

那时显示的是你的第一个也是最主要的分支的名字——master

现在那边显示的是test,也就是说Git(在IntelliJ IDEA的帮助下)不仅创建了一个新分支,还马上切换到了它。

让我们在当前分支(test)的main.html文件里添加点代码并提交它:

创建分支

11.3 在分支之间切换

步骤1. 选择一个分支。

现在让我们切换回到我们的旧分支。点击顶部菜单,我们会看见什么?

在分支之间切换

别害怕——这很简单:

Local——是你的本地git-repository的分支列表。这里有两个:

  • test
  • master

Remote——是你的远程repository,位于GitHub的服务器上。我们推送了你的改动,但那里没有新分支,这是合情合理的。远程repository名为origin,且只有一个分支master

Recent——仅仅是你最近工作的分支名称列表:这是IntelliJ IDEA为了方便和速度而添加的。

本地repository名称右边的origin/master——是远程repository的名字,与它保持同步,提交的改动会推送到那里。

步骤2. 在当前文件夹中载入分支代码。

在分支之间切换

步骤3. 检查。

我的分支显示的是“master”并且是旧代码:

检查

11.4 合并分支

现在让我们尝试把两个分支的代码合并。

步骤1. 首先让我们在项目中添加一个新文件——index.html并在其中写点代码:

  • 创建文件index.html
  • 在其中写代码 <h1>Hello</h1>
  • 提交文件

这是我的master分支中的两个文件的样子:

合并分支

步骤2. 合并分支。

我们将在当前分支(master)中合并在test分支中做的修改。

为此,我们也在使用顶部菜单和“Merge ‘test’ into ‘master’”命令:

合并分支

步骤3. 检查结果。

合并分支

检查:

  • 顶部仍然显示分支master
  • 我们的文件有两个:index.html和main.html
  • 文件main.html包含在test分支中添加的代码

11.5 合并时的冲突

有时合并分支会出现冲突。

如果你在不同的分支中对同一文件做了修改,并尝试合并它们,那么可能会出现冲突。

文本文件的冲突

Git是一个非常智能的系统——它能识别文件类型。如果你在它认为是文本的文件的不同地方做修改,它会将一个文件的修改转移到另一个文件的相应位置(就像人类会做的那样)。

二进制文件的冲突

但如果你在某处修改了图片或文档,Git不会试图将它们的不同部分合并成一个:它会让你选择在当前分支中保留哪个版本的文件。

手动解决冲突

如果你对文本文件的同一位置做了修改,那么Git无法正确合并不同的版本,会让你自己处理:

合并时的冲突

这可能看起来像这样:

合并时的冲突

你在这里看到了什么:

  • 左边是master分支的main.html文件的内容
  • 右边是test分支的main.html文件的内容
  • 中间是IntelliJ IDEA让你写下的代码的最终版本(可以点击按钮“>>”和“<<”,自动从某个文件插入修改)

我选择了mater的版本并手动写了代码。这是我最终的结果:

合并时的冲突

11.6 修改历史

还有个有用且有趣的东西。你可以查看任何文件的修改历史,点击Show History按钮。 它可能位于两个位置。找到它。

这是我main.html文件的修改历史

修改历史

说明:

  • 左边你看到的是单个文件的修改历史:
    • 越新的修改越高,越旧的越低
    • 这里也显示分支合并的历史
  • 右边是某个提交中做出的修改
1
Опрос
装饰性元素,  20 уровень,  3 лекция
недоступен
装饰性元素
装饰性元素
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION