rebase sedang berlangsung. Tidak dapat melakukan Bagaimana cara melanjutkan atau menghentikan (batalkan)?

139

Ketika saya menjalankan:

git status

Saya melihat ini:

rebase in progress; onto 9c168a5
You are currently rebasing branch 'master' on '9c168a5'.
(all conflicts fixed: run "git rebase --continue")
nothing to commit, working directory clean

Ketika saya melakukannya:

ls `git rev-parse --git-dir` | grep rebase || echo no rebase

Begitu: rebase-apply

Saya tidak bisa berkomitmen pada asal.

git branch

Menunjukkan:

* (no branch, rebasing master)
  develop
  master

Aku terjebak. Saya tidak tahu harus berbuat apa? Apakah butuh waktu lama untuk rebase? git rebase --continuetidak melakukan apa-apa. Saya tidak memiliki apa pun dalam status git .. Saya hanya menunggu rebase. Apa yang dapat saya?

UDATE: Ini adalah output dari: git rebase --continue

Applying: no message
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

git add. tidak punya apa-apa.

Joseph Chambers
sumber

Jawaban:

255

Rebase tidak terjadi di latar belakang. "rebase dalam proses" berarti Anda memulai rebase, dan rebase itu terputus karena konflik. Anda harus melanjutkan rebase ( git rebase --continue) atau membatalkannya ( git rebase --abort).

Sebagai pesan kesalahan dari git rebase --continuemenyarankan, Anda meminta git untuk menerapkan tambalan yang menghasilkan tambalan kosong. Kemungkinan besar, ini berarti tambalan sudah diterapkan dan Anda ingin menjatuhkannya menggunakan git rebase --skip.

Matthieu Moy
sumber
Saya memperbarui posting untuk memasukkan git rebase - lanjutkan per permintaan Anda.
Joseph Chambers
2
OK, lalu "itu rebase - lanjutkan tidak melakukan apa-apa" tidak akurat. Anda seharusnya menulis "git rebase --melanjutkan kesalahan sebagai berikut ..." untuk mendapatkan bantuan.
Matthieu Moy
3
Dokumentasi ini sangat buruk, itu terus berulang bahwa Anda 'git rebase --continue' dan Anda akan berakhir dengan cara yang tak terbatas mengatakan itu.
Jean-Paul
6
git rebase --skip berhasil!
Borzh
Karena ini adalah pertanyaan untuk pemula relatif (seperti saya) saya pikir nilainya menyebutkan semua pembicaraan ini menjalankan ini atau itu - memerlukan membuka terminal baru dan kembali ke repo ... tidak ada yang akan berjalan dalam contoh saya dari masalah ini tanpa melakukan itu,
Kdean571
10

Saya terjebak dalam 'status rebase', saya mengerti

On branch master
Your branch is up to date with 'origin/master'.

You are currently rebasing.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working tree clean

tetapi berlari git rebase --skipmenghasilkan error: could not read '.git/rebase-apply/head-name': No such file or directory.

Berlari rm -fr ".git/rebase-apply"membantu.

Catatan: tentu saja, lakukan hanya jika Anda tidak peduli dengan rebase atau jika Anda terjebak pada rebase sebelumnya yang tidak Anda inginkan lagi.

mata angin
sumber
8
  • Langkah 1: Terus berjalan git rebase --continue

  • Langkah 2: perbaiki KONFLIK git add .

  • Kembali ke langkah 1, sekarang jika dikatakan no changes ..lalu jalankan git rebase --skipkemudian kembali ke langkah 1

  • Jika Anda hanya ingin berhenti menjalankan rebase git rebase --abort

  • Setelah semua perubahan selesai jalankan git commit -m "rebase complete"dan Anda selesai.

Ani Menon
sumber
6

Anda mengatakan repositori Anda untuk rebase. Sepertinya Anda sedang komit (diidentifikasi oleh SHA 9c168a5) dan kemudian melakukan git rebase masteratau git pull --rebase master.

Anda rebising master cabang ke komit itu. Anda dapat mengakhiri rebase melalui git rebase --abort. Ini akan mengembalikan pada keadaan di mana Anda berada sebelum Anda mulai rebasing.

