私は今 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
これは正常に実行され、アプリディレクトリ内の git@git.assembla.com:off.git を自動的に複製しました。dir vesti
( cd ../vesti
) に戻って、次のことを行いました。
app
サブモジュール内のファイルを編集しました(echo "teste" >> app/application/Main_Class.php
)app
dir (cd app
)に変更- 変更をコミットしました (
git commit -a -m "Teste"
返されました[master 68fee42] Teste 1 files changed, 1 insertions(+), 0 deletions(-)
) - リポジトリのルート ディレクトリに戻る (
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'
それでおしまい。
ありがとう!