web-gelistirme-sc.com

Yeni bir yerel şubeyi uzak Git deposuna nasıl iter ve onu nasıl izlerim?

Aşağıdakileri yapabilmek istiyorum:

  1. Diğer (uzak veya yerel) bir dalı temel alan bir yerel şube oluşturun (git branch veya git checkout -b aracılığıyla)

  2. Yerel şubeyi uzak havuza itin (yayınlayın), ancak izlenebilir hale getirin, böylece git pull ve git Push hemen çalışır.

Bunu nasıl yaparım?

Git 1.7'deki --set-upstream hakkında bilgim var, ancak bu bir oluşturma sonrası eylemdir. Şubeyi uzak havuza iterken benzer bir değişiklik yapmanın bir yolunu bulmak istiyorum.

3956
Roni Yaniv

Git 1.7.0 ve sonrasında, yeni bir şubeye göz atabilirsiniz:

git checkout -b <branch>

Dosyaları düzenleyin, ekleyin ve kabul edin. Sonra -u (ile birlikte --set-upstream için kısa) seçeneğine basın

git Push -u Origin <branch>

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

6188
Daniel Ruoso

Reponuzu başkalarıyla paylaşmıyorsanız, şubelerinizi uzaktan kumandaya tümü itin ve --set-upstream sizin için doğru şekilde izliyorsa yararlıdır:

git Push --all -u

(OP'nin tam olarak istediği şey değildi, ama bu tek gömlek oldukça popüler)

Repo'nuzu başkaları ile paylaşıyorsanız, bu gerçekten iyi bir form değildir, çünkü repoyu tüm tehlikeli deney dallarınızla tıkayacaksınız.

470
ErichBSchulz

git Push -u uygulamasından önce, istediğinizi elde etmek için git Push seçeneği yoktu. Yeni yapılandırma ifadeleri eklemek zorundaydınız.

Aşağıdakileri kullanarak yeni bir şube oluşturursanız:

$ git checkout -b branchB
$ git Push Origin branchB:branchB

Doğrudan git config dosyasını düzenlemekten kaçınmak için .git/config komutunu kullanabilirsiniz.

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

Veya bu dalda izleme bilgilerine sahip olmak için .git/config dosyasını elle düzenleyebilirsiniz.

[branch "branchB"]
    remote = Origin
    merge = refs/heads/branchB
140
Lohrun

Basitçe söylemek gerekirse, yeni yerel dalı oluşturmak için şunları yapın:

git branch <branch-name>

remote repository öğesine itmek için şunu yapın:

git Push -u Origin <branch-name>
119
piyushmandovra

Zaten burada verilen çözümlerin küçük bir varyasyonu:

  1. Başka bir uzak (yerel veya uzak) dalı temel alan yerel bir şube oluşturun:

    git checkout -b branchname
    
  2. Yerel şubeyi uzak havuza itin (yayınlayın), ancak izlenebilir hale getirin, böylece git pull ve git Push hemen çalışır

    git Push -u Origin HEAD
    

    HEAD işlevini kullanmak "geçerli dalı uzaktan kumandada aynı ada itmek için kullanışlı bir yoldur". Kaynak: https://git-scm.com/docs/git-Push Git terimlerinde, HEAD (büyük harflerle), geçerli dalın (ağacın) bir referansıdır.

    -u seçeneği, --set-setupstream için kısadır. Bu, geçerli dal için yukarı akış izleme referansı ekleyecektir. Bunu, .git/config dosyasına bakarak doğrulayabilirsiniz:

     Enter image description here

78
bg17aw

Sadece yapıyorum

git Push -u Origin localBranch:remoteBranchToBeCreated

zaten klonlanmış bir proje üzerinde.

Git, remoteBranchToBeCreated içinde yaptığım taahhütlerimin altında localBranch adlı yeni bir dal oluşturur.

32
Arda

Sanırım zaten böyle bir projeyi klonladınız:

git clone http://github.com/myproject.git
  1. Ardından yerel kopyanızda yeni bir dal oluşturun ve kontrol edin:

    git checkout -b <newbranch>
    
  2. Sunucunuzda "git bare - init" yaptığınızı ve myapp.git dosyasını yarattığınızı 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: Sunucunuzun çalışır durumda olduğunu farz ediyorum. Olmazsa, işe yaramaz. İyi bir nasıl yapılır: burada .

KATMA

Uzak dal ekle:

git Push Origin master:new_feature_name

Her şeyin yolunda olup olmadığını kontrol edin (Kökeni alın ve uzaktaki dalları listeler):

git fetch Origin
git branch -r

Yerel bir şube oluşturun ve uzak şubeyi izleyin:

git checkout -tb new_feature_name Origin/new_feature_name

Her şeyi güncelle:

git pull
29
VP.

edit Eski, sadece git Push -u Origin $BRANCHNAME kullan


William'ın çeşitli Git araçlarından ( göz alıcı repo ve klon ) git publish-branch komutunu kullanın.

Tamam, hayır Ruby, yani - korumaları görmezden geliyorum! - betiğin son üç satırını alın ve bir bash betiği oluşturun, 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}

