Edit pesan komit di SourceTree Windows (sudah didorong ke jarak jauh)

203

Bagaimana cara mengedit pesan komit yang salah di SourceTree tanpa menyentuh baris perintah?

Detil tambahan:

  • Ini bukan komit terbaru.
  • Semuanya sudah didorong ke Bitbucket.
  • Ini adalah repositori pribadi dan saya satu-satunya kolaborator.
  • Saya tidak keberatan kehilangan komitmen sebelumnya, karena saya dapat melakukan komitmen ulang kapan saja.
  • Namun saya tidak ingin kehilangan modifikasi kode yang pernah dibuat.

Hasil:

  • Karena tampaknya tidak mungkin saat ini sesuai dengan komentar dan balasan Anda, saya akan membuat repositori baru dan memulai dari awal. Terima kasih atas bantuan Anda!
Masyarakat
sumber

Jawaban:

427

Berikut adalah langkah-langkah untuk mengedit pesan komit dari komit sebelumnya ( yang bukan komit terbaru ) menggunakan SourceTree untuk Windows versi 1.5.2.0 :

Langkah 1

Pilih komit segera sebelum komit yang ingin Anda edit. Misalnya, jika saya ingin mengedit komit dengan pesan "FOOBAR!" maka saya perlu memilih komit yang datang tepat sebelum itu:

Memilih komit sebelum yang ingin saya edit.

Langkah 2

Klik kanan pada komit yang dipilih dan klik Rebase children...interactively:

Memilih "Rebase anak-anak secara interaktif".

Langkah 3

Pilih komit yang ingin Anda edit, lalu klik Edit Messagedi bagian bawah. Dalam hal ini, saya memilih komit dengan pesan "FOOBAR!":

Pilih komit yang ingin Anda edit.

Langkah 4

Edit pesan komit, lalu klik OK. Dalam contoh saya, saya telah menambahkan "SHAZBOT! SKADOOSH!"

Edit pesan komit

Langkah 5

Ketika Anda kembali ke jendela rebase interaktif, klik OKuntuk menyelesaikan rebase:

Klik OK untuk menyelesaikan.

Langkah 6

Pada titik ini, Anda perlu mendorong-paksa perubahan baru Anda karena Anda telah melakukan rebed terhadap komitmen yang sudah Anda dorong. Namun, SourceTree untuk Windows versi 1.5.2.0 saat ini tidak memungkinkan Anda untuk memaksa-paksa melalui GUI, jadi Anda harus menggunakan Git dari baris perintah untuk melakukan itu.

Klik Terminaldari GUI untuk membuka terminal.

Klik Terminal

Langkah 7

Dari terminal force-push dengan perintah berikut,

git push origin <branch> -f

di mana <branch>nama cabang yang ingin Anda tekan, dan -fartinya untuk memaksa push. Dorongan paksa akan menimpa komit Anda pada repo jarak jauh Anda, tetapi tidak apa-apa dalam kasus Anda karena Anda mengatakan bahwa Anda tidak membagikan repo Anda dengan orang lain.

Itu dia! Kamu sudah selesai!


sumber
4
Langkah-langkah pada dasarnya sama pada versi Mac juga.
race_carr
3
Hati-hati: Jika Anda ingin memulai pesan komit Anda dengan # ini tidak akan berfungsi, git memperlakukannya sebagai komentar dan memberi tahu Anda pesan komit Anda kosong!
Daniel Edholm Ignat
1
"Itu dia! Kamu sudah selesai!" - Sangat mudah karena aku tidak tahu apa, seperti menangkap kelinci. Alih-alih membuat fitur program, untuk situasi yang begitu penting dan sering dilihat. Ketika Anda baru saja membuat kesalahan ketik, Anda harus mengatur ulang kepala dan membuat komit baru lagi.
Rantiev
67
Lucu - Saya heran mengapa mereka tidak membuat opsi "Edit Pesan Komit" yang sederhana.
Jonathan Aquino
1
Force Push sekarang tersedia melalui GUI. Kalau tidak SEMPURNA :-)
LaTisha
43

Pada Versi 1.9.6.1. Untuk komit UnPushed.

  1. Klik pada deskripsi yang sebelumnya dilakukan
  2. Klik ikon Komit
  3. Masukkan pesan komit baru, dan pilih " Ubah komit terbaru " dari dropdown opsi Komit.
  4. Komit pesan Anda.
Franc
sumber
13

Jika pesan komentar menyertakan karakter non-Inggris , menggunakan metode yang disediakan oleh user456814, karakter tersebut akan diganti dengan tanda tanya. (diuji di bawah sourcetree Ver2.5.5.0)

Jadi saya harus menggunakan metode berikut.

PERHATIAN : jika komit telah ditarik oleh anggota lain, perubahan di bawah ini dapat menyebabkan kekacauan bagi mereka.

Langkah 1 : Pada jendela utama sourcetree, cari tab repo Anda, dan klik " terminal " tombol untuk membuka perintah git konsol.

Langkah2 :

[Situasi A] : target komit adalah yang terbaru.

1) Di konsol perintah git, masukan

git commit --amend -m "new comment message"

