0

私は今 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)
  • appdir ( 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'

それでおしまい。

ありがとう!

4

1 に答える 1

0

私があなたを正しく読んでいる場合、サブモジュールは「アプリ」にあり、明示的に複製され、サブモジュールとして登録された「アプリ」をすでに持っている親に追加されます。

親リポジトリにすでにサブモジュールがコミットされている場合は、そのプロジェクトの作業ツリー rootdir から入力しますgit submodule update --init --recursive(サブモジュールにサブモジュールがある場合にのみ --recursive が必要です)。

.gitmodules の内容を見て、何が登録されているかを確認できます (.gitmodules ファイルが変更されるたびにコミットすることを忘れないでください)。また、サブモジュールを削除するときに、手動で .gitmodules から行を削除してコミットする必要があります。

于 2012-07-20T02:42:55.673 に答える