Bagaimana cara checkout milik kita pada file di magit?

16

Katakanlah saya memiliki konflik gabungan. Saya melihat file yang konflik seperti ini:

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

Saya dapat menekan tab di sini untuk membuka perubahan dan mungkin melompat ke titik di dalam file untuk memperbaikinya dengan tangan, tetapi jika itu adalah file besar dengan banyak konflik yang dapat memakan waktu.

Bagaimana saya bisa meminta git, melalui magit, untuk memeriksa versi file kita atau mereka, untuk menyelesaikan konflik? Saya dapat menyalin path, lalu gunakan Shift-:untuk memasukkan perintah custom git, tetapi sepertinya harus ada pintasan keyboard untuk ini. Saya tidak dapat melihat sesuatu yang jelas di menu magit atau ?pop-up.

tenpn
sumber
3
Meskipun ini tidak langsung menjawab pertanyaan Anda, tetapi ini bisa bermanfaat. Pindahkan titik pada file konflik magit-statusdan tekan euntuk memulai penggabungan 3 arah ediff. Alternatif lain adalah bahwa dalam buffer konflik, Anda dapat mengaktifkan smerge-modeuntuk menyoroti konflik dan melakukan penggabungan interaktif di buffer Anda (bukan ediff). Pengikatan kunci awalan untuk smerge-modeperintah terkait adalah C-c ^; Anda dapat menekan C-c ^ C-huntuk melihat semua ikatan kunci.
Tu Do
Saya juga tidak menemukan "milik kita" atau "milik mereka" di dokumen. magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince
1
Sepertinya pertanyaan yang bagus untuk membuka permintaan fitur?
Ehvince
1
@Ehvince ide bagus, dilakukan: github.com/magit/magit/issues/1643
tenpn
1
Oooh: di versi selanjutnya dari magit Anda dapat kpada sebuah confict dan memilih versi mana yang akan disimpan. Kedengarannya sempurna! github.com/magit/magit/issues/1643
tenpn

Jawaban:

16

Saya tidak yakin kapan fitur ini ditambahkan, tetapi ia melakukannya dengan sempurna:

  1. Gabungkan satu cabang ke cabang lainnya dan temukan konflik
  2. Dalam Magit penyangga, akan ada bagian untuk Merging master, dan Unstaged changes, Staged changes. File yang konflik ada diUnstaged changes
  3. Pada baris dengan file yang bertentangan, tekan kuntuk membuang perubahan (yaitu, perubahan yang bertentangan)
  4. Di minibuffer, Anda akan melihat jawabannya:

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

Hut8
sumber
5

Ada beberapa solusi:

  • gunakan smerge-ediff. Di file dengan konflik, Anda menjalankan M-x smerge-ediff. Ini akan menempatkan Anda dalam mode tekad ediff, dengan empat buffer terbuka: milik Anda, milik mereka, gabungan, dan buffer perintah. Di buffer perintah, Anda menggunakan ndan puntuk pergi ke bagian berikutnya atau sebelumnya, "a" atau "b" untuk menerima perubahan dari buffer pertama atau kedua, atau Anda dapat pergi ke buffer gabungan, dan mengeditnya sesuai keinginan Anda.
  • gunakan ediff dari magit, dengan epada versi stabil dari magit, atau M-eatau M-m( magit-ediff-resolve) di cabang magit berikutnya, dan kemudian Anda akan menemukan diri Anda kebanyakan seperti dalam kasus pertama
  • ada juga smerge-mode, C-c ^ ndan C-c ^ pakan membantu Anda beralih dari sebongkah ke yang sebelumnya atau berikutnya, Anda kemudian dapat mengeditnya, atau gunakan C-c ^ ountuk menyimpan versi 'lain', C-c ^ muntuk mempertahankan versi 'milikku', C-c ^ buntuk mempertahankan yang lama versi dan C-c ^ auntuk menyimpan semuanya.
  • Anda dapat menggunakan magit-find-file untuk membuka file seperti di beberapa commit.
Resi
sumber
Saya belum melihat bahwa Tu Do sudah memiliki sebagian besar jawaban yang saya posting di sini. Sory
Rémi
Terima kasih untuk daftar lengkapnya, tapi saya kira jawabannya "apakah ada cara ringkas untuk mendapatkan versi Ours or Thiers" adalah tidak. :(
tenpn