我现在开始 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 git@git.xxxxxxxxxx.com: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 git@git.assembla.com: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 git@git.assembla.com:off.git app
git commit -a -m "Teste"
git remote add origin git@git.assembla.com:vesti.git
git push origin master
之后,我创建了一个新目录并将( )mkdir testelol
克隆到该目录并执行以下命令:vesti
git clone git@git.assembla.com:vesti.git
git submodule init
git submodule update
哪个运行成功并自动克隆了 app 目录中的 git@git.assembla.com:off.git 。回到vesti
dir ( 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(-)
) - 备份到 repo 的根目录 (
cd ..
) - 添加了
app
修改 (git add app
) - 承诺(
git commit -m "Teste"
返回[master 3a2b13d] Teste 1 files changed, 1 insertions(+), 1 deletions(-)
) - 并推送修改(
git push
)
.
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 git@git.assembla.com:vesti.git
33fc470..3a2b13d master -> master
完成这一切之后,我回到了testelol
目录并执行了git pull
返回成功消息的命令:
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 git@git.assembla.com:vesti.git
33fc470..3a2b13d master -> origin/master
Fetching submodule app
Updating 33fc470..3a2b13d
Fast-forward
app | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
之后,我检查了是否对文件进行了修改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'
而已。
谢谢!