github上有一个side project - ng2-admin,我克隆了它。
基于 ng2-admin,我已经在与自己的东西作斗争。
改进不断出现,我通过 git pull 进行改进。
但我也想保留历史和我的成就。
我怎样才能将所有这些推到第二个项目中,比如 myproject?
也就是说,我从 ng2-admin 获取了更新,而 myproject 说有新文件。
此外,当我处理我的部分代码时,无论 ng2-admin 没有看到我有新代码,其中的变化。
不知道怎么全部放在一个文件夹里,但是有这样一个想法……
会有两个文件夹ng2-admin和myproject。
通过rsync,将代码上传到myproject。
如果有一个更优雅的选项将 git 本身用于一个目录,那么我当然会更好地使用它。
可以的话,再分享文章,可以散在这里,可以戳手指。
也欢迎任何想法。
首先要了解的是 git 中有本地分支,也有本地分支链接到远程分支。通常,远程分支的名称与本地分支的名称相同。但那是“通常”。
本地分支通常称为“master”、“develop”,远程分支称为“origin/master”、“origin/develop”。origin 只是远程存储库的名称,它是存储库 url 的同义词,之所以有这个名称,是因为“原始”、“初始”代码存储在那里。
现在让我们更深入地了解一下。
查看添加的远程存储库
通常会有起源。
添加另一个(例如,来自 github)
您可以添加一个选项
-f
来提取数据。<имя>
- 这是萝卜给我们的名字,让第二个现在,你可以做这样的事情
让我们从第一个存储库的 master 创建一个分支
让我们把第二个主人放在那里
(解决冲突,提交)
现在我们将把这个分支推送到 mytest 分支的第二个仓库
此命令会将本地测试分支链接到第二个萝卜中的 mytest 分支。此分支中的后续推送会将其准确发送到正确的存储库(当然,如果
push.default=simple
,但现在这是默认设置)。git pull 将从正确的远程存储库中提取此分支中的更改。也就是说,两个(或更多)外部存储库在您看来就像一个。是的,它们可以有同名的分支,但您总是有机会将它们链接到您方便的名称。除了您之外,没有人会知道这些本地分支名称。可以合并分支,并且它们“就像它们在不同的存储库中一样”。
您还需要
git fetch origin
/形式的命令git fetch second
- 从远程存储库中拉取更改给自己,但不要尝试合并任何内容(更准确地说,更新链接的本地分支)。PS一旦我因此将代码从公司的一个萝卜“迁移”到另一个萝卜。但是萝卜是用于vpn的,再加上开发人员慢慢迁移到新萝卜,我不得不“转移代码”。
如果我是你,我会考虑使用git submodule或git subtree. 这两种方法都允许您在一个 git 存储库中维护一个项目,但从 git 的角度来看,您的工作和第三方项目是分开的。他们每个人都有自己的优点和缺点。如果您想“按原样”使用 ng2-admin 侧项目,那么 submodule 更合适。如果您想根据需要直接对 ng2-admin 进行更改,那么 subtree 会更方便,因为它允许您进行本地更改(并选择将它们合并到外部项目存储库中,或者仅将更改保留在本地存储库并定期将它们与远程的新更改合并)和远程更改。不幸的是,同时使用子树和子模块将不允许您将所有内容保存在一个目录中,但允许您使用嵌套目录来存储 ng2-admin,
您也可以使用 2 个遥控器,正如您在评论中被告知的那样,但是,这不会减轻您不断选择提交的分支/存储库的需要,并且也不允许您对更改进行逻辑划分项目里面有2个仓库,这样就不会互相干扰啦。