2016-04-04 10 views
1

私はデタッチされたヘッド(このように設計されています)であるサブモジュールを持つプロジェクトを持っています。今私は分離された頭の中のファイルにいくつかの変更を加える必要があります。以下は私がしたことです。デタッチされたヘッドにコードをチェック

私はgitlabプロジェクトを開いたとき、私は切り離さ頭パス(/user/project/base ((d4b9ede...))

git add testFile.py 
git commit -m "made some change in this file" 
git checkout -b temp 
git checkout master 
git pull 
git merge temp 
git branch -d temp 
git push 

で、この後、私は、リモートサーバーで行われた変更を見ることができていますが。しかし、私が同じプロジェクトをクローンすると、そのファイルに加えられた変更が見えないようです。私はここで間違って何をしていますか?

答えて

2

サブモジュールは確かに「設計通り」です。スーパープロジェクトはサブプロジェクトのすべてのIDをコミットします。したがって、スーパープロジェクトをチェックアウトすると、特定のコミットIDで分離されたHEADを持つ各サブプロジェクトが得られます。あなたの変更が表示されない理由を

これがある:あなたのサブプロジェクトは、そのmasterブランチに新しいコミットを持っていますが、あなたの親プロジェクトは、(少なくとも、ではない任意の直接的な方法で)そのブランチを使用していません。

これが意味するのは、サブモジュールにいくつかの変更が加えられ、すでにコミットされた後で、でもでなければなりません、スーパープロジェクトに移動して、スーパープロジェクトは、サブプロジェクト内の新しいコミットをその(新しい)コミットIDで参照する必要があります。私はそれをやった最後の時間は、パス名に末尾にスラッシュを使用しないことを確認され、その古いMETHOD-親プロジェクトにcd、慎重にgit addサブモジュール(1.5/1.6をgitの)以来

この

が変更されているように見えてもオートコンプリート が本当ににその /を持つことを望んでいる場合、唯一の方法ではありません(間違いなく動作します)。最近は git submodule update --remoteも使用でき、オプションの --no-fetchも使用できます。これは、最初にサブモジュールの更新をプッシュして(スーパープロジェクトに記録されたブランチ設定を使用して、 .git/configまたはその .gitmodulesをデフォルトで masterに設定していることを必要とします。 masterブランチまたは他のブランチが、 )。

新しいコミットIDを知るようにスーパープロジェクトを更新したら、スーパープロジェクトにコミットしてプッシュする必要があります。

Pro Git bookthis blog postingの両方に、サブモジュールに関する追加情報があります。私は個人的には依然としてサブモジュールを避けようとしています。彼らの "sobmodules"ニックネームは1.6日で非常に適切でしたが、そのブログ投稿(最近は2016年1月中旬に更新されました)に基づいて、まあまあのことかもしれません。

+0

この回答に感謝します。心から感謝する。私は 'git submodule update --remote'を実行して、新しいコミットIDを指しているのを見ました。しかし、私はこの変化をどのように押し進めるのでしょうか?スーパープロジェクトで 'git add'を実行すると、'これは何も指定されていません。何も追加されません。 たぶんあなたは 'git add'と言ったかったでしょうか? 'では、私はここに正確に何を追加すべきですか? – KR29

+1

サブモジュールのコミットIDが更新されると、 'git diff'出力に表示されます(サブモジュールのコミットIDとして、またはユーザーフレンドリーなサブモジュールdiffオプションを設定した場合は、サブモジュールのログ行を表示します)。スーパープロジェクトをプッシュする準備が整いました。繰り返しますが、実際何年も何もしていないので、多少変更されている可能性があります。 – torek

+0

もう一度ありがとうございます。私はサブモジュールを押して、それは正常に動作します。プッシュをする前に確かめたかっただけです。 – KR29

関連する問題