SourceTree Windows'ta bir tamamlama mesajını düzenleme


204

Komut satırına dokunmadan SourceTree'de hatalı bir kesinleştirme iletisini nasıl düzenleyebilirim?

Ek detaylar:

  • Bu son taahhüt değil.
  • Her şey zaten Bitbucket'e itilmişti.
  • Bu özel bir depo ve tek ortak çalışan benim.
  • Her zaman yeniden taahhütte bulunabileceğim için önceki taahhütlerin hiçbirini kaybetmiyorum.
  • Ancak şimdiye kadar yapılan herhangi bir kod değişikliğini kaybetmek istemiyorum.

Sonuç:

  • Yorumlarınıza ve yanıtlarınıza göre şu anda imkansız gibi göründüğü için, yeni bir depo oluşturacağım ve baştan başlayacağım. Yardımlarınız için hepinize teşekkürler!

Yanıtlar:


428

Windows için SourceTree 1.5.2.0 sürümünü kullanarak önceki bir taahhüdün ( en son taahhüt değil ) taahhüt iletisini düzenlemek için adımlar şunlardır :

Aşama 1

Düzenlemek istediğiniz işlemden hemen önce bildirimi seçin . Örneğin, taahhüdü "FOOBAR!" o zaman hemen önce gelen taahhüdü seçmek gerekir:

Düzenlemek istediğimden önce taahhüdü seç.

Adım 2

Seçili işleme sağ tıklayın ve tıklayın Rebase children...interactively:

"Çocukları etkileşimli olarak yeniden adlandır" ı seçme.

Aşama 3

Düzenlemek istediğiniz taahhüdü seçin, ardından Edit Messagealttaki simgesini tıklayın . Bu durumda, "FOOBAR!"

Düzenlemek istediğiniz taahhüdü seçin.

4. Adım

Tamamlama iletisini düzenleyin ve Tamam'ı tıklatın OK. Örneğimde, "SHAZBOT! SKADOOSH!"

Teslim mesajını düzenle

Adım 5

Etkileşimli rebase penceresine döndüğünüzde OK, rebase'i bitirmek için tıklayın :

İşlemi tamamlamak için Tamam'ı tıklayın.

6. Adım

Bu noktada, daha önce itmiş olduğunuz taahhütleri yeniden temel aldığınız için yeni değişikliklerinizi zorlamanız gerekir. Ancak, Windows için SourceTree'in geçerli 1.5.2.0 sürümü GUI'yi zorla göndermenize izin vermez, bu nedenle bunu yapmak için Git'i komut satırından yine de kullanmanız gerekir.

TerminalBir terminal açmak için GUI'den tıklayın .

Tıklama Terminali

Adım 7

Aşağıdaki komutla terminal zorlamasından,

git push origin <branch> -f

nereye <branch>itmek istediğiniz dalın adı ve itmeye -fzorlamak anlamına gelir. Zorla itme , uzak repodaki taahhütlerinizin üzerine yazacak, ancak repo'nuzu diğer insanlarla paylaşmadığınızı söylemiş olduğunuz için sorun yok.

Bu kadar! Sen bittin!


4
Adımlar Mac sürümünde de temelde aynıdır.
race_carr

3
Dikkat: Tamamlama mesajınıza # ile başlamak istiyorsanız, bu işe yaramaz, git bir yorum olarak davranır ve tamamlama mesajınızın boş olduğunu söyler!
Daniel Edholm Ignat

1
“Hepsi bu! İşlemi tamamladın!” - Ne olduğunu bilmediğim kadar kolay, bir tavşan yakalamak gibi. Böyle önemli ve sık görülen bir durum için program özelliği oluşturmak yerine. Aceleyle yazım hatası yaptığınızda, kafayı sıfırlamanız ve tekrar yeni bir taahhüt oluşturmanız gerekir.
Rantiev

68
Komik - Neden basit bir "Tamamlama İletisini Düzenle" seçeneği oluşturmadıklarını merak ediyorum.
Jonathan Aquino

1
Force Push artık GUI üzerinden de kullanılabiliyor. Aksi takdirde MÜKEMMEL :-)
LaTisha

43

1.9.6.1 Sürümünde. UnPushed taahhüdü için.

  1. Önceden taahhüt edilen açıklamaya tıklayın
  2. Tamamla simgesini tıklayın
  3. Yeni tamamlama mesajı girin ve Tamamlama seçenekleri açılır menüsünden " Son tamamlamayı değiştir " i seçin.
  4. Mesajınızı verin.

13

Yorum mesajı, user456814 tarafından sağlanan yöntemi kullanarak İngilizce olmayan karakterler içeriyorsa, bu karakterlerin yerine soru işaretleri gelir. (Sourcetree Ver2.5.5.0 kapsamında test edilmiştir)

Bu yüzden aşağıdaki yöntemi kullanmalıyım.

DİKKAT : taahhüt diğer üyeler tarafından alındıysa, aşağıdaki değişiklikler onlar için kaosa neden olabilir.

Adım 1 : Sourcetree ana penceresinde, repo sekmenizi bulun ve git komut konsolunu açmak için " terminal " düğmesine tıklayın.

Adım2 :

[Durum A] : en son hedef taahhüttür.

