Pertanyaan 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 pada cabang lain (jarak jauh atau lokal) (via git branch atau git checkout -b)

  2. Dorong cabang lokal ke repositori jarak jauh (mempublikasikan), tetapi buatlah dapat dilacak begitu git pull dan git push akan segera bekerja.

Bagaimana aku melakukan itu?

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


3649
2018-05-04 12:58


asal


Jawaban:


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

git checkout -b <branch>

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

git push -u origin <branch>

Git akan mengatur informasi pelacakan selama push.


5749
2018-06-03 20:50



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

git push --all -u

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

Jika Anda berbagi repo Anda dengan orang lain, ini bukan formulir yang benar-benar bagus karena Anda akan menyumbat repo dengan semua cabang eksperimental yang cerdik.


448
2018-01-20 11:36



Sebelum pengenalan git push -u, tidak ada git push pilihan 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 git config perintah untuk menghindari pengeditan secara langsung .git/config mengajukan.

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

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

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

132
2018-05-04 13:03



Sederhananya, untuk membuat yang baru lokal cabang, lakukan:

git branch <branch-name>

Untuk mendorongnya ke terpencil repositori, lakukan:

git push -u origin <branch-name>

111
2018-04-24 12:09



Sedikit variasi dari solusi yang sudah diberikan di sini:

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

    git checkout -b branchname
    
  2. Dorong cabang lokal ke repositori jarak jauh (publikasikan), tetapi buat dapat dilacak begitu 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 (pohon) saat ini.

    Itu -u hanya opsi singkat --set-setupstream. Ini akan menambahkan referensi pelacakan upstream untuk cabang saat ini. Anda dapat memverifikasi ini dengan mencari di file .git / config Anda:

    Enter image description here


55
2017-07-05 08:13



Saya kira Anda telah 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. Seandainya Anda membuat "git bare --init" di server Anda 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 sini.

DITAMBAHKAN

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 segalanya:

git pull

27
2018-05-04 13:04



Saya hanya melakukannya

git push -u origin localBranch:remoteBranchToBeCreated

atas proyek yang sudah dikloning.

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


24
2018-03-20 11:13



sunting Ketinggalan waktu, hanya digunakan git push -u origin $BRANCHNAME


Menggunakan git publish-branch dari Alat Git bermacam-macam milik William (repo gitorious dan klon).

OK, tidak ada Ruby, jadi - abaikan pengamanannya! - mengambil tiga baris terakhir dari skrip dan membuat 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}

Lalu lari git-publish-branch REMOTENAME BRANCHNAME, di mana REMOTENAME biasanya berasal (Anda dapat memodifikasi skrip untuk mengambil asal sebagai default, dll ...)


19
2018-05-04 13:03