Ale*_*exy 12 git ruby-on-rails-plugins git-submodules
我们曾经在一个Rails应用程序中有一个本地黑客的delayed_job,在vendor/plugins/delayed_job中.它作为一次性事件安装并在主应用程序仓库中检入git.
现在我们决定在github上fork delayed_job并用git子模块替换子目录,如下所述:
http://doblock.com/articles/using-git-submodules-to-manage-plugins-in-rails
在此之前,我只是删除了vendor/plugins/delayed_job,而没有将其检入.现在,尽管添加了子模块,主repo中的git status仍显示vendor/plugins/delayed_job中的新文件.
我们应该如何处理删除作为repo一部分的子目录并使其保存git子模块的情况?在将子模块克隆到其位置之前,我们是应该首先使用git rm删除它,还是更彻底地删除它?
Chr*_*sen 17
假设您不关心vendor/plugins/delayed_job工作树中的当前内容(即,将作为子模块检出的内容已经是工作树中内容的合适替代),将目录转换为子模块看起来像这样:
git rm -r vendor/plugins/delayed_job
git submodule add github.com:account/delayed_job.git vendor/plugins/delayed_job
Run Code Online (Sandbox Code Playgroud)
当然,GitHub存储库URL可能会有所不同; 例如,您可能希望使用HTTP URL而不是上述SSH URL.
但是,似乎你做了一些不同的事情.我可以告诉你,你做了这样的事情:
rm -rf vendor/plugins/delayed_job
git clone github.com:account/delayed_job.git vendor/plugins/delayed_job
Run Code Online (Sandbox Code Playgroud)
这个程序有两个缺点:
rm在您的Git索引中保留旧文件.假设您没有任何有意的分阶段更改vendor/plugins/delayed_job(您可能没有,因为您要用子模块替换它),您可以使用以下命令清除这种情况:
git rm --cached -r vendor/plugins/delayed_job
git submodule add github.com:account/delayed_job.git vendor/plugins/delayed_job
Run Code Online (Sandbox Code Playgroud)
清除vendor/plugins/delayed_job索引中的所有条目应修复"仍显示新文件"问题.使用git submodule add将创建.gitmodules将"子存储库"转换为真实子模块的文件.
| 归档时间: |
|
| 查看次数: |
2601 次 |
| 最近记录: |