Sourcetree - Ezilmemiş Taahhütleri Geri Al


208

Git-depo için Windows için Sourcetree kullanıyorum ve unpushed bir taahhüdü geri almak istiyorum.

Mümkün mü? "Taahhüdü geri döndür" yaparsam, ilk taahhüdü geri alan ikinci bir taahhüt oluşturur, ancak ilk taahhüdün kaynak kontrolümde hiç görünmesini istemiyorum.

Yerel depomı da silebilir ve yerel taahhüdüm olmadan tekrar çekebilirim, ama belki başka bir yol var mı?


Ekran görüntüleri içeren ayrıntılı bir makale yazdım. Bunun yardımcı olacağını umarak paylaşmak: attosol.com/undo-in-git-using-sourcetree
Rahul Soni

Yanıtlar:


345
  1. Sıfırlamak istediğiniz işleme sağ tıklayın (silmek istediğiniz işleme değil!)
  2. "Master'ı bu işleme sıfırla" yı seçin
  3. "Yumuşak" sıfırlamayı seçin.

Yazılımdan sıfırlama yerel değişikliklerinizi koruyacaktır.

Kaynak: https://answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

Düzenle

Hakkında git revert: Bu komut, diğer taahhütleri geri alacak yeni bir taahhüt oluşturur. Örneğin, yeni bir dosya ekleyen bir taahhüdünüz varsa git revert, yeni dosyayı silen bir taahhüt yapmak için kullanılabilir.

Yazılımdan sıfırlama uygulama hakkında: ( ) için taahhütlerinizin Aolduğunu ve son taahhüdü ( ) silmek istediğinizi varsayın . Ardından, taahhütte bulunmak için yumuşak bir sıfırlama yapabilirsiniz . Yumuşak sıfırlama ile komut git'den silinecek, ancak yerel değişiklikler korunacaktır. Git reset belgelerinde daha fazla örnek var .EA---B---C---D---EEDE


34
Veya bir şube üzerinde çalışıyorsanız - "Mevcut dalı bu taahhüdüne sıfırla"
Tom Auger

5
Bu UI açıklamalarını çok fazla anlamıyorum ... Mevcut dalı bu taahhüdüne sıfırla, taahhüdü silecek gibi görünmüyor. Ve daha fazlasını beklediğiniz şeyi yaptı. Çalışma kopyamı silmek yerine işleme sıfırladı.
MrFox

@MrFox'a katılıyorum. Bunu yaptıktan sonra istemediğim taahhüt hala ağaçta gösteriliyor.
Timmmm

@Timmmm: Yeni açıklama yardımcı oluyor mu?
nightlyop

Aslında zaten github'a olan bağlılığımı zorladığımı fark ettim. Ben "tarihi yeniden yazmak" açıklayan bir makale buldum ama değer daha fazla sorun gibi görünüyor!
Timmmm

46

Geri dönmek istediğiniz günlük girişini seçerseniz, "Bu işleme sıfırla" yı tıklayabilirsiniz. Bu seçeneği yalnızca tersine çevirme değişikliklerini itmediyseniz kullanın. Değişiklikleri kaybetme konusunda endişeleriniz varsa, bir dizi taahhüt edilmemiş değişiklik (yeni değiştirdiğiniz) bırakacak olan yumuşak modu kullanabilirsiniz. Karışık kullanımı çalışma kopyasını sıfırlar, ancak bu değişiklikleri korur ve zor bir değişikliklerden tamamen kurtulacaktır. İşte bazı ekran görüntüleri:

resim açıklamasını buraya girin


3
Önceki taahhüdünüzden (Sadece sildiğiniz) bir Push olduğunu gösteren bir simge görüyorsanız, çekin ve Sourcetree kullanıcı arayüzünü güncelliyor gibi görünüyor.
ChristoKiwi

6

Bir taahhüdü silmek istiyorsanız, bunu etkileşimli bir rebase'in parçası olarak yapabilirsiniz. Ama bunu dikkatli bir şekilde yapın, böylece deponuzu bozmayacaksınız.

Sourcetree'de:

  1. Silmek istediğiniz işlemden daha eski bir taahhüdü sağ tıklayın ve " xxxx alt öğelerini etkileşimli olarak yeniden adlandır ... " seçeneğini seçin. Tıkladığınız "temel" olacaktır ve bundan sonra yapılan her taahhütte değişiklik yapabilirsiniz.
  2. Yeni pencerede, gitmek istediğiniz taahhüdü seçin ve alttaki " Sil " düğmesine basın veya taahhüdü sağ tıklayın ve " İşlemi sil " seçeneğini tıklayın .
  3. " Tamam " ı (veya iptal etmek istiyorsanız " İptal " i tıklayın ).

Sourcetree'deki etkileşimli yeniden bastırma hakkında daha fazla bilgi için bu Atlassian blog gönderisine göz atın.


Aradığım cevap tam olarak gerektiği gibi çalıştı.
Cliff Burton

0

Eğer başka bir şubedeyseniz, önce silmek istediğiniz taahhüt için "bu taahhüdü kontrol et" gerekir ve daha sonra "geçerli şubeyi bu taahhüdüne sıfırla" seçeneği çalışır.

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.