Soru Yeni bir yerel şubeyi uzak bir Git deposuna nasıl ittiririm ve nasıl izlerim?


Aşağıdakileri yapmak istiyorum:

  1. Diğer (uzak veya yerel) şubelere dayalı bir yerel şube oluşturun ( git branch veya git checkout -b)

  2. Yerel şubeye bas uzak depoya (yayınla), ama yap izlenebilir git pull ve git push hemen çalışacak.

Bunu nasıl yaparım?

biliyorum --set-upstream Git 1.7'de, ancak bu bir oluşturma sonrası eylemdir. Şube uzak depoya iterken benzer bir değişiklik yapmanın bir yolunu bulmak istiyorum.


3657
2018-05-04 12:58


Menşei


olası kopyası Mevcut bir git dalını uzak bir dalı nasıl izlersiniz? - markus
sadece işaret etmek için --set-upstream is -u - Baiyan Huang


Cevaplar:


Git 1.7.0 ve sonrasında, yeni bir şubeyi kontrol edebilirsiniz:

git checkout -b <branch>

Dosyaları düzenleyin, ekleyin ve işleyin. Sonra ile itmek -u (kısa --set-upstream) seçeneği:

git push -u origin <branch>

Git, itme sırasında izleme bilgilerini ayarlayacaktır.


5762
2018-06-03 20:50



Ayrıca mevcut dalda zaten var olan bir izleme dalı varsa push.default ayarlandı upstreamYapacağını düşündüğün şeyi yapmazsın. Mevcut izleme dalını zorlamaya çalışacaktır. kullanın: git push -u origin mynewfeature:mynewfeature veya yap git branch --unset-upstream ilk. - void.pointer
Şube durumumu uzak şubeye göre doğru bir şekilde bildirmek için 'git durumu' için sıraya 'yukarı-yukarı-başlangıç-başlangıç ​​/ uzak' gitmem gerekiyordu. - Paul Whipp
Visual Studio'dan Git kullanan kişiler için: Aslında Visual Studio'da "Yayınlama Şube" budur. Git -u parametresiyle push komutunu uyguladıktan sonra en sonunda VS UI'de yayınlandığı gibi şubemi görebilirim. - Puterdo Borato
İhtiyacımız var mı -u Şube, uzaktan kumandaya her basışımızda mı yoksa sadece ilk kez mi ihtiyacımız var? - Stephane
@Stephane Sadece ihtiyacınız olan -u izleme işlemini başlatmak için bir kez. Daha sonra sadece kullan git push - Todd


Repo'unuzu başkalarıyla paylaşmıyorsanız, bunu itmek yararlıdır. herşey şubelerinizi uzaktan ve --set-upstream sizin için doğru izleme:

git push --all -u

