我开始,现在与git,并运行一些测试,以了解它更好,但上了车错误stucked ...Git的子模块更新错误
我已经开始了一个框架,一个Git仓库我正在开发的项目正在我正在进行的许多项目中使用,以便轻松更新这些项目。
为了测试,我开始了一个新项目,并将框架添加为子模块。我已经将该项目克隆到一个新文件夹中,执行了以下命令git submodule init; git submodule update
,并且该子模块完美地克隆到了它的目录中。
之后,我根据项目需要对源进行了一些修改,并承诺对源进行的修改并将其推送到服务器。一切都很顺利。
在我克隆的另一个文件夹中,我拉了修改,一切似乎都没有问题。
DennyMac:app DennyLoko$ git commit -a -m "Teste"
[master 68fee42] Teste
1 files changed, 1 insertions(+), 0 deletions(-)
DennyMac:app DennyLoko$ cd ..
DennyMac:vesti DennyLoko$ git add app
DennyMac:vesti DennyLoko$ git commit -m "Teste"
[master 3a2b13d] Teste
1 files changed, 1 insertions(+), 1 deletions(-)
DennyMac:vesti DennyLoko$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 243 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To [email protected]:vesti.git
33fc470..3a2b13d master -> master
但是,当我检查修改后的文件的来源,没有任何改变。运行git submodule update
它提供了以下错误:
DennyMac:testelol DennyLoko$ git submodule update
fatal: reference is not a tree: 68fee423f5dba537956fec51dcab0901856ad4e6
Unable to checkout '68fee423f5dba537956fec51dcab0901856ad4e6' in submodule path 'app'
什么我必须做解决这一问题?我正在使用子模块做最好的事情或者存在一个更好的方法呢?
谢谢你们!
编辑::
让我们提供更多的细节......
我已经创建了Assembla框架项目,并通过发送以下命令初始结构:
git init
git add .
git commit -a -m "Estrutura inicial enviada"
git remote add origin [email protected]:off.git
git push origin master
之后,我创建了新项目的目录:
mkdir vesti
cd vesti
mkdir documentacao
mkdir node_app
git init
git add .
git submodule init
git submodule add [email protected]:off.git app
git commit -a -m "Teste"
git remote add origin [email protected]:vesti.git
git push origin master
之后,我已创建了crea泰德一个新的目录mkdir testelol
和克隆vesti
(git clone [email protected]:vesti.git
)进入该目录并执行以下命令:
git submodule init
git submodule update
哪些成功运行,并自动克隆[email protected]:app目录内off.git。为后盾,以vesti
目录(cd ../vesti
),我已经做了以下内容:
- 编辑的
app
子模块中的一个文件(echo "teste" >> app/application/Main_Class.php
) - 改为
app
目录(cd app
) - 致力于修改(
git commit -a -m "Teste"
返回[master 68fee42] Teste 1 files changed, 1 insertions(+), 0 deletions(-)
) - 背靠回购(
cd ..
) - 添加了
app
修饰的的根目录ications(git add app
) - 承诺(
git commit -m "Teste"
回到[master 3a2b13d] Teste 1 files changed, 1 insertions(+), 1 deletions(-)
) - ,推动了修改(
git push
)
。
DennyMac:testelol DennyLoko$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From [email protected]:vesti.git
33fc470..3a2b13d master -> origin/master
Fetching submodule app
Updating 33fc470..3a2b13d
Fast-forward
app | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
在那之后我检查,如果被修改的文件进行:
DennyMac:vesti DennyLoko$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 243 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To [email protected]:vesti.git
33fc470..3a2b13d master -> master
这样做的一切,我已经备份到testelol
目录和执行命令git pull
其返回成功信息后testelol/app/application/Main_Class.php
但未被更改。要更新我运行以下命令:
DennyMac:testelol DennyLoko$ git submodule init
DennyMac:testelol DennyLoko$ git submodule update
fatal: reference is not a tree: 68fee423f5dba537956fec51dcab0901856ad4e6
Unable to checkout '68fee423f5dba537956fec51dcab0901856ad4e6' in submodule path 'app'
就是这样。
谢谢!
否。要添加子模块,我已经使用'git submodule add remote_path local_dir'。现在我排除了第二个目录,创建了一个新目录,再次克隆了repo,并且当我执行'git submodule update'时返回错误'致命:引用不是树:68fee423f5dba537956fec51dcab0901856ad4e6 无法在子模块路径中签出'68fee423f5dba537956fec51dcab0901856ad4e6' “app''。 – 2012-07-20 02:53:50
请使用实际的目录名称(或一致的别名)更清楚。所以这一切都在一台机器上。第一次使用'git submodule add remote_path local_dir'添加子模块,然后排除(使用.gitignore?),然后创建一个不同的目录(使用mkdir应用程序?)和一个远程repo克隆到它? 如果您可以在父工作目录中发布.gitmodules的内容。它只应在您想要的目录中列出所需的子模块。如果还有其他,请删除[submodule path]块和下面的'path'和'url'行。 – karmakaze 2012-07-20 03:08:02
已编辑以显示您提问的内容。 – 2012-07-20 04:22:06