为了账号安全,请及时绑定邮箱和手机立即绑定

github 子模块更改后,update整个项目失败

github 子模块更改后,update整个项目失败

撒科打诨 2019-04-07 09:37:52
今天把vim的配置文件以及插件托管在github上,其中vim插件采用的是gitsubmodule托管。其中gitsubmoduleaddgit://github.com/xuhdev/SingleCompile.gitbundle/SingleCompile之后`gitstatus'了以下,结果出现了这样的提示:....#modified:bundle/SingleCompile(untrackedcontent)#nochangesaddedtocommit(use"gitadd"and/or"gitcommit-a")然后看了Howtogetridofgitsubmodulesuntr...,按照上面的方法在SingleCompile子模块中写了.gitignore忽略掉未跟踪文件,然后提交SingleCompile(为后面的失败埋下了伏笔)。之后为了测试能否恢复我的vim配置。就在另一台机上gitclonehttp://github.com/xuelangZF/vim_backup.git~/.vimcd~/.vimgitsubmoduleinitgitsubmoduleupdate结果SingleCompile插件果真无法clone,错误提示fatal:referenceisnotatree:38ae49037e1e8c31484cac973941328be318e6aa原因是我在本地提交了SingleCompile(最后一步提交的hash值为38ae49037e1e8c31484cac973941328be318e6aa),但没有push到SingleCompile的官网上,因此自然无法从官网得到38ae49这个分支。然后我尝试:1.在github备份仓库里面删除SingleCompile:rm-rfbundle/SingleCompilegitrm-rbundle/SingleCompilegitadd.gitcommit-m"..."gitpushorigin_vim另外删除了.gitmodules和.git/config中相关的配置节点,之后重新用gitsubmoduleaddgit://github.com/xuhdev/SingleCompile.gitbundle/SingleCompile添加子模块,结果git恢复了我之前删除的版本:38ae49037e1e8c31484cac973941328be318e6aa。2.不死心的我又尝试撤销对SingleCompile提交gitrevertHEAD结果update的时候还是不行,这次无法获得树26460a12eb87948430f34fa0bb15fc264f368aac(这个是我撤销提交的提交校验码,囧..)问题:有没有办法让SingleCompile正常链接到官方版本,而不是我的本地提交。2013.4.811:32参考了HowdoIremoveaGitsubmodule,发现还要:rm-rf.git/modules/$submodulepath,不然重新添加子模块实际上是从.git/modules/$submodulepath复制过去的。(stackoverflow上采纳的正确答案竟然都没有说明这一点,真是坑人)。不过不知道有没有办法将我本地对插件的更改也放在这个项目里(不是合并到子模块插件作者的分支),并且能正常的clone,然后update下来。
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

我解决的实际步骤是
rm-rf路径
rm-rfrm-rf.git/modules/路径
gitsubmoduleinit
gitsubmoduleupdate
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信