問題タブ [git-merge-conflict]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
585 参照

git - Git Cherry Pick の競合について

最近、SVN から GIT に切り替えましたが、以前のワークフローの変換に問題があります。ほとんどすべてが機能しますが、今日は奇妙なチェリーピックの競合が発生しました。

競合を解決することはできますが、これがどこから来たのかを知りたいです。私の理解では、この状況では競合が発生するべきではないからです。

設定

私たちのリポジトリには、master開発するブランチがあります。年に 4 回、新しいバージョンをリリースします。に分岐masterRelease-x、これはテスト後に出荷されます。

同時に複数のリリース バージョンを運用しています。バグが見つかった場合は、すべての (サポートされている) リリース ブランチで修正する必要があります。そのため、タグを使用してさまざまなリリースを識別する単一のリリース ブランチは、有効なワークフローではありません。

したがって、現在、次のブランチがあります: masterRelease-15Q1Release-15Q2およびRelease-15Q3

たとえば、でバグの原因となるタイプミスを見つけたとmasterします。それを修正してcherry-pickからRelease-15Q1Release-15Q2Release-15Q3

だから、今私が直面している紛争に:

ファイルは、分岐後properties.datに で変更されましたmasterRelease-15Q3

Properties.dat ( Release-15Q3)

Properties.dat ( master)

開発は進みました... すべて順調です。その後、バグを無効にするためにファイルに追加のプロパティを追加する必要があるバグに気付きました。

Properties.dat ( master)

この修正コミットは、他の 3 つのブランチにも適用する必要があります。そこで、各ブランチに移動して、cherry-pick コマンドを使用します。

これにより、最初の 3 行で競合が発生しますが、その理由がよくわかりません。

チェリーピッキングでは、その特定のコミットのみを再生すると想定していたので、適切な場所にallowBug=false行を追加するだけです。ブランチをマージしていないので、他の変更が行われたかどうかは問題ではありませんよね?

なぜこれが競合を引き起こしているのですか?これらの他の変更は無視されるべきではありませんか?

0 投票する
1 に答える
415 参照

git - 個々の親からの git diff を表示する

たとえば、マージの競合が表示され、なんとか修正できましたが、解決済みとしてマークされていません (つまり、git add競合しているファイルをまだ処理していません)。この時点でgit diff、結果のファイルが各親とどのように異なるかを、結合された diff 形式で表示できます。

これまでのところすべて順調です。ここで、結果ファイルが個々の親とどのように異なるかを個別に調べたいと思いました。確かに、2 つの親 (cherry-pick、rebase など) が関与するマージ競合の場合、 git diff --oursorを使用できますgit diff --theirsが、これをより多くの親に拡張するにはどうすればよいでしょうか?

つまり、3 人の親から競合が発生した場合、各親との個別の差分を表示することは可能ですか?

--oursまた、私の発見--theirsはかなり偶然でした。差分コンテキストで文書化された使用法を見つけることができませんでした。

0 投票する
2 に答える
2017 参照

git - git pull origin branch は、クリーンな現在の master ブランチでのマージを望んでいます

私は完全にきれいなマスターブランチにいます(ただし、gitは、origin / masterよりも14コミット進んでいることを示しています)。オリジン (Eagle) から別のブランチを取得しようとすると、git からいくつかのファイルをマージするように求められます。

これは私が期待するものではありません: ブランチをプルするときは、リモート ブランチをインポートし、現在の HEAD をそのままにしておく必要があり、マージの競合に悩まされることはありません。私の認識では、2 つの支部は別々に住んでいますが、衝突することなく互いに平和に暮らしています。しかし、この認識はもはや当てはまりません。

これらの競合の原因と、マージせずに 2 つの異なるブランチを復元する方法は?

コマンドラインでの git セッションのトランスクリプトの下。

0 投票する
2 に答える
7461 参照

git - 選択したファイルの競合を無視するために Git マージを取得するにはどうすればよいですか?