Ardından REMOTENAME genellikle Origin olan git-publish-branch REMOTENAME BRANCHNAME komutunu çalıştırın (Origin'i varsayılan olarak alacak şekilde komut dosyasını değiştirebilirsiniz, vb.)

22
Tobias Kienzler

Mevcut bir şubeden ayrılarak yeni bir şube oluşturmak için

git checkout -b <new_branch>

ve ardından Bu yeni şubeyi kullanarak depoya itin.

git Push -u Origin <new_branch>

Bu, tüm yerel taahhütleri oluşturur ve yeni oluşturulan bir uzak şubeye iter. Origin/<new_branch>

19
cptjack

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

git checkout -b name_branch

(name_branch, ex: master)

Uzak havuza itmek için şunları yapın:

git Push -u Origin name_new_branch

(name_new_branch, örnek: feature)

10
Fadid

Ne zaman yeni bir şube oluştursam, uzaktaki dalı itip izleyecek şekilde takma ad oluşturdum. Aşağıdaki kodu .bash_profile dosyasına yerleştirdim:

# 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 gcb thuy/do-sth-kool yazıp thuy/do-sth-kool ile yeni dal adım.

8
Thuy Trinh

Buradaki cevaplara biraz dayanarak, bu işlemi elbette Git takma adı olarak da kullanılabilecek basit bir Bash betiği olarak tamamladım.

Bana göre önemli olan şey, bunun taahhüt etmeden önce birim sınamaları yapmamı ve mevcut dal adına varsayılan olarak geçmesini istememdir.

$ git_Push_new_branch.sh

  Have you run your unit tests yet? If so, pass OK or a branch name, and try again

  usage: git_Push_new_branch {OK|BRANCH_NAME}

  e.g.

  git_Push_new_branch           -> Displays Prompt reminding you to run unit tests
  git_Push_new_branch OK        -> Pushes the current branch as a new branch to the Origin
  git_Push_new_branch MYBRANCH  -> Pushes branch MYBRANCH as a new branch to the Origin

git_Push_new_branch.sh

function show_help()
{
  IT=$(CAT <<EOF

  Have you run your unit tests yet? If so, pass OK or a branch name, and try again

  usage: git_Push_new_branch {OK|BRANCH_NAME}

  e.g.

  git_Push_new_branch.sh           -> Displays Prompt reminding you to run unit tests
  git_Push_new_branch.sh OK        -> Pushes the current branch as a new branch to the Origin
  git_Push_new_branch.sh MYBRANCH  -> Pushes branch MYBRANCH as a new branch to the Origin

  )
  echo "$IT"
  exit
}

if [ -z "$1" ]
then
  show_help
fi

CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$1" == "OK" ]
then
  BRANCH=$CURR_BRANCH
else
  BRANCH=${1:-$CURR_BRANCH}
fi

git Push -u Origin $BRANCH
2
Brad Parks