(OP'nin sorduğu tam olarak değil, ama bu tek liner oldukça popüler)

Repo'unuzu başkalarıyla paylaşıyorsanız, bu çok iyi bir form değildir, çünkü tüm tehlikeli deneysel dallarınızla repoyu tıkayacaksınız.


448
2018-01-20 11:36



ve git pull --all Hepsini başka yere mi çekiyor? kewl - commonpike
Bu komut, herhangi bir şeye basmaya gerek kalmadan doğru şubeye kadar takip edilmesini sağlar. Teşekkür ederim. - amey91
Git bir şube işlemeye ve çok iyi nedenlerle itmeye izin vermez. Sadece git-it butonunu kullanmak, git mimarisinin bir parçasını bırakmak gibidir. Eğer sizin için çalışıyorsa, mükemmel, tamam, sonsuza kadar yapın. Ama LÜTFEN başkalarının bir şey yapmanın hızlı bir yolu olduğu için öğrenmekten kaçınmasını önermiyor. - Federico Razzoli
Bu gerçekten doğru bir cevap değildir ve ne yaptığını ve bunun ne anlama geldiğini gerçek bir açıklama olmadan tavsiye etmek için iyi bir araç değildir. Lütfen bu cevabı almayı düşünün. - akronymn
@Federico @akronymn Yapmanın tehlikelerini nerede bulabilirim? git push --all -u? - user1823664


Girişinden önce git push -u, hayır yoktu git push İstediğiniz şeyi elde etme seçeneği. Yeni yapılandırma ifadeleri eklemeliydin.

Kullanarak yeni bir şube oluşturursanız:

$ git checkout -b branchB
$ git push origin branchB:branchB

Kullanabilirsiniz git config doğrudan düzenleme önlemek için komut .git/config dosya.

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

Veya el ile düzenleyebilirsiniz .git/config dosyaya bu şubeye bilgi verilmişti.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

132
2018-05-04 13:03





Basitçe yeni oluşturmak için yerel şube, yap:

git branch <branch-name>

İtmek için uzak depo, yap:

git push -u origin <branch-name>

111
2018-04-24 12:09



git branch <branch-name> ve git checkout -b <branch-name>her ikisi de bir şube oluşturur ancak yeni şubeye geçiş anahtarı - Robert
parantez yok - jairhumberto
dostum aparatı oluşturmak ve itmek istediğiniz şube adı ile değiştirmek zorunda söz sadece. - piyushmandovra


Burada verilen çözümlerin hafif bir varyasyonu:

  1. Diğer (uzak veya yerel) şubelere dayalı bir yerel şube oluşturun:

    git checkout -b branchname
    
  2. Yerel şubeyi uzak depoya (yayın) itin, ancak izlenebilir hale getirin. git pull ve git push hemen çalışacak

    git push -u origin HEAD
    

    kullanma HEAD "geçerli dalı uzaktaki aynı adaya itmenin kullanışlı bir yoludur". Kaynak: https://git-scm.com/docs/git-push Git terimlerinde, HEAD (büyük harfle), geçerli dalın (ağacın) tepesine bir referanstır.

    -u seçenek sadece kısa --set-setupstream. Bu, mevcut şube için bir üst akış izleme referansı ekleyecektir. .git / config dosyanıza bakarak bunu doğrulayabilirsiniz:

    Enter image description here


55
2017-07-05 08:13



Teşekkür ederim :) git push -u origin <branch-name> benim için çalışmıyordum ama HEAD yerine <branch-name> mükemmel çalıştı :) - Daniel Tonon
Bu benim için çalışıyor. En iyi cevap işe yaramıyor. - jdhao
seviyorum HEAD - Yazmak için çok tembel ;-) - user776686
@ user776686, orada ne yaptığınızı bilmek zorundasınız, değil mi? - Yatrix
Bu cevabı sevin - "HEAD" yazarak bir (genellikle uzun veya kıvrımlı) şube adı tam adını yazmanın daha kolay yoludur. - JKubecki


Sanırım şu ana kadar bir projeyi klonladınız:

git clone http://github.com/myproject.git
  1. Daha sonra yerel kopyanızda yeni bir şube oluşturun ve kontrol edin:

    git checkout -b <newbranch>
    
  2. Sunucunuzda bir "git çıplak -" yapıldığını ve myapp.git'i oluşturduğunuzu varsayalım:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. Bundan sonra kullanıcılar yapabilmeli

    git clone http://example.com/var/git/myapp.git
    

NOT: Sunucunun çalıştığını ve çalıştığını farz ediyorum. Eğer değilse, işe yaramaz. İyi bir nasıl yapılır İşte.

KATMA

Uzak bir şube ekle:

git push origin master:new_feature_name

Her şeyin iyi olup olmadığını kontrol edin (kökeni alın ve uzak şubeleri listeleyin):

git fetch origin
git branch -r

Yerel bir şube oluşturun ve uzak şubeyi takip edin:

git checkout -tb new_feature_name origin/new_feature_name

Her şeyi güncelle:

