CodeGym /课程 /Python SELF ZH /在 PyCharm 中处理 git 分支

在 PyCharm 中处理 git 分支

Python SELF ZH
第 12 级 , 课程 3
可用

11.1 Git 中的分支

在 Git 中处理分支 (branches) 是版本管理的一个 关键方面,允许在一个仓库中并行进行多条开发线。分支让 Git 成为一个强大的工具, 用于协作、实验以及管理项目的不同版本。

你可以把 Git 中的分支看作是文件夹,Git 将你的项目复制到这些文件夹中。你的项目有一个主文件夹 在你的 本地仓库 —— master。Git 可以创建这些文件夹的副本, 这样你可以进行实验,而不用担心破坏主分支的稳定代码。这些副本文件夹被称为 分支 —— branches

分支就是代码的替代版本。假设你想在一个大项目中做一些改动或进行一个 不确定的实验。如果没有 Git,你会怎么做?

你可能会将项目复制到一个新文件夹中并在那里尝试所有更改。如果结果满意,你可以将 它复制回主文件夹;如果不满意,就遗忘它,或者干脆删除掉。

让我们来看一个生活中的例子,比如写书:

  1. 你有一本书稿(主分支)。
  2. 你决定尝试修改结尾(创建新分支)。
  3. 你在一个单独的文件中写下新的结尾(在新分支中工作)。
  4. 如果新的结尾更好,你将它替换掉书稿中的旧结尾(分支合并)。
  5. 删除包含新结尾的文件(删除分支)。

11.2 创建分支

在 PyCharm 中创建分支非常简单。

输入分支的名称。

PyCharm 会立即在菜单顶部显示当前分支的名称:

之前是怎样的呢?

之前显示的是你的第一个也是主分支的名称 —— master

现在显示的是 test,这意味着 Git (由 PyCharm 指导) 不仅创建了一个新分支,还立即切换到它。

在当前分支 (test) 的文件 main.py 中添加一些代码, 然后提交(commit)它。

11.3 在分支之间切换

步骤 1. 选择分支

现在我们来切换到我们的旧分支。点击顶部菜单,这里可以看到什么呢?

不要困惑 —— 一切都很简单:

Local ——这是你本地 git 仓库的分支列表;这里有两个:

  • test
  • master

Remote —— 这是你在 GitHub 服务器上的远程仓库。 我们已经把你的更改发送到那里,但没有新分支,正如预期的那样。 远程仓库名为 origin,并且那里只有 master 分支。

Recent ——这是你最近处理过的分支名称列表。 这是为方便和快速而在 PyCharm 中添加的。

本地仓库名称右侧的 origin/master —— 是与之同步的 远程仓库的名称,变更将发送至那里。

步骤 2. —— 将分支代码下载到当前文件夹

步骤 3. 验证:

我显示的是分支 (master) 和旧代码。

11.4 分支合并

现在我们试试将我们的两个分支的代码合并。

步骤 1. 首先在我们的项目中添加一个新文件 —— init.py 并编写一些代码。

  • 创建文件 init.py
  • 在其中写入代码 print("你好")
  • 提交文件。

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

步骤 2. 分支合并

我们将把在 test 分支中做出的更改合并到我们的当前分支 (master) 中。

为此,我们也可以使用顶部菜单中的 «Merge ‘test’ into ‘master’» 命令。

步骤 3. 验证结果:

检查:

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

11.5 合并冲突

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

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

文本文件的冲突

Git 是一个非常智能的系统,它了解文件类型。如果你在它认为是 文本文件的不同位置进行了更改,Git 会在必要的地方将更改从一个文件合并到另一个文件中, 就像人类一样。

二进制文件的冲突

但如果你修改了图片或文档,Git 不会尝试将它们的部分合并到一个文件中, 它只会建议你选择你想在当前分支中保留的文件版本。

手动解决冲突:

如果你在文本文件的相同位置做了更改,Git 无法正确合并不同版本, 它会建议你来解决。

这可能会看起来像这样:

你在这里看到什么:

  • 左边是 master 分支的 main.py 文件内容
  • 右边是 test 分支的 main.py 文件内容
  • 中间是 PyCharm 提议你编写最终代码版本的位置 (你可以点击 «>>»«<<» 按钮, 以自动插入来自其中一个文件的更改)。

我接受了 master 的版本并手动补充了代码。这是我得到的结果。

11.6 变更历史

其他有用和有趣的功能:你可以查看任何文件的变更历史,点击 Show History 按钮。它可能有两个位置 —— 找到它。

这是我对于 main.py 文件的变更历史的样子:

说明:

  • 左边是具体文件的变更历史:
    • 变更越新,它越高;变更越旧,它越低。
    • 在这里也会显示分支的合并历史。
  • 右边 —— 是具体提交中所做的更改。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION