2017-08-17 7 views
0

私はマスターから離れた2つのブランチBR1とBR2を持っています。私は今git statusを行うと今、私は、私は私の変更をコミットし、コミットすることは何もないことをされていることを、次のgitのステータスがわかりにくい結果を示しています

git checkout BR1 
git submodule add <submodule1_repo_url> path/to/submodule1 
git submodule add <submodule2_repo_url> path/to/submodule2 
git add path/to/submodule1 
git add path/to/submodule2 
git commit -m "Some commit msg" 

見ました。

今、BR2に切り替えてgit statusを実行すると、path/to/submodule1path/to/submodule2が追跡されていないファイルとして表示されることがわかりました。要点は、BR1にこれらのサブモジュールを追加したことです。なぜ彼らはBR2の中で追跡不能なものとして現れているのですか?また、私はBR2の下でこれらのサブモジュールをコミットしたくないので、どうやってそれらがBR2にトラッキングされないようにしますか?

ご協力いただければ幸いです。

EDIT:あなたが枝を切り替えるとBR2

On branch BR2 
Your branch is up-to-date with 'origin/master'. 
Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

    path/to/submodule1/ 
    path/to/submodule2/ 

nothing added to commit but untracked files present (use "git add" to track) 
+0

あなたの口頭での説明とともに、 'git status'の**正確な出力を表示してください。 –

+0

BR1の変更がコミットされた後、両方のブランチに 'git status'の正確な出力を追加しました。 – thisisshantzz

答えて

2

gitgit statusのBR1

git statusの 出力
On branch BR1 
nothing to commit, working tree clean 

出力は、サブモジュールのディレクトリの内容を削除しません。あなたはBR2に追加していないので、彼らは追跡されていないと表示されます。それらは無視しても問題ありません。

gitリポジトリ(これには.gitディレクトリが含まれている)なので、トップレベルのサブモジュールディレクトリはその内容ではなく、その代わりに表示されるので、gitはその内容を親に直接追加しようとしないという理論いずれの場合でもリポジトリ。

+0

.gitignoreにエントリを追加するのは安全なことでしょうか? – thisisshantzz

1

異なるサブモジュールセットを持つブランチがいくつかある場合は、2つの方法で処理することができます。

バリアント1:post-checkoutサブモジュールを処理するフック。このようなもの(私は実際にそのようなフックを持っています):

#!/bin/sh 

# post-checkout hook that switches submodules 

prev_HEAD="$1" 
new_HEAD="$2" 
new_branch="$3" 

if [ "$new_branch" = 1 ]; then 
    if ! cat .gitmodules | grep -Fq SUBMODULE1; then 
     rm -rf SUBMODULE1 SUBMODULE2 
    fi 

    git submodule update 
fi 

exit 0 

バリアント2:作業ツリー。私のgitは少し古いので、私はgit worktreeを使用しません。私はちょうどクローンを作成し、長命のブランチをチェックアウトし、クローンの異なるブランチを決してチェックアウトしなかった。

+0

あなたが作ったポストチェックアウトフックを実行するよりも、BR2のgitignoreにエントリを追加しない方が良いでしょうか? – thisisshantzz

+0

私の状況では、実際にはサブモジュールのセットが異なる3つのブランチがあるためではありませんでした。だから後で私は仕事場と長生きの枝で行くことにしました。ブランチ内のサブモジュールを無視するだけで満足すれば、どうしたらいいですか? – phd

関連する問題