1) git komut konsolunda giriş

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

2) Hedef taahhüdü uzaktan kumandaya itildiyse, zorla tekrar itmeniz gerekir. Git komut konsolunda giriş

git push --force

[Durum B] : hedef taahhüdü sonuncusu değil.

1) git komut konsolunda giriş

git rebase -i HEAD~n

Bu son n taahhüdünü ezmektir. örneğin Düzenlemeye sonuncusu önce mesaj istiyorsanız, n Bu komut, her satırın ilk kelimesi olan bir vi pencere açmak "olacak 2'dir almak " ve "için "çekme" değiştirmek reword hattı için" düzenlemek istiyorsunuz. Ardından, :wqvi penceresini kaydetmek ve çıkmak için giriş yapın. Şimdi yeni bir vi penceresi açılacak, bu pencerede yeni mesajınızı gireceksiniz. Ayrıca :wqkaydetmek ve çıkmak için kullanın .

2) Hedef taahhüdü uzaktan kumandaya itildiyse, zorla tekrar itmeniz gerekir. Git komut konsolunda giriş

git push --force


Son olarak : Sourcetree ana penceresinde, F5yenilemek için tuşuna basın .


12

Güncelleme

Not: Bu yanıt ilk olarak Windows için SourceTree'nin eski sürümleriyle ilgili olarak yazılmıştır ve artık güncel değildir.

Windows için SourceTree'nin 1.5.2.0 sürümü için yeni cevabımı görün . Bu cevabı tarihsel amaçlar için geride bırakıyorum.

Orijinal Yanıt

Windows'ta olduğum için bir komut satırı aracım yok ya da nasıl kullanılacağını bilmiyorum :( Bunu halletmenin tek yolu bu mu? GUI tüm git işlevlerini kapsamıyor mu? - Orijinal Poster

Git GUI'leri ile ilgili olarak, hayır, Git'in tüm işlevlerini kapsamazlar . Yaklaşmıyorlar bile . Git'te yanlış bir gönderme mesajını nasıl düzenlerim? Bölümündeki cevaplardan birine göz atmanızı öneririm. , Git komut satırından birden fazla çözüm olacak kadar esnektir.

SourceTree aslında msysgit bash kabuğuyla birlikte gelebilir veya standart Windows komut kabuğunu kullanabilir. Her iki durumda da, Terminal düğmesini tıklatarak SourceTree formunu açarsınız:

resim açıklamasını buraya girin

SourceTree'nin hangi terminali (bash veya Windows) kullanacağını burada belirlersiniz:

resim açıklamasını buraya girin

SourceTree'de sorunu çözmenin bir yolu

Bununla birlikte, SourceTree'de bunu yapmanın bir yolu var. Yorumlarda , "hatalı işleme geri dönme" nin sakıncası olmadığından bahsettiğinizden (aslında sıfırlama demek istediğinizi farz ediyorum ki bu Git'te farklı bir işlemdir), o zaman adımlar şunlardır:

  1. SourceTree'de, üzerine sağ tıklayıp seçerek Reset current branch to this commitve açılır menüden donanımdan sıfırlama seçeneğini seçerek kötü işlem için bir donanım sıfırlaması yapın.resim açıklamasını buraya girin
  2. Tamam düğmesini tıklayın, ardından
  3. Altta "Son taahhüdü değiştir" yazan onay kutusunu tıklayın. resim açıklamasını buraya girin
  4. Mesajda istediğiniz değişiklikleri yapın, ardından tekrar Tamam'ı tıklayın. İşte bu kadar!

Bu yoruma ilişkin olarak :

zaten Bitbucket'e itildiği için bu mümkün değilse, yeni bir depo oluşturup baştan başlamakta sorun olmaz.

Bu, repo üzerinde çalışan tek kişi olduğunuz anlamına mı geliyor? Bu önemlidir, çünkü ortak çalışanlarınız için sorun yaratmadan bir repo tarihini değiştirmek (bir taahhütte bulunmak gibi) önemsiz değildir. Ancak, repo üzerinde çalışan tek kişi olduğunuzu varsayarsak, yapmak istediğiniz bir sonraki şey, değiştirilen geçmişinizi uzaktan kumandaya zorlamaktır.

Bununla birlikte, hatalı taahhüde sert bir sıfırlama yaptığınızdan, zorlamanın daha önce gelen tüm işleri kaybetmenize neden olduğunu unutmayın. Eğer sorun yoksa, o zaman zorla gönderme yapmak için komut satırında aşağıdaki komutu kullanmanız gerekebilir, çünkü bunu SourceTree'de yapmak için bir seçenek bulamadım:

git push remote-repo head -f

Bu ayrıca BitBucket'in bir repoya zorla göndermenize izin vereceğini varsayar.

Git'i komut satırından nasıl kullanacağınızı gerçekten öğrenmelisiniz, ancak Git'te daha yetkin hale gelecektir. #ProTip, msysgit kullanın ve terminal özelliklerinde Hızlı Düzenleme modunu açın, böylece bir metin satırını vurgulamak için çift tıklatabilir, kopyalamak için sağ tıklatabilir ve yapıştırmak için tekrar sağ tıklayabilirsiniz. Oldukça hızlı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.