git pull

27
2018-05-04 13:04



William'ın senaryosunu, uzak şubeleri ve bazı güvenlik önlemlerini de silmek için ek seçenekle aynı şeyi yapıyor. - Tobias Kienzler
> yerel şubeyi uzak repoya (yayın) itmek için, ancak bunu takip edin> izlenebilir, böylece git ve git basışları hemen çalışır. kodunuzu kendi depolarına bastığınızda otomatik olarak github ne yapar :-) - VP.
Bu soruya cevap vermez, orijinal repo'nun <newbranch> izlenebilir değildir (ve <master>, 3. adımda klonladığınız yeni repo'dur) olarak yeniden adlandırılır. - Lohrun
biraz aşırı gibi görünüyor. yapar git remote add origin yerel şubeyi izlenebilir hale getirmek? Buradaki anahtar komut mu? - Roni Yaniv
@Roni Yaniv: hayır git remote add origin sadece yeni bir uzak depoyu kaydedin. Şubenizi bu uzak depoya itmeden önce gereken bir adımdır (her seferinde tüm adresi yazmak istemiyorsanız) - Lohrun


Ben sadece yaparım

git push -u origin localBranch:remoteBranchToBeCreated

zaten klonlanmış bir proje üzerinde.

Git adlı yeni bir şube oluşturur remoteBranchToBeCreated benim taahhütlerim altında yaptım localBranch.


24
2018-03-20 11:13





Düzenle Modası geçmiş, sadece kullanım git push -u origin $BRANCHNAME


kullanım git publish-branch itibaren William'ın çeşitli Git araçları (ihtiyatlı repo ve klon).

Tamam, Ruby yok, yani - korumaları göz ardı ederek! - senaryonun son üç satırını al ve bir bash betiği yarat git-publish-branch:

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

O zaman koş git-publish-branch REMOTENAME BRANCHNAMEREMOTENAME genellikle kökeni olduğu yerde (senaryosunu varsayılan olarak alabilmek için betiği değiştirebilirsin, vs ...)


19
2018-05-04 13:03



Bu benim yakut kurduğumu varsayar. böyle bir şans yok. başka fikirler - Roni Yaniv
Ruby senaryo çağrıları git push ve git config Komut. Cevabımı düzenlemek için kodun kodunu kullandım. Bu bilgileri, sizin için zorlamayı yapan küçük bir kabuk betiği oluşturmak için kullanabilirsiniz. - Lohrun
William'ın çeşitli git araçları hareket etmiş gibi görünüyor (bu bağlantı artık öldü). Çalışan bir link: gitorious.org/willgit - Mike D
"William'ın" bağlantısı tekrar kırıldı; yeni bağlantı görünüyor git-wt-commit.rubyforge.org - ScottJ


Mevcut şubeden ayrılarak yeni bir şube oluşturmak

git checkout -b <new_branch>

ve sonra bu yeni dalı kullanarak depoya itin

git push -u origin <new_branch>

Bu, tüm yerel taahhütleri yeni oluşturulmuş bir uzak şube oluşturur ve iter origin/<new_branch>


15
2018-06-03 20:36





Yeni bir şube oluşturduğumda, uzak şubeyi buna göre itecek ve izleyecek bir takma ad verdim. Aşağıdaki yığınları koydum .bash_profile dosya:

# Create a new branch, push to origin and track that remote branch
publishBranch() {
  git checkout -b $1
  git push -u origin $1
}
alias gcb=publishBranch

kullanım: sadece yaz gcb thuy/do-sth-kool ile thuy/do-sth-kool yeni şube adım.


7
2018-01-05 10:11





1.7'den önceki GitLab sürümü için şunu kullanın:

git checkout -b name_branch

(name_branch, eski: ana)

Uzak depoya itmek için şunu yapın:

git push -u origin name_new_branch

(name_new_branch, örnek: özellik)


5
2017-12-06 18:42