我開始,現在與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