Pertanyaan git rebase - terus tidak akan berfungsi


aku melakukannya git rebase master, memperbaiki konflik yang dilaporkan dalam file, dan kemudian git add file untuk menyelesaikan konflik. Lalu saya melakukannya git rebase --continue, dan dapatkan ini:

Menerapkan: Tes unit tetap

Tidak ada perubahan - apakah Anda lupa menggunakan 'git   menambahkan'? Jika tidak ada yang tersisa di panggung, kemungkinan itu sesuatu   lain sudah memperkenalkan perubahan yang sama; Anda mungkin ingin melewatkan ini   tambalan.

Ketika Anda telah menyelesaikan masalah ini, jalankan "git rebase - lanjutkan". Jika   Anda lebih memilih untuk melewati patch ini, jalankan "git rebase - skat" sebagai gantinya. Untuk   periksa cabang asli dan berhenti rebase, jalankan "git rebase   --menggugurkan".

Tahu apa yang saya rindukan di sini? Haruskah saya melakukan git rebase --skip?


32
2018-02-19 18:55


asal


Jawaban:


Jika Anda berada di Mac OS X, maka pertama-tama Anda harus menonaktifkannya revisiond, karena dapat mengacaukan file di pohon pekerjaan Anda di tengah-tengah rebase, menyebabkan perilaku tak terduga dan rusak:

git config --global core.trustctime false

Masalahnya dijelaskan dalam artikel ini, dan terima kasih banyak @nickfalk siapa yang menunjukkannya.

Adapun rebase Anda, situasi semacam ini tidak biasa dalam praktek. Mari kita coba memikirkan langkah-langkah apa yang sedang terjadi:

  • Ketika Anda me-rebase cabang saat ini di atas cabang lain, git memindahkan HEAD ke cabang lain, dan mulai menerapkan komitmen unik yang Anda miliki di cabang Anda saat ini.

  • Saat mengulang salah satu dari mereka yang melakukan, Anda mencapai konflik. Anda mengatasinya, tetapi sebagai akibatnya tidak ada perubahan yang perlu dilakukan, tidak ada yang perlu diulangi dalam commit ini.

Secara praktis, ini berarti Anda menolak perubahan dalam komitmen saat ini yang sedang diputar ulang. Jadi, jika Anda tidak memerlukan apa pun dari komitmen ini, itu normal untuk melewatinya. Begitu git rebase --skip masuk akal di sini.


25
2018-02-19 19:56



Nafas, kamu tidak akan gila! ; - = Ini adalah bug yang dikenal di mana OSX (jika memang itu yang Anda gunakan) sedang mengotak-atik git, itu rinci sini (bukan oleh saya).

Cerita pendek (yaitu perbaikan) adalah:

git config --global core.trustctime false

3
2018-02-19 19:05



Saya memiliki masalah yang sama dalam proyek saya dan dipecahkan dengan menempatkan --preserve-menyatu pilihan untuk perintah rebase. Dalam proyek saya, masalah ini disebabkan oleh gabungan komit, yang merupakan "komitmen kosong". Menggunakan git rebase --preserve-merges Dibutuhkan gabungan komit dan terus penggabungan tanpa melanggar pohon komit.


1
2018-04-12 21:36



Itu bisa berarti bahwa perubahan sudah di-rebased. Cukup periksa status git.


0
2018-02-19 18:59