Git'te origin / master ve origin master arasındaki fark nedir?


290

Biliyorum, kökeni uzak depo için bir terim ve efendi orada şube.

Ben burada kasten "bağlam" ı ihmal ediyorum ve cevabın bağlama bağlı olmaması gerektiğini umuyorum. Yani git komut satırlarında origin / master ve origin master arasındaki fark nedir ? Orijin / master'ı ne zaman ve orijin masterını ne zaman kullanmam gerektiğini anlamak için belirsiz bir yol var mı ?


Yanıtlar:


392

Aslında burada üç şey var: origin masteriki ayrı şey ve origin/masterbir şey. Toplam üç şey.

İki şube:

  • master yerel bir şubedir
  • origin/masteruzak bir daldır ( "origin" adlı uzaktaki "master" adlı dalın yerel bir kopyasıdır )

Bir uzaktan kumanda:

  • origin uzak

Örnek: iki adımda çekin

Yana origin/masterbir dalıdır, bunu birleştirebilirsiniz. İşte iki adımda bir çekim:

Birinci adım master, uzaktan kumandadan getirin origin. Üzerindeki masterşube origingetirilecek ve yerel kopya adlandırılacak origin/master.

git fetch origin master

Sonra origin/masteriçine birleşirsin master.

git merge origin/master

Ardından, yeni değişikliklerinizi mastergeri itebilirsiniz origin:

git push origin master

Daha fazla örnek

Birden çok dalı adıyla getirebilirsiniz ...

git fetch origin master stable oldstable

Birden çok dalı birleştirebilirsiniz ...

git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290

5
İlk bölüm gerçekten faydalı. Nasıl daha fazla örnek, özellikle birleştirme uygulanabilir olduğunu bağlayamadım. Cevap için teşekkürler.
Senthil Kumaran

1
... çünkü “çıkış kasası / master” ı gittiğimde kopuk bir kafa durumuna geçiyorum. Gerçekten uzak ana dalın yerel bir kopyasına sahipsem, neden çalışamıyorum ve taahhütte bulunamıyorum? Ya da belki yapabilirim, ama neden ayrıldı?
stu

3
Yalnızca yerel bir şubeye bağlanabilirsiniz, bu nedenle uzak bir şubeye baktığınızda "müstakil kafa" elde edersiniz. Tabii ki, uzak bir dalın yerel bir kopyası, ama yine de uzak bir dal. "Master" ın "orijin / master" ile ilgili olduğuna dair bir kural yoktur, tamamen farklı olabilirler.
Dietrich Epp

7
@ Jwan622 "kökeni uzak" ... "kökeni" sadece bir isim, uzaktan kumandalar için herhangi bir isim seçebilirsiniz, ancak "kökeni" varsayılan isimdir. Uzaktan kumanda başka bir yerde bulunan bir havuzdur. GitHub olabilir veya farklı bir bilgisayar olabilir, hatta aynı bilgisayarda başka bir yerde bile olabilir.
Dietrich Epp

2
@ Jwan622: "git remote add" yeni bir uzaktan kumanda oluşturan bir komuttur. "origin", uzaktan kumandanın eklediği addır. "Orijin" sadece bir isim olduğundan, isterseniz farklı bir isim seçebilirsiniz. Örneğin, git remote add home my-server:projects/my-project"ev" adlı bir uzaktan kumanda ekler. Belgelere başvurabilirsiniz: git-scm.com/docs/git-remote
Dietrich Epp

16

origin/masteruzaktan kumandadaki dalın durumunu temsil eden bir varlıktır (fiziksel bir dal olmadığı için) .masterorigin

origin mastermasteruzaktan kumandadaki daldır origin.

Yani bunlar var:

  • origin / master (Uzak dal için bir gösterim veya işaretçi)
  • master - ( fiili şube )
  • <Yerel_birinci_reniniz> ( gerçek şube )
  • <Your_local_branch2> ( gerçek şube )
  • <Your_local_branch3> ( gerçek şube )

Örnek (yerel şubede master):

git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master

24
Bu yanlış ... origin masterbir şube değil ... aslında iki farklı şey, "köken" (uzak) ve "usta" (yerel bir şube).
Dietrich Epp

Uzak ana dalın durumu yerel olarak var, değil mi?
Senthil Kumaran

4
evet bu yanlış yanlış origin/masteruzak ana dalı. Yerel şube sadece efendidir.
Aniket Thakur

5

origin/masteruzak masterdal mı

Genellikle git fetch originsunucudan tüm değişiklikleri getirmek için bir yaptıktan sonra git rebase origin/master, değişikliklerinizi yeniden adlandırmak ve dalı en son dizine taşımak için bir. Burada, origin/masteruzak şubeye atıfta bulunulmaktadır, çünkü temel olarak GIT'e origin/masterşubeyi geçerli şubeye yeniden adlandırmasını söylüyorsunuz .

origin masterÖrneğin, iterken kullanabilirsiniz . git push origin mastersadece GIT'e yerel masterşubeye uzak depoya gitmesini söylüyor .


2
Bu aslında OP'nin aradığı şeye en yakın gibi görünüyor - origin masteryazılıma 'orijin' deposunda 'master' ile bir şey yapmasını söylüyor. origin/masteraynı şekilde bir referanstır f3a4d5veya HEADöyle.
Nemesarial

4

origin, uzak git url'sinin adıdır. Aşağıda daha birçok uzaktan kumanda örneği olabilir.

bangalore => bangalore.example.com:proje.git

boston => boston.example.com:proje.git

orijin / master (örnek bangalore / master) söz konusu olduğunda, bangalore sitesinde "master" taahhüdünün göstergesidir . Bunu klonunuzda görüyorsunuz.

"Getirme" veya "çekme" işlemlerini gerçekleştirdiğiniz için uzak bangalore'un ilerlemesi mümkündür


2

origin/masterAğ kablonuzu fişten çekerken (ayrılmış durumda olsa da) geçiş yapabileceğiniz göz önüne alındığında, adresinin masterşubenin yerel bir temsili olması gerekir origin.


Yukarıdaki ve aşağıdaki cevaplarda, insanlar orijin / master'ın uzak ana şube olduğunu söylüyor. Cevabınız söyledikleriyle çelişiyor. Lütfen açıklayınız.
Luna Lovegood
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.