1

前言,一般来说,我对使用 git 和版本控制系统还很陌生。我想我理解了大部分概念,但我似乎在这里碰壁了/我使用 smartgit 作为我的客户端,这可能是相关的,并且为游戏服务器编码

所以几周前,我开始了一个重大项目,从我们项目的开发分支分支出来。在此期间,代码库发生了重大更新,并且发生了一些变化,导致我的分支无法编译。显然不是以当前的开发分支为基础,而是我开始这个项目时开发分支的状态,并且新的更改似乎没有合并到本地代码中

我刚开始使用 smartgit,还有一大堆我不太了解的功能。

这是我的项目 DionaOverhaul 的工具提示分支:在此处输入图像描述

我最初分支的基础分支是aurorastation/development. 我在想也许应该将其设置为跟踪分支?

我需要以某种方式将所有更改合并aurorastation/development到我dionaoverhaul的分支中,并创建一个包含所有当前开发代码的分支,并将我的dionaoverhaul提交放在上面。我不知道该怎么做。

经过一番研究,我想我想做的是将我的分支重新定位到极光站/开发的尖端

但是我看到的一个问题是,我正在处理的至少一个图块同时已更改,并且我不想完全覆盖对该文件的更改,并使用我的版本分支。我不确定这是否是存储库管理器在合并我的拉取请求时会处理的事情,或者它是否是我在变基期间需要处理的事情

4

2 回答 2

0

你有两个分支:your_localdevelopment.

完成your_local并希望将所有更改带给您后,development您有两个选择

  1. 切换回development分支,将所有更改拉入并合并your_local到其中。
  2. 切换回development,拉入所有更改,切换回您your_local,合并development到其中并解决所有冲突。然后转到选项 1。

当您在development.

第二个看起来像你的情况:有变化development,它们与你的相冲突。

实际上,还有更多(例如,您可以重新定位 your_local到最新版本development),但现在让我们保持简单。

跟踪分支

您不需要更改跟踪的分支,这是指向本地分支远程副本的指针

冲突

当您在两者中都有冲突的更改时developmentyour_localgit 会尝试解决它(这就是 git 的用途)。但是,这并不总是可行的,git 会将此类文件标记为冲突,您必须手动 解决这些冲突。

Smartgit 具有一些用于合并和解决冲突的基本功能。

无论如何,如果您对 git/smartgit 不是很熟悉,我建议您备份您的存储库,以便您可以尝试合并而不必担心太多。

于 2016-06-28T13:24:20.117 回答
0

跟踪分支

“跟踪分支”是指您推送到的分支。它应该始终与本地分支的名称相同,前缀为“refs/remotes/NAME_OF_REMOTE”。NAME_OF_REMOTE 可以是任何东西,但如果您只推送到一台服务器,则约定将其称为“来源”。所以不要改变它。如果这样做,下次推送时,您将收到一条无法推送的消息,因为它会覆盖远程分支,如果您确定要这样做,请使用git push --force. 如果你使用git push --force,你最终会覆盖别人在开发分支上的辛勤工作。(是的,它是可以恢复的,但它很头疼,所以不要这样做。)

合并更改

我需要以某种方式将极光站/开发的所有更改合并到我的 dionaoverhaul 分支中,并创建一个包含所有当前开发代码的分支,并在其上提交我的 dionaoverhaul

您有 2 个选项。如果您真的想要所有的dionaoverhaul commits ontop of it,请执行以下操作:

  1. git fetch # 这会从服务器下载所有最新的更改
  2. 确保您在 dionaoverhaul 分支。
  3. git rebase origin/development 终端会告诉你它正在你的分支上应用提交,一次一个。它会定期停止并告诉您存在需要手动解决的冲突。您可能需要多次执行此操作。每次,解决每个文件中的冲突,然后git add -A && git rebase --continue

另一方面,如果您希望最多只需要处理一组手动冲突,请使用merge而不是rebase. 缺点是您的分支的历史将不再是一条直线。然而,这种方法有很多优点,这些都超出了这里的范围。要合并,而不是运行git rebase origin/development,运行git merge origin/development。同样,您可能必须处理手动冲突,但一旦它们全部解决,请使用git add -A && git commit.

于 2016-06-28T13:28:41.280 回答