[解決済み] git サブモジュールのコンフリクトを管理するにはどうしたらいいですか?
質問
いくつかのサブモジュールを参照する git スーパープロジェクトがあり、プロジェクトの他のメンバーが作業するためのワークフローを固定化しようとしています。
この質問では、私のスーパープロジェクトの名称を
supery
で、サブモジュールの名前は
subby
. (これは私がやろうとしていることを単純化したものです。私は実際にはバージョンにブランチを使用していませんが、質問としてレイアウトするのが最も簡単だと思いました)。
私のmasterブランチの
supery
は、タグ
v1.0
gitプロジェクトの
subby
サブモジュールとして参照されます。のブランチは
supery
という
one.one
というタグを指すようにサブモジュールの参照を変更しました。
v1.1
の
subby
.
これらの各ブランチの中では問題なく作業できるのですが、もし私が
one.one
ブランチからの変更で
master
ブランチでいくつかのコンフリクトが発生し、それをどのように解決したらよいのかわかりません。
基本的には
git pull . master
の中で
subby
ブランチでは、追加のサブモジュールを作成するようです。
プル/マージの前に、私は希望するレスポンスを
git submodule
から
one.one
のブランチを作成します。
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
しかし、プルした後、次のように実行すると、追加のサブモジュールが追加されます。
git submodule
:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e
Automatic merge failed; fix conflicts and then commit the results.
$ git submodule
qw3rty...321e subby (v1.0)
asdfgh...456d subby (v1.1)
zxcvbn...7890 subby (v1.1~1)
不要なサブモジュールの参照を削除/無視し、コンフリクトと変更をコミットするにはどうすればよいですか?あるいは、私のオリジナルの
git pull
を使えば、サブモジュールを無視することができますか?
解決方法は?
そのようなエラーは見たことがありません。しかし、あなたが遭遇しているトラブルについて推測することができます。どうやら
master
と
one.one
の枝
supery
には異なる参照元が含まれています。
subby
サブモジュールの変更をマージする際に
master
git はどの参照元が -
v1.0
または
v1.1
- が保持され、追跡される必要があります。
one.one
の分岐になります。
supery
.
その場合は、必要な参照を選択し、その変更をコミットして競合を解決する必要があります。これはまさに、あなたが リセット コマンドを使用します。
これは、あるサブモジュールの異なるバージョンをプロジェクトの異なるブランチで追跡するという、やっかいな側面があります。しかし、サブモジュールの参照は、プロジェクトの他のコンポーネントと同じです。もし二つの異なるブランチが、連続したマージの後でも同じサブモジュール ref を追跡し続けるなら、git は将来のマージでマージの衝突を起こすことなくそのパターンを解決できるはずです。一方、サブモジュール参照が頻繁に入れ替わるような場合は、多くの衝突を解決しなければならないかもしれません。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] 2つのリビジョン間でどのファイルが変更されたかを表示する
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルの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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み】Githubの認証に失敗した - ... GitHubはシェルアクセスを提供しない
-
[解決済み】Git Extensions。Win32 エラー 487: cygwinのヒープ用に領域を確保できなかった、Win32エラー0
-
[解決済み] [Solved] originにプッシュしようとすると、Gitが「No such remote 'origin'」と言うのはなぜですか?
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] ERROR: リモートレポ 'origin' のクローン作成に失敗しました。
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] VSTS Git Fetch Failed with exit code: 128
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] Git作者不明