2 taahhüt var, A sonra B, itilmeye hazır. A.'da bir şey eklemeyi unuttuğumu fark ettim.
Magit kullanarak bu değişikliği A'ya nasıl ekleyebilirim? Git belgelerinin hangi bölümüne bakmam gerektiğini bile bilmiyorum.
2 taahhüt var, A sonra B, itilmeye hazır. A.'da bir şey eklemeyi unuttuğumu fark ettim.
Magit kullanarak bu değişikliği A'ya nasıl ekleyebilirim? Git belgelerinin hangi bölümüne bakmam gerektiğini bile bilmiyorum.
Yanıtlar:
HEADÖrneğe, "ikinci ikinci B" sıfatıyla bir şey eklemek istediğiniz bir an gibi davranalım .
Açılan açılır pencere cbağlayıcı bir " aAmend" içerir. Bu tuşa basmak, aşamalı olarak HEADtaahhütte yapılan değişiklikleri "değiştirir" . Git'teki taahhütler değişmediğinden, bu aslında eski taahhüdün yerine yeni bir taahhüt verir. Eski onaylama mesajına sahip bir arabellek açılır, böylece eklenen değişikliğin aynı zamanda mesajı ayarlamanızı gerektirmesi durumunda değiştirebilirsiniz. Her zaman C-c C-colduğu gibi, mesajı düzenlemeyi tamamladığınızda tuşuna basın . Bu git commit --amendkomut satırında çalışmaya eşdeğerdir .
HEADekle ve taahhüt iletisini düzenleÇoğu zaman yalnızca değişikliği veya iletiyi ayarlamanız gerektiğinden dolayı , Magit iki ek seçenek sunar:
HEADonaylanan iletiyi düzenlemeden aşamalı değişiklikleri ekleyinHEADAşamalı değişiklikleri eklemeden mesajını değiştirDeğil bir taahhüdü düzenlemek istediğinizde HEAD, o zaman yukarıdaki işe yaramaz. Bu komutlar daima HEADtaahhüdü "değiştirir" (yani değiştirir) . Git, başka bir taahhüdü değiştirmek için tek bir komut sağlamaz, HEADbu yüzden bu biraz daha karmaşıktır.
Magit yok böyle bir komut sağlar, ancak durumlar vardır, çünkü biz öncelikle bu tartışacağız birden fazla adımda bunu tercih olduğu.
Dışında bir taahhüdü değiştirmek HEADüç adıma bölünebilir:
A) HEAD.HEADsonuçlanan (yukarıda açıklandığı gibi) değiştirin A'.A, ancak bunun da ötesinde A'.Bu etkileşimli bir rebase kullanılarak yapılabilir. Tip rRebase açılır penceresini göstermek için. Daha sonra m"bir düzeltme düzenle" rebase varyantını çağırmak için yazın . Son taahhütleri olan bir tampon belirir. Değiştirmek istediğiniz taahhüde gidin ve C-c C-cseçmek için yazın. Git daha sonra geçmişi bu işleme geri alır ve durum arabelleğinde devam eden yeniden düzenleme hakkında bilgi gösterir.
HEADYukarıda açıklandığı gibi değiştirin . Ardından Git'e yazdığınızı söyleyin r r. Eğer A've Bçatışma o zaman rebase durur ve çatışma Bçözmek zorunda kalırsınız. Bunu yaptıktan sonra r rdevam etmek için tuşuna basın .
Yapacağınız değişikliklerin Açatışmalarla sonuçlanacağını biliyorsanız, Byukarıda açıklanan şekilde devam edin, aksi takdirde aşağıdaki yaklaşımı kullanın.
Git kullanarak "düzeltme taahhütleri" oluşturulmasına izin verilir git commit --fixup A. Bu, “başka bir taahhütte yapılması gereken değişiklikleri” kaydeden yeni bir taahhüt yaratır . Bu taahhüt yeni olur HEAD. Bir --squashvaryantı da var . Farklılıklar hakkında bilgi için git-commitman sayfasına bakınız .
ATaahhüdü ve yeni taahhüdü bir araya A'getirip yeniden uygulamak Biçin yeniden uygulamanız gerekir. Magit, bunun için uygun bir komut sağlar r f.
Yukarıdaki yaklaşımdaki en büyük fark, burada önce yeni bir taahhüt oluşturmamız, ardından bunu “hedef” ile birleştirip yeniden uygulamaya koymamız gerektiğidir B. Yukarıda taahhüt etmek yerine yeniden yapılanma ile başladık.
Magit her iki --fixupve --squashvaryantları edinilebilir üzerine, açılan taahhüt fve s. Ama Magit da "anlık" Fixup ve squash komutların varyantları sağlar Fve S. Bu değişkenler, "anlık olmayan" değişkenler gibi yeni bir işlem oluşturur, ancak daha sonra başka bir komutu çağırmanıza gerek kalmadan, düzeltme işlemini yeniden oluşturma kullanarak hedef işlemeyle anında birleştirir.
"Anında düzeltme" ( c F) aslında "genişlet HEAD" ( c e) ile aynı şeydir , yalnızca herhangi bir işlem için çalışması dışında HEAD.
Daha fazla okuma:
git-commit(1)git-rebase(1)git-commitman sayfası git-rebase(1)bu satırlara sahip olan yönlendirmeleri yönlendirir : Katlanmış taahhüt için önerilen taahhüt mesajı, ilk teklifin ve "squash" komutuna sahip olanların taahhüt mesajlarının birleştirilmesidir, ancak "düzeltme" içeren taahhüt mesajlarını atlar. komut. IOW, sadece önceki onaylamadaki kodu düzeltmek istiyorsanız düzeltme komutunu kullanın, onaylama mesajını da düzeltmek istiyorsanız squash kullanın .
git commit --amend –C HEADAramak istediğiniz Git komutu ve Magit’te değişiklik yapabilirsiniz C-c C-a.
C-c C-aeski bir sürümden (sanırım). Ayrıca yardım tamponunda ( ?) "değişiklik" izi yok .
Yani bir iş akışı:
Sonra
Otomatik yıkama, otomatik olarak tüm! Sabitleme işlemlerini doğru yere götürür ve tekrar tabanda ezilmesi için ayarlar.
ibana gelir Cannot rebase: Your index contains uncommitted changes. Please commit or stash them.. Ancak kabul edilmemiş herhangi bir değişiklik yapmam. : /
Proceed despite merge in rebase range? [c]ontinue, [s]elect other, [a]bort. Düzeltmemin yaklaşmakta olan birleşime sıçrayabileceğini söylemeye mi çalışıyor?
merge in rebasealtında HATALAR bakın git help rebase. Yukarı doğru çekmeden önce düzeltmeyi yapmayı öneririm.
Son taahhüdünü değiştirmek için "c a" dır. Düzeltme, bazı eski taahhütleri değiştirmek içindir.