Schleis
sumber
Saya tidak pernah melakukan git rebase/pull --rebase master. Saya sering berakhir di negara ini ... karena konflik. Saya mengubah file, melakukan tarik, mengembalikan perubahan saya dan patch baru kosong yang menyakiti otak git yang kemudian memutuskan untuk memasuki "mode rebase" ini ...
Alexis Wilke
6

Saya masuk ke kondisi ini baru-baru ini. Setelah menyelesaikan konflik selama rebase, saya melakukan perubahan, bukan menjalankan git rebase --continue. Ini menghasilkan pesan yang sama Anda lihat ketika Anda berlari Anda git statusdan git rebase --continueperintah. Saya menyelesaikan masalah dengan menjalankan git rebase --abort, dan menjalankan kembali rebase. Seseorang mungkin juga bisa melewatkan rebase, tapi aku tidak yakin keadaan apa yang akan meninggalkanku.

$ git rebase --continue
Applying: <commit message>
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

$ git status
rebase in progress; onto 4df0775
You are currently rebasing branch '<local-branch-name>' on '4df0775'.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working directory clean
jsears
sumber
Selain --abort(+1), Anda sekarang memiliki --quit( stackoverflow.com/a/41363262/6309 )
VonC
Setelah memperbaiki konflik. lalu panggil git commit. lakukan beberapa pekerjaan lain, lalu panggil git commit lagi. Jika menggunakan metode ini git rebase --abort, semua pekerjaan yang Anda lakukan setelah melakukan konflik akan dihapus. Jadi berhati
Jin
3

Jika git rebase --aborttidak berhasil dan Anda masih mendapatkan

error: tidak dapat membaca '. git / rebase-apply / head-name': Tidak ada file atau direktori tersebut

Tipe:

git rebase --quit
Panda-313
sumber
0

Saya mengatur saya gitke autorebase pada agit checkout

# in my ~/.gitconfig file
[branch]
    autosetupmerge = always
    autosetuprebase = always

Kalau tidak, secara otomatis akan menyatu ketika Anda beralih di antara cabang, yang saya pikir adalah pilihan terburuk yang mungkin sebagai default.

Namun, ini memiliki efek samping, ketika saya beralih ke cabang dan kemudian git cherry-pick <commit-id>saya berakhir dalam keadaan aneh ini setiap kali ada konflik.

Saya benar-benar harus membatalkan rebase, tetapi pertama saya memperbaiki konflik, git add /path/to/filefile (cara lain yang sangat aneh untuk menyelesaikan konflik dalam kasus ini ?!), kemudian lakukan a git commit -i /path/to/file. Sekarang saya dapat membatalkan rebase:

git checkout <other-branch>
git cherry-pick <commit-id>
...edit-conflict(s)...
git add path/to/file
git commit -i path/to/file
git rebase --abort
git commit .
git push --force origin <other-branch>

Yang kedua git commit .tampaknya berasal dari aborsi. Saya akan memperbaiki jawaban saya jika saya tahu bahwa saya harus membatalkan rebaselebih cepat.

The --forcepush yang diperlukan jika Anda melewatkan komit lain dan kedua cabang tidak halus (keduanya hilang komit dari yang lain).

Alexis Wilke
sumber
"Kalau tidak, secara otomatis akan menyatu ketika Anda beralih antar cabang" - Um, no. Git tidak melakukan penggabungan atau rebase apa pun saat Anda berganti cabang. autosetupmergeada hubungannya dengan bagaimana git pulldikonfigurasi untuk cabang baru.
Marnen Laibow-Koser
Pada saat ini ketika saya sedang berjuang dengan masalah itu, itu pasti melakukan semacam penggabungan berbagai kode. Pengaturan saya saat ini tampaknya melewatkan masalah itu. Ada juga masalah jika Anda tidak melakukan + push pada cabang Anda saat ini sebelum mencoba untuk beralih.
Alexis Wilke
Git akan memberi tahu Anda jika perubahan yang tidak dikomit akan mencegah peralihan cabang, jadi tidak ada yang perlu dikhawatirkan, bukan? Atau apakah Anda berbicara tentang sesuatu yang lain?
Marnen Laibow-Koser
0

Pilihan lain untuk ABORT / SKIP / CONTINUE dari IDE

VCS> Git> Abort Rebasing

masukkan deskripsi gambar di sini

Prab
sumber
0

Milik saya adalah kesalahan yang muncul dari BitBucket. Ran git am --skipmemperbaikinya.

Kevin Aung
sumber