Git:合并基础分支的变化

时间:2016-06-28 13:00:47

标签: git github version-control dm

前言,我对使用git和版本控制系统一般都很陌生。我想我理解了大多数概念,但我似乎遇到了障碍/我使用smartgit作为我的客户端,这可能是相关的,并为游戏服务器编码

几个星期前,我开始了一个重大项目,从我们项目的开发部门开始。在那段时间里,对代码库进行了重大更新,并且一些事情发生了变化,导致我的分支无法编译。显然,它没有使用当前的开发分支作为基础,而是在我开始这个项目时开发分支的状态,而新的变化似乎并没有合并到本地代码中

我刚开始使用smartgit,而且还有很多我不太了解的功能。

这是我的项目的工具提示分支,DionaOverhaul:enter image description here

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

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

经过一番研究后,我认为我想做的是将我的分支重新定位到极光/发展的顶端

但我看到的一个问题是,至少有一个我正在处理的图块,在此期间已经更改,并且我不想完全覆盖对该文件的更改,以及我的分支中的版本。我不确定在合并我的拉取请求时,存储库管理器是否会处理这些内容,或者是否需要在rebase期间处理它的内容

2 个答案:

答案 0 :(得分:0)

您有两个分支:your_localdevelopment

完成your_local并希望将所有更改带到development后,您有two options

  1. 切换回development分支,提取所有更改,并将your_local合并到其中。
  2. 切换回development,提取所有更改,切换回your_local,将development合并到其中并解决所有冲突。然后转到选项1。
  3. 第一个选项是development中没有重大变化的简单情况。

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

    实际上,还有更多(例如,您可以rebase your_local加入最新的development),但现在让我们保持简单。

    跟踪分支

    您无需更改已跟踪的分支,这是a pointer to the remote copy of your local branch

    冲突

    developmentyour_local中的更改发生冲突时,git会尝试解决它(这就是git的用途)。但是,并不总是可能,git会将此类文件标记为冲突,并且您必须manually resolve这些冲突。

    Smartgit some basic functionality merging并解决冲突。

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

答案 1 :(得分:0)

跟踪分支

"跟踪分支"表示您推送的分支。它应始终与本地分支的名称相同,前缀为" refs / remotes / NAME_OF_REMOTE"。 NAME_OF_REMOTE可以是任何东西,但是如果你只推送到一个服务器,那么惯例就是调用它" origin"。所以不要改变它。如果您这样做,下次推送时,您将收到一条消息,您无法推送,因为它会覆盖远程分支,如果您确定要这样做,请使用{{1} }。如果您使用git push --force,最终将覆盖其他人在开发分支上的辛勤工作。 (是的,它是可以恢复的,但它很头疼,所以只是不要。)

合并更改

  

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

您有2个选项。如果您真的想要所有git push --force,请执行以下操作:

  1. git fetch#这将从服务器下载所有最新更改
  2. 确保你在dionaoverhaul分店。
  3. git rebase origin / development 终端将向您显示它一次在您的分支上应用提交。它会定期停止并告诉您有些冲突需要手动解决。您可能需要多次这样做。每次都解决每个文件中的冲突,然后dionaoverhaul commits ontop of it
  4. 另一方面,如果您只想处理最多1组手动冲突,请使用git add -A && git rebase --continue代替merge。缺点是你的分支历史将不再是一条直线。然而,这种方法有许多优点,这些优点仅限于此处的范围。要合并,请运行rebase,而不是运行git rebase origin/development。同样,您可能必须处理手动冲突,但一旦解决了这些冲突,请使用git merge origin/development