magitのファイルをチェックアウトする方法は?


16

マージの競合があるとしましょう。次のような競合ファイルが表示されます。

Unstaged changes:
    Unmerged   Foo/bar/wibble/plop/elbow.txt

ここでTabキーを押して変更を開き、ファイル内の特定の場所にジャンプして手動で修正することもできますが、大きなファイルの場合は多くの競合が発生し、時間がかかる可能性があります。

競合を解決するために、gitにmagitを介してファイルのoursまたはtheirsバージョンをチェックアウトする方法を教えてください。パスをコピーしてからを使用Shift-:してカスタムgitコマンドを入力できますが、これにはキーボードショートカットが必要なようです。magitメニューまたは?ポップアップに明らかなものが表示されません。


3
これはあなたの質問に直接答えるわけではありませんが、役に立つかもしれません。競合ファイルのポイントを移動しmagit-status、を押しeてで3者間マージを開始しediffます。もう1つの方法は、競合バッファーで、smerge-mode競合の強調表示をオンにして、バッファー内で(ediffではなく)インタラクティブなマージを実行できることです。smerge-mode関連コマンドのプレフィックスキーバインディングはC-c ^;です。を押すC-c ^ C-hと、すべてのキーバインディングを表示できます。
火ドゥ

ドキュメントにも「私たち」や「彼ら」は見つかりません。magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince

1
機能リクエストを開くには良い質問のように見えますか?
エビンス14年

1
良いアイデア@Ehvince、完了:github.com/magit/magit/issues/1643
tenpn

1
Oooh:magitの次のバージョンでは、confictでk保持するバージョンを選択できます。いいね!github.com/magit/magit/issues/1643
tenpn

回答:


16

この機能がいつ追加されたのかはわかりませんが、これは完璧です。

  1. あるブランチを別のブランチにマージして競合が発生する
  2. Magitバッファでは、そこのためのセクションとなりMerging master、そしてUnstaged changesStaged changes。競合するファイルはUnstaged changes
  3. 競合するファイルがある行で、ヒットkして変更(つまり、競合する変更)を破棄します。
  4. ミニバッファーには、答えが表示されます。

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort


5

いくつかの解決策があります。

  • smerge-ediffを使用します。競合のあるファイルで、を実行しM-x smerge-ediffます。4つのオープンバッファー(yours、theirs、merge、およびcommandバッファー)を使用して、ediff解決モードに入ります。コマンドバッファーでは、とを使用npて次または前のハンク、「a」または「b」に移動して最初または2番目のバッファーからの変更を受け入れるか、マージバッファーに移動して好みに合わせて編集できます。
  • magitのediffをmagit eの安定版で使用するか、M-eまたはM-mmagit-ediff-resolve)をmagitの次のブランチで使用すると、最初のケースとほぼ同じようになります。
  • そこsmergeモードもあり、C-c ^ nそしてC-c ^ pあなたがして編集彼らは、または使用することができ、あなたが前または次のいずれかに塊から行くのに役立ちますC-c ^ o、「その他」のバージョンを維持するためのC-c ^ m「地雷」バージョンを維持するために、C-c ^ b古いを維持するためにバージョンとC-c ^ aそれらをすべて保持します。
  • magit-find-fileを使用して、コミット時と同じようにファイルを開くことができます。

私がここに投稿した回答のほとんどがTu Doに既にあることは知りませんでした。ソリー
レミ14年

包括的なリストに感謝しますが、「OursまたはThiersのバージョンを取得するための簡潔な方法はありますか」という答えはノーだと思います。:(
tenpn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.