[解決済み] .gitignoreにあるgitサブモジュールを無視するか、それとも自分のレポにコミットするか?
質問
私は、プロジェクトにサブモジュールを
project_dir/vendor/submodule_one
を実行するたびに
git status
を実行すると
modified: vendor/submodule_one (new commits)
.
私の質問は、これに対処する最良の方法は何かということです。私は
vendor/submodule_one
-フォルダーを
.gitignore
を追加することで、メインプロジェクトがサブモジュールの仕様について知る必要はないのでは?
それとも、サブモジュールを変更してコミットするとき、メインプロジェクトでもコミットする必要があるのでしょうか?
サブモジュールを使い始めたばかりで、それらを設定する以上の情報を見つけることができなかったようです。
どのように解決するのですか?
いいえ、サブモジュールを
.gitignore
に追加する必要はありません: あなたのサブモジュールから親に見えるのは
gitlink
(a
の特別なエントリです。
mode 160000
).
つまり、サブモジュールで直接行われた変更は、親ディレクトリでのコミットに続く必要があります。
そうすることで、親ディレクトリはサブモジュールの状態に対して正しいコミットを記録することになります。そのコミットとは、上で述べた "gitlink" です。
この方針については、"
git サブモジュールの更新 (サブモジュールの真の姿)
"を参照してください。
サブモジュールの主な考え方は
コンポーネントベースのアプローチ
で、特定のコミットで他のレポを参照するものです。しかし、それらのサブモジュールで何かを変更した場合、親リポジトリのそれらの参照も更新する必要があります。
なお、Git 2.13(2017年第2四半期)では、一方 ではなく でサブモジュールを無視しても、gitlinkを無視することができます。
git config submodule.<name>.active false
詳しくは"でご覧ください。 git サブモジュールの新しいコミットを無視する "です。
注意:Git 2.15.x/2.16 (Q1 2018) では、サブモジュールを無視する方がより正確です。
"
git status --ignored --untracked
" は、無視されたディレクトリに組み込まれている別のプロジェクトの作業ツリーで停止せず、ディレクトリ自体を無視として表示するだけでなく、その別のプロジェクトのファイルをリストアップしました。
参照
コミット fadb482
(2017年10月25日)による
Johannes Schindelin (
dscho
)
.
(によって統合されました。
ジュニオ・C・ハマノ--。
gitster
--
で
コミット da7996a
, 2017年11月06日)
status
: 除外されたディレクトリにあるサブモジュールに惑わされないようにします。私たちは細心の注意を払って
exclude
フラグをtreat_directory()
フラグを追加し、再帰時にその中のファイルが追跡されないのではなく、除外されることを示すことができるようにしました。しかし、私たちはまだサブモジュールを同じように扱っていませんでした。
そのため
git status --ignored --untracked
をサブモジュールとしsubmodule
を、gitignored のtracked/
にあるサブモジュールが表示されます。 " です。Untracked files
"セクション、例:。
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
tracked/submodule/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/initial.t
<ブロッククオート
代わりに、サブモジュールを " に表示させたいと思います。
Ignored files
"
セクションを作成します。
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/
関連
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git でファイルの一部分のみをコミットする
-
[解決済み] Git にファイルモード (chmod) の変更を無視させるには?
-
[解決済み] .gitignoreで一部のファイル以外を無視するようにする
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
-
[解決済み] Git: リモートブランチの情報を更新する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解决[email protected]。パーミッションが拒否されました (publickey)。リモートリポジトリから読み取れませんでした
-
エラーが発生しました。マージされていないファイルがあるため、プリングはできません
-
gpg: "xxx" をスキップ: 秘密鍵のための1つの解決策が利用できない
-
git push please tell me who you are or git fatal: empty ident name (for <>) not llowed.
-
[解決済み】Gitサブモジュールのアップデート
-
[解決済み] Git: 'modified content' /dirty サブモジュールのエントリを status や diff などで表示させないようにできますか?
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] Git git reset」後にコミットメッセージを再利用/保持するには?
-
[解決済み] GitとSSH、どちらのキーを使うか?
-
[解決済み] Git タグリスト、コミット sha1 ハッシュの表示