首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GIT -切换到另一个遥控器(不丢失提交)

GIT -切换到另一个遥控器(不丢失提交)
EN

Stack Overflow用户
提问于 2019-07-31 21:57:08
回答 2查看 481关注 0票数 3

我用回购做了一个克隆,例如:https://github.com/test1/project.git

这是另一个具有大量更改(+1000提交)的回购的克隆,然后我在本地项目中添加+200提交。

现在,我想转到主回购。https://github.com/main/project.git

我不想丢失我的更改,但我希望从本地项目的test:project中删除所有提交,切换到main:project,而不丢失自己的提交和更改。

做这件事最好的方法是什么?

实际例子:

我是从

https://github.com/ElunaLuaEngine/ElunaTrinityWotlk

然后我做了我自己的改变,并在我的本地项目中提交。

现在我想转到:

https://github.com/TrinityCore/TrinityCore/tree/3.3.5

保留我的提交并删除ElunaTrinityWotlk中的所有提交,我不想将提交从ElunaTrinityWotlk合并到TrinityCore,我只想切换到只合并自己提交的TrinityCore

ElunaTrinityWotlk是来自TrinityCore的一个克隆,可以添加一些新特性..。看看ElunaTrinityWotlk的提交,我不再需要ElunaTrinityWotlk特性--切换到TrinityCore分支3.3.5,我只需要将自己的更改与ElunaTrinityWotlkTrinityCore删除提交合并。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-31 22:11:50

好吧,当你说你想要“转到主要回购”,我有几件事在我的脑海中,这可能意味着什么。这不是他们中的一个。

天啊..。这是先进的..。

好吧,这是可能的,但不会很简单。做备份,以防你搞砸了,所以你可以再试一次。好吧,这不应该是真的必要的,但是有了这样的东西,安全总比抱歉好。

TL;DR:从三位一体做另一个GitHub回购叉;在本地,在一个回购中,从Eluna和tree获得提交;樱桃-选择从Eluna提交树到三一树的提交;推回三一回购。

更详细的

如果您在Windows上,我建议您使用TortoiseGit。这是我选择的武器,它既易于使用,又先进。如果您不在Windows中,或者您有另一个您更熟悉的工具,您可以使用它。最终,这一切也可以在命令行中完成--只是更繁琐。

这里有几个步骤。

首先,您自己的github存储库是从Eluna分叉的,所以这是行不通的。创建另一个从三位一体分叉。把第一个留在现在,这将是一个备份,以防你搞砸了,需要重新开始。

然后,转到所有更改所在的本地计算机上的本地副本。确保将所有更改推送到基于Eluna的github存储库中。这是一种预防措施,这样你就不会失去工作。还请检查是否有本地修改。为了额外的安全,清理所有不版本的文件也。让它看起来像一个新克隆的回购没有任何修改。

或者,只需在另一个文件夹中复制另一个基于Eluna的github存储库。有个新的开始。

不管怎样,下一步-做些标签。特别是,标记您自己的最新提交,这样您就不会丢失它。

然后-把三位一体带来。在本地回购中,创建另一个遥控器并使其指向基于三位一体的github回购。从那个远程获取更改。别拉!叫来。

现在,您的本地副本将有来自您基于Eluna的存储库和基于三一存储库的提交的混搭,并且每个副本都将拥有自己的远程。

接下来,从三位一体提交创建一个新分支,在此基础上移动您自己的提交。

现在是最困难的部分。您需要做的是cherry选择您自己的提交,并将它们移动到您的新分支。樱桃按顺序挑选提交,从最老的开始。在TortoiseGIT中,您可以一次选择多个提交并选择它们。

不时地,您将有合并提交,在其中您已经提取了最新的Eluna版本,并将其合并到您自己的代码中。不要樱桃选这些。这只会带来整个Eluna项目。只有樱桃选择你自己的承诺。

很有可能会出现合并冲突,或者您可能已经编辑了Eluna中的一些代码,但并不是在“三一”中。那样的话-祝你好运!您需要手动找出如何正确地选择提交。

不过,最后,经过几个小时(或几分钟,或几天,取决于您在那里所做的工作),您将在最新的三一提交的基础上选择所有的提交。呼!

现在检查一下这个项目是否仍然有效。经过如此长的樱桃挑选,更有可能的是你错过了一些东西。解决这个问题,并提交这些更改。

最后,您有一个新的分支,基于三位一体提交,现在还包含您所有的樱桃选择提交和其他更改。把它推到你的三一github回购。你完蛋了!

擦去当地的副本,并重新克隆你的三位一体基github回购为一个干净的板子。

票数 1
EN

Stack Overflow用户

发布于 2019-08-01 00:18:15

你需要做两个分支

  1. 与Eluna的分支
  2. 带TrinityCore的分支

然后,您需要从Eluna执行一个git cherry-pick到TrinityCore,最简单的方法是在一个按钮中通过基克拉肯这样的图形用户界面来完成它,在这种情况下,您只需要切换到TC分支,然后单击提交来提交您在Eluna分支中的更改,然后选择樱桃选择。在控制台情况下,需要在TC分支中使用该命令:

代码语言:javascript
复制
git cherry-pick -x *hash of commit in Eluna branch*
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57299349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档