github 子模块更改后,update整个项目失败
天蓬老师
天蓬老师 2017-04-21 11:18:12
0
2
658

今天把vim的配置文件以及插件托管在github上,其中vim插件采用的是git submodule托管。其中

git submodule add git://github.com/xuhdev/SingleCompile.git bundle/SingleCompile

之后`git status'了以下,结果出现了这样的提示:

....
#   modified:   bundle/SingleCompile(untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

然后看了How to get rid of git submodules untr...,按照上面的方法在SingleCompile子模块中写了.gitignore忽略掉未跟踪文件,然后提交SingleCompile(为后面的失败埋下了伏笔)。

之后为了测试能否恢复我的vim配置。就在另一台机上

git clone http://github.com/xuelangZF/vim_backup.git ~/.vim 
cd ~/.vim   
git submodule init  
git submodule update 

结果SingleCompile插件果真无法clone, 错误提示

fatal: reference is not a tree: 38ae49037e1e8c31484cac973941328be318e6aa

原因是我在本地提交了SingleCompile(最后一步提交的hash值为38ae49037e1e8c31484cac973941328be318e6aa),但没有push到SingleCompile的官网上,因此自然无法从官网得到38ae49这个分支。

然后我尝试:

1. 在github备份仓库里面删除SingleCompile:

rm -rf bundle/SingleCompile
git rm -r bundle/SingleCompile
git add .
git commit -m "..."
git push origin_vim

另外删除了.gitmodules和 .git/config中相关的配置节点,之后重新用

git submodule add git://github.com/xuhdev/SingleCompile.git bundle/SingleCompile

添加子模块,结果git恢复了我之前删除的版本:38ae49037e1e8c31484cac973941328be318e6aa。

2. 不死心的我又尝试撤销对SingleCompile提交

git revert HEAD

结果update的时候还是不行,这次无法获得树26460a12eb87948430f34fa0bb15fc264f368aac(这个是我撤销提交的提交校验码,囧..)

问题:有没有办法让SingleCompile正常链接到官方版本,而不是我的本地提交。

2013.4.8 11:32

参考了How do I remove a Git submodule,发现还要: rm -rf .git/modules/$submodulepath, 不然重新添加子模块实际上是从.git/modules/$submodulepath复制过去的。(stackoverflow上采纳的正确答案竟然都没有说明这一点,真是坑人)。

不过不知道有没有办法将我本地对插件的更改也放在这个项目里(不是合并到子模块插件作者的分支),并且能正常的clone,然后update下来。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(2)
Peter_Zhu

Langkah sebenar yang saya selesaikan ialah laluan rm -rf rm -rf rm -rf .git/modules/path git submodul init kemas kini submodul git

大家讲道理

Submodul dalam git sememangnya satu perangkap Secara amnya, apabila saya melakukannya, saya menguruskan setiap submodul sebagai gudang git yang berasingan, dan tidak mengapa.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan