pengembangan-web-mp-pd.com

Bagaimana cara Mendorong cabang lokal baru ke repositori Git jarak jauh dan melacaknya juga?

Saya ingin dapat melakukan hal berikut:

  1. Buat cabang lokal berdasarkan beberapa cabang lain (jarak jauh atau lokal) (via git branch atau git checkout -b)

  2. Dorong cabang lokal ke repositori jarak jauh (publikasikan), tetapi membuatnya dapat dilacak sehingga git pull dan git Push akan segera bekerja.

Bagaimana aku melakukan itu?

Saya tahu tentang --set-upstream di Git 1.7, tapi itu adalah tindakan pasca-kreasi. Saya ingin menemukan cara untuk membuat perubahan serupa ketika mendorong cabang ke repositori jarak jauh.

3956
Roni Yaniv

Di Git 1.7.0 dan yang lebih baru, Anda dapat checkout cabang baru:

git checkout -b <branch>

Edit file, tambahkan dan komit. Kemudian Dorong dengan -u (kependekan dari --set-upstream) opsi:

git Push -u Origin <branch>

Git akan mengatur informasi pelacakan selama Push.

6188
Daniel Ruoso

Jika Anda tidak membagikan repo Anda dengan orang lain, ini berguna untuk mendorong semua cabang Anda ke remote, dan --set-upstream melacak dengan benar untuk Anda:

git Push --all -u

(Tidak persis apa yang diminta OP, tapi liner satu ini cukup populer)

Jika Anda membagikan repo kepada orang lain, ini bukan bentuk yang baik karena Anda akan menyumbat repo dengan semua cabang eksperimental Anda yang cerdik.

470
ErichBSchulz

Sebelum pengenalan git Push -u, tidak ada opsi git Push untuk mendapatkan apa yang Anda inginkan. Anda harus menambahkan pernyataan konfigurasi baru.

Jika Anda membuat cabang baru menggunakan:

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

Anda dapat menggunakan perintah git config untuk menghindari pengeditan langsung file .git/config.

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

Atau Anda dapat mengedit file .git/config secara manual untuk mendapatkan informasi pelacakan ke cabang ini.

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

Sederhananya, untuk membuat cabang baru local , lakukan:

git branch <branch-name>

Untuk mendorongnya ke remote repositori, lakukan:

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

Sedikit variasi dari solusi yang sudah diberikan di sini:

  1. Buat cabang lokal berdasarkan beberapa cabang lain (jarak jauh atau lokal):

    git checkout -b branchname
    
  2. Dorong cabang lokal ke repositori jarak jauh (publikasikan), tetapi membuatnya dapat dilacak sehingga git pull dan git Push akan segera bekerja

    git Push -u Origin HEAD
    

    Menggunakan HEAD adalah "cara praktis untuk mendorong cabang saat ini ke nama yang sama pada remote". Sumber: https://git-scm.com/docs/git-Push Dalam istilah Git, HEAD (dalam huruf besar) adalah referensi ke bagian atas cabang saat ini (pohon).

    Opsi -u hanya kependekan dari --set-setupstream. Ini akan menambahkan referensi pelacakan hulu untuk cabang saat ini. Anda dapat memverifikasi ini dengan melihat file .git/config Anda:

     Enter image description here

78
bg17aw

Saya hanya melakukannya

git Push -u Origin localBranch:remoteBranchToBeCreated

lebih dari proyek yang sudah dikloning.

Git membuat cabang baru bernama remoteBranchToBeCreated di bawah komit yang saya lakukan di localBranch.

32
Arda

Saya kira Anda sudah mengkloning proyek seperti:

git clone http://github.com/myproject.git
  1. Kemudian di salinan lokal Anda, buat cabang baru dan periksa:

    git checkout -b <newbranch>
    
  2. Andaikan Anda membuat "git bare --init" di server dan membuat myapp.git, Anda harus:

    git remote add Origin ssh://example.com/var/git/myapp.git
    git Push Origin master
    
  3. Setelah itu, pengguna harus bisa

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

CATATAN: Saya berasumsi bahwa Anda memiliki server Anda dan berjalan. Jika tidak, itu tidak akan berhasil. Cara yang baik adalah di sini .

TAMBAH

Tambahkan cabang jarak jauh:

git Push Origin master:new_feature_name

Periksa apakah semuanya baik (ambil Asal dan daftar cabang jarak jauh):

git fetch Origin
git branch -r

Buat cabang lokal dan lacak cabang jarak jauh:

git checkout -tb new_feature_name Origin/new_feature_name

Perbarui semuanya:

git pull
29
VP.

edit Kedaluwarsa, cukup gunakan git Push -u Origin $BRANCHNAME


Gunakan git publish-branch dari alat Git lain-lain William ( repo gitorious dan clone ).

OK, tidak ada Ruby, jadi - mengabaikan perlindungan! - ambil tiga baris terakhir skrip dan buat skrip bash, 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}

Kemudian jalankan git-publish-branch REMOTENAME BRANCHNAME, di mana REMOTENAME biasanya Origin (Anda dapat memodifikasi skrip untuk mengambil Origin sebagai default, dll ...)

22
Tobias Kienzler

Untuk membuat cabang baru dengan bercabang dari cabang yang ada

git checkout -b <new_branch>

dan kemudian Dorong cabang baru ini ke repositori menggunakan

git Push -u Origin <new_branch>

Ini membuat dan mendorong semua komit lokal ke cabang jarak jauh yang baru dibuat Origin/<new_branch>

19
cptjack

Untuk versi GitLab sebelum 1.7, gunakan:

git checkout -b name_branch

(name_branch, mis: master)

Untuk mendorongnya ke repositori jarak jauh, lakukan:

git Push -u Origin name_new_branch

(name_new_branch, contoh: feature)

10
Fadid

Saya membuat alias sehingga setiap kali saya membuat cabang baru, itu akan mendorong dan melacak cabang jarak jauh sesuai. Saya memasukkan potongan berikut ke dalam file .bash_profile:

# 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

Penggunaan : ketikkan gcb thuy/do-sth-kool dengan thuy/do-sth-kool adalah nama cabang baru saya.

8
Thuy Trinh

Membangun sedikit jawaban di sini, saya telah membungkus proses ini sebagai skrip Bash sederhana, yang tentu saja dapat digunakan sebagai alias Git juga.

Tambahan penting bagi saya adalah bahwa ini meminta saya untuk menjalankan tes unit sebelum melakukan dan meneruskan nama cabang saat ini secara default.

$ 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