Devam eden bir taahhüt aniden henüz orada olmayan bir başkasına bağlı gibi göründüğünde nasıl başa çıkılır?


13

Git konusunda deneyimsizim ama buna alışmak için elimden geleni yapıyorum ve şimdiye kadar sadece üzerinde çalıştığım projeler için kullanıyorum.

Kodladığımda doğal olarak yukarıdan aşağıya bir yaklaşım var (geleceği bilemediğim gibi) ve tekrarlayan bir tema var:

Biraz iş yaparım.
İşimi "övgüye değer" bir şeye dönüştürmek için başka işler yapmam gerektiğini öğrendim.
Diğer çalışma kendi taahhüdünü hak ediyor.

Övgüye değer bir şeyle, derleyen veya tamamen dağınık olmayan bir şey demek istiyorum.
Ve kendi taahhüdünü hak eden bir şeyle, taahhütlerin sadece bir şey yapması gerektiğini öğrendim.

Çözdüğüm yol hantal. Diğer çalışma başka bir dosyadaysa, yeni bir dal oluşturur, orada taahhütte bulunur ve birleştiririm. İş aynı dosyadaysa .. ugh .. Yerel bir kopya alıyorum ve dosyayı HEAD'deki durumuna sıfırladım, gerekli taahhüdü yapın ve ardından çalışmamı kopyadan geri yüklemeye başlayın. Aslında bunu nasıl ele almalıyım? Bunun böyle olduğunu düşünmüyorum, değil mi? Ben öyle düşünmüyorum, çünkü herkes için (genellikle geleceği de bilmeyen) biraz sık gelmesi gerekiyor. Ya da belki iş akışımın kusurlu olduğu anlaşılıyor?


1
Kendimi genellikle sık sık kütüphane ve yapılandırma eklerken aynı durumda buluyorum. Ben sadece git statustüm değiştirilmiş dosyaları görmek için kullanın ve git addbelirli dosyaları (yerine git add --all) kullanarak ve parça parça işleyerek iki veya daha fazla taahhüt yapmak .
Chris Cirefice

Dosyaların bölümlerini seçip git add -pyalnızca bu bölümleri uygulayabilirsiniz. Bu çok güçlü bir teknik ve neredeyse her zaman kullanıyorum.
eush77

Yanıtlar:


17

Bunu çözmenin birkaç yolu vardır.

İlk değişiklik için değişiklikleri mevcut değişikliklerinize müdahale etmeden yapmak istiyorsanız, kullanmak isteyebilirsiniz git stash. Bu, tüm açık değişikliklerinizi ortadan kaldıracak ve daha sonra geri yüklemenize izin verecektir. git statusArtık mevcut olmadıklarını görmek için kullanın . Şimdi alıştığınız gibi ilk taahhüdü oluşturun. Daha git stash popsonra, orijinal değişikliklerinizi geri yüklemek ve birincil işinizi yaparak ikinci taahhüdü oluşturmak için kullanabilirsiniz .

Başka bir yol, gerekli tüm değişiklikleri yapmak ve daha sonra her ikisi de işinizin bir kısmını içeren iki taahhüt oluşturmaktır. Bunu yapmak için git tarafından sağlanan dizini (hazırlama alanı olarak da bilinir) kullanabilirsiniz. Bu, taahhüt hazırlamak için kullanabileceğiniz özel bir alandır. Birden fazla dosyayı değiştirdiğinizi varsayarsak, her birini kullanarak dizinine ekleyebilirsiniz git add. Bunu yaparken git commitsadece dizine eklenen dosyalar işlenecektir. git statussize değişikliklerinizin hangi bölümlerinin yapılacağını ve hangilerinin yapılmayacağını gösterecektir. Örneğin a.txt, b.txt ve c.txt dosyalarını değiştirdikten sonra şu şekilde görünecektir git add a.txt:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   a.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   b.txt
        modified:   c.txt

Yaptığınız zaman git commitbu durumda, a.txt değişiklik yapılan tek işlemek senin eklenecektir.

Ek olarak, yapılması gereken tüm değişiklikleri gözden geçirebilirsiniz git diff --cached; bu, taahhüt edilecek tüm değişikliklerin bir farkını gösterir.

Bir dosya her iki işlem için de değişiklik içeriyorsa, "git add --patch b.txt" komutunu kullanarak dizine yalnızca bir kısmını dizine ekleyebilirsiniz. git size, belirtilen dosyadaki dizine eklenmesi gerekip gerekmediğini soran etkileşimli bir mod sağlar. İki komitede bölünmesi gereken satırlarda yan yana değişiklikler varsa, bu daha da zorlaşabilir, ancak bunu çözmenin de yolları vardır.

Hazırlama alanı hakkında daha fazla bilgi edinmek istiyorsanız, bunu okumak isteyebilirsiniz: http://gitready.com/beginner/2009/01/18/the-staging-area.html

Ayrıca, etkileşimli ekleme hakkında daha fazla bilgiyi şu adresten de okumak isteyebilirsiniz: http://nuclearsquid.com/writings/git-add/


5

Git için SourceTree by Atlassian gibi bir GUI kullanıyorsanız veya git guidosyaların bazı bölümlerini işleyebilir ve diğer bölümleri izinsiz bırakabilirsiniz. Aslında, bireysel kod satırlarını uygulayabilirsiniz.

Bunu tarif ettiğin gibi tavşan deliklerine düştüğümde sık sık yapıyorum. Bu, mantıklı taahhüdü yapmanın veya ana taahhüdün öncüsü olarak taahhüt etmenin harika bir yoludur.

Bunu komut satırından yapabilirsiniz, ancak bu biraz sakar.

Git düzeltme eki düzeyinde ve tek tek satırlarda çalışabildiğinizde, yeni dallar, saklanma, bağlanma, saklama ve birleştirme oluşturmanız gerekmez. Sadece çalışmaya devam edin ve akışı bozmayın. Gidecek iyi bir şey var.


@ MasterMastic BU sizin kabul ettiğiniz cevap olmalıdır. Sadece bireysel kod satırlarını işleyebilmek, korkutucu bir nimettir.
JesseTG
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.