2

マスターHEADにはいくつかの変更があり、現在のローカルの変更をヘッドとマージしようとしています。
矛盾する変更があるとします。gitただ拒否しpullます。

競合する変更があると表示されるので、この場合、競合するファイルが表示されると期待していますが、ローカルの変更を元に戻してからプルする必要があります。

     Master 
     /    \
  branch1  branch2 (local)
      \
   Master 

branch2が変更をマスターにコミットしようとすると失敗します。この場合はどうすればよいですか?手動でファイルを特定の場所にコピーし、プルしてからwinmergeを使用してファイルをマージしますか?またはマージするためのより良い方法はありますか?

を実行するgit pullと、ローカルの変更が上書きされると表示されるため、プルする前に変更を隠しておくかコミットします。

Istashまたはcommit変更を行った後pull stash pop、作業コピーの変更が上書きされることを示すのに失敗した場合。

ところで、リベースを試みても、どちらの場合も競合のあるファイルは表示されません。

4

2 に答える 2

3

この質問への答えは、ドキュメントのプレーンビューに隠されています。差出人git help merge


競合を解決する方法

競合を見た後、次の2つのことができます。

  • マージしないことを決定します。必要なクリーンアップは、インデックスファイルをHEADコミットにリセットして2.をリバースし、2。および3.によって行われた作業ツリーの変更をクリーンアップすることだけです。git merge --abortこれに使用できます。

  • 競合を解決します。Gitは、作業ツリーの競合をマークします。ファイルを形に編集git addし、インデックスに追加します。git commit取引を成立させるために使用します。

いくつかのツールを使用して、競合を解決できます。

  • mergetoolを使用します。 git mergetoolマージを実行するグ​​ラフィカルなmergetoolを起動します。

  • 違いを見てください。 git diffHEADバージョンとMERGE_HEADバージョンの両方からの変更を強調表示する3方向の差分が表示されます。

  • 各ブランチからの違いを見てください。 git log --merge -p <path>最初にHEADバージョンの差分が表示され、次にMERGE_HEADバージョンの差分が表示されます。

  • オリジナルを見てください。 git show :1:filenameは共通の祖先をgit show :2:filename示し、HEADバージョンをgit show :3:filename示し、MERGE_HEADバージョンを示します。

于 2012-08-24T19:50:43.083 に答える
1

GITを操作する最良の方法は、ブランチを用意することです。

ブランチ
1GITコミット
GITPUSHGIT
MERGEマスター(新しい変更をフェッチするため)

ブランチ
2GITコミット
GITPUSH

マスター
GITマージブランチ1GIT
マージブランチ2

私は他の方法はないと思います。私が間違っている場合は私を訂正してください?

これは正しいですか、はいの場合、この場合、ブランチでの作業はスムーズです!

于 2012-08-25T09:33:04.200 に答える