Git: ekleme, gönderme, işleme, kaydetme


115

Ne Git arasındaki farktır add, pushve commit?

SVN'den gelen biraz kafa karışıklığı, burada "güncelleme" bir şeyler 'ekler' ve commit bir "itme" yapar ve aynı zamanda "ekler"

Git içinde tüm farklı işlevler vardır. Deneyimlerinizden bir açıklama bekliyorum.


Yanıtlar:


163
  1. git adddeğiştirilen dosyalarınızı daha sonra işlenmek üzere kuyruğa ekler . Dosyalar taahhüt edilmemiştir

  2. git commiteklenen dosyaları kaydeder ve bir günlükle yeni bir revizyon oluşturur ... Herhangi bir dosya eklemezseniz, git hiçbir şey işlemez. Her iki eylemi ile birleştirebilirsinizgit commit -a

  3. git push değişikliklerinizi uzak depoya gönderir.

Bu hile sayfasındaki bu rakam , iş akışı hakkında iyi bir fikir veriyor

görüntü açıklamasını buraya girin

git addrakam üzerinde değildir, çünkü önerilen taahhüt etme yolu birleşiktir git commit -a, ancak git addakışı anlamak için değişim bloğuna zihinsel olarak bir ekleyebilirsiniz .

Son olarak, pushayrı bir emir olmasının nedeni , gitfelsefesinden kaynaklanmaktadır. gitdağıtılmış sürüm sistemidir ve yerel çalışma dizini olan deponuzu! Yaptığınız tüm değişiklikler anında yansıtılır ve kaydedilir. pushyalnızca, üzerinde çalıştığınız şeyle işiniz bittiğinde (başkalarıyla paylaşabileceğiniz) uzak depoyu güncellemek için kullanılır. Bu, değişiklikleri yerel olarak (ağ ek yükü olmadan) çalışmanın ve kaydetmenin ve her kaydetmede değil, yalnızca istediğinizde güncellemenin düzgün bir yoludur. Bu, dolaylı olarak daha kolay kaydetme / dallanma vb. (Neden olmasın, değil mi? Maliyeti nedir?) İle sonuçlanır ve bu da depoyla uğraşmadan daha fazla tasarruf noktası sağlar.


Öyleyse, yerel olarak push commit ve sonra uzak sunucuya itmek mi yoksa uzak depoya iş almak için önce commit sonra push etmek mi gerekiyor?
Andrew S

2
Önce yerel deponuzu (diğer adıyla yerel makinenizde) güncelleyen commit ("git commit") ve ardından uzak depoyu (örneğin github sunucusunda) güncelleyen sunucuya ("git push") itmeniz gerekir. )
Romain

Git'te "zihinsel olarak ekle" işlevini çok isterim!
Junchen Liu

1
Sadece sık sık değil, aynı zamanda sık sık bastırmanız önerilir. Bu, sabit sürücünüz çöktüğünde çalışmanızı korur.
CCC

86

git add değişiklikleri seçer

git commit kayıt değişiklikleri YEREL OLARAK

git push değişiklikleri paylaşır


22
  • git add Kaydedilmeye hazırlanan nesneler için bir hazırlık alanı olan Git dizinine dosyalar ekler.
  • git commitdizindeki dosyaları havuza kaydeder, git commit -atüm değiştirilmiş izlenen dosyaları önce dizine eklemek için bir kısayoldur.
  • git push tüm bekleyen değişiklikleri şubenizin eşlendiği uzak depoya gönderir (örn. GitHub'da).

Git'i anlamak için sadece belgelere göz atmaktan daha fazla çaba harcamalısınız, ancak kesinlikle buna değer. Git komutlarını doğrudan Subversion ile eşleştirmeye çalışmayın, çünkü çoğunun doğrudan bir karşılığı yoktur.


Birisi yerel ve uzak github arasındaki farkı açıklamalıdır. Yerelde ve remte'de sahip olduklarınız.
Bulmanız

12

'Ekleme'nin gerçekte ne yaptığı konusunda kafam karıştı. Buraya eklemek istediğim Git Pro kitabından çok aydınlatıcı bir paragraf okudum, çünkü her şeyi açıklığa kavuşturuyor.

“Görünüşe göre Git, bir dosyayı git add komutunu çalıştırdığınızda olduğu gibi aşamalıyor. Şimdi taahhüt ederseniz, git add komutunu en son çalıştırdığınızdaki haliyle benchmarks.rb sürümü, git commit'i çalıştırdığınızda çalışma dizininizde görünen dosyanın sürümü değil, commit'e nasıl gireceğidir. Git add çalıştırdıktan sonra bir dosyayı değiştirirseniz, dosyanın en son sürümünü hazırlamak için git add'ı tekrar çalıştırmanız gerekir: "

Alıntı: Chacon, Scott. "Pro Git." Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Bu materyal telif haklarıyla korunuyor olabilir.


7

add, git'e bir dosyayı izlemeye başlamasını söyler.

commit mevcut değişikliklerinizi yerel deponuza kaydeder

push, sizi yerel depoyu yukarı akışa iter.



5

Birçok GIT sırrı hakkında çok güzel pdf .

Add , svn'nin add ile aynıdır (ancak bazen dosyayı çözülmüş olarak işaretlemek için kullanılır).

Commit de svn'lerle aynıdır, ancak yerel deponuzda değişiklik yapar.


2
Şimdi svn add ve commit'e bakmalıyım. Benim büyük korkum: belgeleri daha sonra beni git add ve commit'ye yönlendirecek. Ve lord_t, söz konusu belgelerin yazarıdır.
eric

Soru yazarının SVN hakkında bilgisi vardı, bu yüzden svn'nin komutlarını bildiğini varsaydım.
lord_t

0

add -in git git'e hangi dosyaları işlemek istediğimizi söylemek için kullanılır, dosyaları hazırlama alanına koyar

commit- in git dosyaları yerel makineye kaydetmek için kullanılır, böylece herhangi bir değişiklik yaparsak veya dosyaları silersek, taahhüt edilen dosyalarımızı yine de kurtarabiliriz

push - dosyalarımızı yerel makinede işlersek, dosyalarımızı güvende tutmak veya dosyalarımızı paylaşmak için yerel makinemiz kaybolursa, hasar görürse vb. kaybolmaya meyillidirler, genellikle dosyalarımızı uzak bir bilgisayarda tutmak isteriz Github gibi depo. Uzak depolardan tasarruf etmek için push kullanıyoruz

örnek index.html git add index.html adlı bir dosyayı hazırlama

Git commit -m 'commit'inizin adı' aşamalı bir dosya işleme

Bir dosyayı Github git push origin master'a gönderme

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.