2) Jika komit target telah didorong ke jarak jauh, Anda harus mendorong lagi dengan paksa. Di konsol perintah git, masukan

git push --force

[Situasi B] : target komit bukan yang terbaru.

1) Di konsol perintah git, masukan

git rebase -i HEAD~n

Hal ini untuk squash terbaru n komit. mis. jika Anda ingin mengedit pesan sebelum yang terakhir, n adalah 2. Perintah ini akan membuka jendela vi, kata pertama dari setiap baris adalah " pick ", dan Anda mengubah "pick" menjadi " reword " untuk baris tersebut Anda ingin mengedit. Kemudian, masukan :wquntuk menyimpan & keluar dari jendela vi itu. Sekarang, jendela vi baru akan terbuka, di jendela ini Anda memasukkan pesan baru Anda. Juga digunakan :wquntuk menyimpan & keluar.

2) Jika komit target telah didorong ke jarak jauh, Anda harus mendorong lagi dengan paksa. Di konsol perintah git, masukan

git push --force


Akhirnya : Di jendela utama sourcetree, Tekan F5untuk menyegarkan.

Hosi Golden
sumber
12

Memperbarui

Catatan: jawaban ini awalnya ditulis berkaitan dengan versi SourceTree untuk Windows yang lebih lama, dan sekarang kedaluwarsa.

Lihat jawaban baru saya untuk versi SourceTree untuk Windows saat ini, 1.5.2.0 . Saya meninggalkan jawaban ini untuk tujuan historis.

Jawaban Asli

karena saya menggunakan Windows, saya tidak memiliki alat baris perintah atau saya tidak tahu cara menggunakannya :( Apakah ini satu-satunya cara untuk menyelesaikannya? GUI tidak mencakup semua fungsi git? - Poster Asli

Mengenai Git GUI, tidak, mereka tidak mencakup semua fungsi Git . Mereka bahkan tidak mendekati . Saya sarankan Anda memeriksa salah satu jawaban di Bagaimana cara mengedit pesan komit yang salah di Git? , Git cukup fleksibel sehingga ada beberapa solusi ... dari baris perintah.

SourceTree mungkin benar-benar datang dengan shell bash msysgit, atau mungkin dapat menggunakan shell perintah Windows standar. Apa pun itu, Anda membukanya dari SourceTree dengan mengklik tombol Terminal:

masukkan deskripsi gambar di sini

Anda mengatur terminal mana yang digunakan SourceTree (bash atau Windows) di sini:

masukkan deskripsi gambar di sini

Salah satu cara untuk memecahkan masalah di SourceTree

Yang sedang berkata, inilah salah satu cara Anda dapat melakukannya di SourceTree. Karena Anda menyebutkan dalam komentar bahwa Anda tidak keberatan "kembali ke komit yang salah" (yang saya anggap benar-benar Anda maksud mengatur ulang, yang merupakan operasi yang berbeda di Git), maka berikut adalah langkah-langkahnya:

  1. Lakukan hard reset di SourceTree ke komit buruk dengan mengklik kanan padanya dan memilih Reset current branch to this commit, dan memilih opsi hard reset dari drop down.masukkan deskripsi gambar di sini
  2. Klik tombol Komit, lalu
  3. Klik pada kotak centang di bagian bawah yang mengatakan "Ubah komit terbaru". masukkan deskripsi gambar di sini
  4. Buat perubahan yang Anda inginkan pada pesan, lalu klik Komit lagi. Voila!

Mengenai komentar ini :

jika tidak mungkin karena sudah didorong ke Bitbucket, saya tidak keberatan membuat repositori baru dan memulai dari awal.

Apakah ini berarti Anda satu-satunya orang yang mengerjakan repo? Ini penting karena tidak sepele untuk mengubah riwayat repo (seperti dengan mengubah komit) tanpa menimbulkan masalah bagi kolaborator Anda. Namun, dengan asumsi bahwa Anda adalah satu-satunya orang yang mengerjakan repo, maka hal berikutnya yang ingin Anda lakukan adalah memaksa mendorong riwayat Anda yang berubah ke kendali jarak jauh.

Perlu diketahui, bahwa karena Anda melakukan reset keras ke komit yang salah, maka memaksa mendorong menyebabkan Anda kehilangan semua pekerjaan yang datang setelah itu sebelumnya. Jika tidak apa-apa, maka Anda mungkin perlu menggunakan perintah berikut di baris perintah untuk melakukan push paksa, karena saya tidak bisa menemukan opsi untuk melakukannya di SourceTree:

git push remote-repo head -f

Ini juga mengasumsikan bahwa BitBucket akan memungkinkan Anda untuk memaksa mendorong repo.

Anda harus benar-benar belajar bagaimana menggunakan Git dari baris perintah, bagaimanapun, itu akan membuat Anda lebih mahir dalam Git. # ProTip, gunakan msysgit dan nyalakan mode Edit Cepat di properti terminal, sehingga Anda dapat mengklik dua kali untuk menyorot sebaris teks, klik kanan untuk menyalin, dan klik kanan lagi untuk menempelkan. Cukup cepat.

Komunitas
sumber