Git stash'ı projemin devam eden değişikliklerini kaydetmek ve diğer bilgisayarlarda erişmek için github'a itmeli miyim?


20

Bir projeye taahhüt için yeterince iyi olmadan mola vermem gereken bazı özellikler üzerinde sık sık çalışıyorum. Ancak, kodlamak için günlük iki farklı bilgisayar kullanıyorum (dizüstü bilgisayarım ve araştırma laboratuarı masaüstüm). Örneğin: Evde bir özellik üzerinde çalışıyorum, sonra durup laboratuarıma gidiyorum.

Bulut senkronizasyonunu (örn. Dropbox) GitHub uzaktan izleme ile karıştırmak istemiyorum.

Daha önce kodumun bitmemiş (ve dağınık) durumlarını işledim (ve ittim) sadece çalışmaya devam etmek için diğer bilgisayarda çekmek için. Bunun kötü bir uygulama olduğundan eminim.

Ancak bugün, git stashGoogle'ı biraz aradıktan sonra karşılaştım . İhtiyacım olan şey için mükemmel bir çözüm gibi görünüyor.

Ancak, belgelerim değişiklikleri değiştirdikten sonra github'a gidip gitmediğini söylemiyor. Bunun yanı sıra, ihtiyacım olan hareketliliği başarmanın daha etkili bir yolu olup olmadığını bilmek istiyorum.

Şimdiden teşekkürler!


1
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü Stack Overflow
David Arno

5
@DavidArno: Bunun siteler arası bir kopya olduğunu sanmıyorum. StackOverflow sorusu "X yapabilir miyim" hakkında ve bu "X iyi bir uygulama mı" ile ilgili. En azından sorunun temel nedeni farklıdır.
Greg Burghardt

7
@DavidArno son kontrol ettiğimde, "Zaten SO'ya cevap verildi" sorusunu kapatmak için bir neden değil.
RubberDuck

Yanıtlar:


28

Daha önce kodumun bitmemiş (ve dağınık) durumlarını işledim (ve ittim) sadece çalışmaya devam etmek için diğer bilgisayarda çekmek için. Bunun kötü bir uygulama olduğundan eminim.

Dağınık bitmemiş iş yapmak sorun değil. İşinizi bir konu dalında yapın. Erken ve sık sık taahhütte bulunun. Haberlerini okuyun kodu işlemeye ne zaman? ne zaman taahhütte bulunacağınıza dair bazı yönergeler için. Özellikle Git için bir konu dalına bağlı kalın ve istediğiniz sıklıkta iletin.

Bu konu dalı sizin içinse, bozuk kod taahhüt ve itin. Sadece bozuk kodu başkaları tarafından kullanılan bir şubeye itmeyi ertelemelisiniz . Kendi kodunuzu kırmaktan çekinmeyin.


6
Hatta daha güçlü olduğunu söyleyebilirim: asla ana dalda çalışma, her zaman bir konu dalı kullan. Uygun gördüğünüz gibi taahhüt edin, korkusuzca itin. Değişikliklerden memnun olduğunuzda, ustalıkla birleştirin.
9000

Harika tavsiye! Bence büyük karışıklık olabilir çünkü bir taahhüde bir yorum eklememiz gerekir ve bazen tam anlamıyla "devam etmekte olan görev" veya bunun gibi bir şey olabilir. Ve evet, bu dalda yalnız çalışıyorum, bu yüzden söylediğin her şey mantıklı!
Leandro

4
Bu aynı zamanda şubenizi birleştirirken bireysel taahhütleri tek tek ezme seçeneği sunar git merge --squash bugfix
snoopy

2
@Leandro taahhüt mesajları mantıklı olduğu kadar atomik ve açık olmalıdır. Örneğin, WIP olsa bile, örneğin "Sayfa isteklerini işlemek için denetleyici ekleme - WIP" diyebilirsiniz. Taahhüt mesajları, projesinde yapılan değişikliklerin aranabilir bir geçmişini de sağlar. On "WIP" taahhüdü, örneğin kullanıcıları ele alan bir değişiklik arayan kimseye yardımcı olmaz.
Ben

7

Stashes, şubelerle uğraşırken bir şeyler koymak için geçici bir yer olarak yerel kullanım için tasarlanmıştır.

Bir dalda çalışan tek kişi sizseniz, bozuk kod işleme konusunda herhangi bir sorun yoktur. Benzer durumlarda yaptığım şey kırık bir taahhüt yapmak, daha sonra diğer yere çektikten sonra, git reset HEAD~1geri almak için bir yap. Tabii ki, bu --forcesizin pullsve pushesyer değiştirdiğinizde kullanmak gerektirir .

Ya da sadece ilk taahhüdümü bekleyip bir a git commit --amend. Ya da sadece özellik dalını taahhüt ettiğimde tüm kırık taahhütleri eziyorum. Ya da sadece tarihimdeki açıkça işaretlenmiş birkaç kırık işlemden endişe etmiyorum, çünkü iyi bir durma noktasına gelene kadar ayrılmıyorum. Birçok seçenek var.


1
Ben de itmek için --amendgerektirir --force, bu yüzden alışmak tavsiye etmem . Sadece ıssız bir dal için daha iyi taahhüt edin.
leftaroundabout

1

stash"şubenizi açmak" için iş dizininizi temizlemekten başka bir şey için tatmin edici değildir; stash popDevleti hemen geri getirmezseniz, işler çok kafa karıştırıcı olacaktır.

Kaydedilecek gerçek işler varsa, kalıcı bir repo girişi için iyi olmasa bile, yine de bir taahhüt olmalıdır. Aslında, çalışma dizinimi asla sürüm kontrolü altında olmayan bir durumda bırakmıyorum - her değişikliği geçici bir taahhüt olarak kaydetmek için çok basit Python komut dosyaları kullanıyorum. Bunu denemek istiyorsanız, yapmanız gerekenler:

  1. Tamamlanmamış bir iş yaptıktan ve işyerinden ayrılmak üzereyken, yürütün git-tmp-commit. Yeni, benzersiz bir dalda yapılan tüm değişiklikleri otomatik olarak yapar.
  2. Bu dalı uzaktan kumandaya itin.
  3. Ayrılmak.
  4. Devam etmek istediğinizde, o dalı uzaktan kumandadan tekrar klonlayın. Bunu ccdaslında sıfırdan geçici bir klasöre her şeyi kontrol eden , otomatik olarak en son dalı seçen komut dosyasıyla yapıyorum ... ancak aynı zamanda el ile getirme ve temporary-commits/original-branch/YYYY-MM-DD...repo varolan bir klondan şube ödeme yapabilirsiniz .
  5. Son olarak, değişikliklerin “taahhüdünü kaldır” git-tmp-commit -r. Bu sizi orijinal şubeye (örn. master) Geri götürür ve çalışma dizinindeki geçici taahhüdün değişikliklerini bırakır, böylece uygun bir taahhüt (veya tekrar ayrılmak zorundaysanız geçici) zamanı gelene kadar burada devam edebilirsiniz.

Komut dosyasının şu anda yazılma şekli, bu yalnızca ödeme deposunda şubemaster yoksa çalışır . Şüphe içinde, yapmanız gerekenler git branch -d master; bu kesinlikle ideal değil ...

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.