GIT-切换到另一个远程(不丢失提交)
我从回购协议中复制了一个副本,例如:GIT-切换到另一个远程(不丢失提交),git,github,eluna-lua-engine,Git,Github,Eluna Lua Engine,我从回购协议中复制了一个副本,例如: https://github.com/test1/project.git 这是另一个回购协议的克隆,有很多更改(+1000次提交),然后我在本地项目上添加+200次提交 现在,我想切换到主回购https://github.com/main/project.git 我不想丢失我的更改,但我想删除本地项目中test:project的所有提交,并切换到main:project,而不丢失我自己的提交和更改 最好的方法是什么 实例: 我从中复制了一个 然后,我在本
https://github.com/test1/project.git
这是另一个回购协议的克隆,有很多更改(+1000次提交),然后我在本地项目上添加+200次提交
现在,我想切换到主回购<代码>https://github.com/main/project.git
我不想丢失我的更改,但我想删除本地项目中test:project
的所有提交,并切换到main:project
,而不丢失我自己的提交和更改
最好的方法是什么
实例: 我从中复制了一个 然后,我在本地项目中进行了自己的更改和提交 现在我想切换到: 保留我的提交并删除
ElunaTrinityWotlk
中的所有提交,我不想将ElunaTrinityWotlk
中的提交合并到TrinityCore
,我只想切换到TrinityCore
,只合并我自己的提交
ElunaTrinityWotlk
是TrinityCore的克隆,添加了一些新功能。。。看看ElunaTrinityWotlk
的提交,我不再需要ElunaTrinityWotlk
功能了。我想切换到TrinityCore
分支3.3.5
,我只需要将我自己的更改与TrinityCore
合并,删除ElunaTrinityWotlk
的提交
好的,当你说你想“切换到主回购”时,我脑子里有几件事,那可能意味着什么。这不是其中之一 天哪。。。这是先进的 好的,这是可能的,但不会很简单做好备份以防出错,这样你就可以再试一次。好吧,这应该不是必须的,但有了这样的东西,安全总比后悔好 TL;DR:从Trinity获得另一笔GitHub回购;在本地,在单一回购中,从Eluna和Trinity回购中获取承诺;樱桃从艾露娜承诺树到三位一体树中挑选你的承诺;回到三位一体回购协议 更详细的信息: 如果您使用的是Windows,我建议您使用。这是我选择的武器,它既容易使用又先进。如果您不在Windows中,或者您有另一个更熟悉的工具,您可以使用它。最终,这一切也可以在命令行中完成——这只是更繁琐而已 因此,这里有几个步骤 首先,您自己的github存储库是从Eluna派生出来的,所以这样做不行。创建另一个从Trinity分叉的。把第一个留到现在,它将是一个备份,以防你搞砸了,需要重新开始 然后,转到所有更改所在的本地计算机上的本地副本。确保所有更改都被推送到基于Eluna的github存储库中。这是一个预防措施,这样你就不会失去工作。还要检查是否没有本地修改。为了额外的安全,也要清理所有未版本的文件。让它看起来像是一个新克隆的回购协议,没有任何修改 或者,只需在另一个文件夹中克隆另一个基于Eluna的github存储库。有一个新的开始 无论如何,下一步-做一些标签。特别是,标记您自己的最新提交,这样您就不会丢失它 然后-带上Trinity。在本地repo中,创建另一个远程站点,并将其指向基于Trinity的github repo从远程获取更改。不要拉获取 现在,您的本地副本将有一个来自基于Eluna的存储库和基于Trinity的存储库的提交的mashup,每个提交都有自己的远程提交 接下来,从Trinity提交中创建一个新的分支,您希望在其上移动自己的提交 现在是最难的部分。您需要做的是挑选您自己的提交,并将它们移动到您的新分支。Cherry按顺序选择提交,从最旧的开始。在TortoiseGIT中,您可以选择多个提交并一次选择所有提交 您将不时地进行合并提交,其中您已提取了最新的Eluna版本,并将其合并到您自己的代码中不要用樱桃采摘这些。这将带来整个艾露娜项目。只有樱桃选择你自己的承诺 很可能会有合并冲突,或者您可能已经编辑了一些在Eluna中的代码,但不在Trinity中。那样的话,祝你好运!您需要手动找出如何正确地选择提交 最后,经过几个小时(或几分钟,或几天,取决于您在那里做了什么),您将在最新的Trinity commit上选择所有提交。呸 现在检查项目是否仍然有效。经过这么长时间的采摘,你很可能错过了什么。修复并提交这些更改 最后,您有了一个基于Trinity提交的新分支,它现在还包含了您所有的cherry-picked提交和其他更改。把它推到你的Trinity github repo。你完了
擦除本地副本并重新克隆基于Trinity的github repo,以获得一个全新的版本。您需要创建两个分支
git cherry pick
,最简单的方法是通过一些GUI,比如一个按钮,在这种情况下,你只需要切换到TC分支,然后点击提交你在Eluna分支中的更改并选择cherry pick。
在控制台中,您需要在TC分支中使用该命令:
git cherry-pick -x *hash of commit in Eluna branch*
现在检查问题,我想,现在清楚了,谢谢。@Amin.MasterkinG-好的,更新了答案。看看。@Amin.MasterkinG-Hmm,是什么让你更改了复选框?:)两个答案都是正确的