フィーチャー ブランチをマスター ブランチにマージしており、マスター ブランチ内のファイルの一部を上書きしたいと考えています。上書きしたいファイルには通常、テキスト構成とテキストとしてエンコードされたバイナリデータが含まれているため、問題が発生する可能性があり、とにかく気にしません。これらは、マスター内のものを置き換えることを目的としています。

競合を無視して上書きするにはどうすればよいですか?

0 投票する
10 に答える
234760 参照

git - 「マスターの背後にある 1 つのコミット」を解決するにはどうすればよいですか?

プッシュした後、リモートリポジトリで次のメッセージが表示されました。

マスターの後ろに 1 コミット。

このマージには、コミットする前に解決する必要がある競合があります。

これらの変更を TA20footerLast に手動でマージするには、次のコマンドを実行します。

git checkout 7c891f50c557

: これにより、切り離された頭が作成されます。

git merge remotes/origin/master

0 投票する
3 に答える
1585 参照

git - マージの競合が発生するのはなぜですか?

これは、私の git リポジトリの最初のスナップショットです。

ここに画像の説明を入力

ブランチmasterでは、ファイルに次のm1内容が含まれます

ブランチdevでは、ファイルに次のm1内容が含まれます

devからマージしようとするとmaster、競合が発生します。

m1inの 2 行目は変更していませんがmaster、どのように競合が発生したのでしょうか?

ファイルの実際の内容を確認し、これが空白によるものかどうかを確認するには:

ブランチ上master

ブランチ上dev

このリポジトリを作成するために使用したスクリプトは次のとおりです。

0 投票する
2 に答える
6837 参照

ruby-on-rails - Workspace.xml との Git マージの競合

Rails プロジェクトを Heroku にプッシュしようとしていますが、現時点では Git で何もできません。これまでに行ったことは次のとおりです。

  • git push herokuheroku ブランチが私のローカル ブランチよりも「進んでいた」ため、失敗しました。
  • 引っ張ったところ、 と競合がありました.idea/workspace.xml。そのファイルが何であるかはわかりませんでしたが、巨大で、Git があらゆる種類の文字化けを書き込んでいました。競合を手動で「解決」するには多すぎます。
  • そのファイルをgit-ignoringすることについて話しているstackoverflowの投稿をいくつか見たので(おそらくRubyMineのIDEファイルか何か?)、競合を避けるためにファイルを移動しようとしました
  • 私は走ったgit add -A(また試しgit add .てみたgit add
  • git commit --amend「あなたはマージの途中です」という理由で失敗します
  • git merge --abort「追跡されていない作業ツリー ファイル '.idea/workspace.xml' がマージによって上書きされるため失敗します (ファイルが移動されたにもかかわらず)
  • git reset --merge同じ理由で失敗します。

Git を再び機能させるにはどうすればよいですか?

0 投票する
1 に答える
2076 参照

git - 競合を解決した後、git がすべてのファイルをマージしない

これが既知の問題かどうかはわかりませんが、何が起こったのか見てみましょう。

  1. マスターから機能ブランチを作成し、機能の作業を開始します

  2. マスターは、自分の機能ブランチにまだない他の機能で更新されています。

  3. フィーチャー ブランチの処理が完了し、master をフィーチャー ブランチにマージして、master へのプル リクエストを作成する前に問題を解決します。また、マスターをチェックアウトし、オリジンから git pull してマスターの最新のコピーを取得します。

  4. git merge master機能ブランチで実行すると、マージの競合が発生します。
    これらの競合を解決し、すべて (競合ファイルと新しい/変更されたファイル) を追加してからコミットします。

  5. git merge master機能ブランチで再度実行すると、Already up-to-date.

今私の問題は、一部のファイルがマスターからマージされていないことです。マスターには明らかに変更されたファイルがありますが、マージで取得されませんでした。そのため、プルリクエストを行うと、触れたことのない特定のファイルを変更し、マスターの変更を元に戻そうとしています。

私が間違っていたことと、この問題を解決する方法を誰か教えてもらえますか?