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

Saya ingin dapat melakukan hal berikut:

  • Buat cabang lokal berdasarkan beberapa cabang lain (jarak jauh atau lokal) (melalui git branch git checkout -b atau git checkout -b )

  • Klik cabang lokal ke repositori jarak jauh (publikasikan), tetapi lakukan ini agar git pull dan git push akan bekerja segera.

Bagaimana cara melakukannya?

Saya tahu tentang --set-upstream di Git 1.7, tapi ini adalah aksi setelah pembuatan. Saya ingin menemukan cara untuk membuat perubahan serupa ketika saya mengklik cabang pada repositori jarak jauh.

3689
04 мая '10 в 15:58 2010-05-04 15:58 Roni Yaniv bertanya pada 04 Mei '10 pada 15:58 2010-05-04 15:58
@ 13 jawaban

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

 git checkout -b <branch> 

Mengedit file, menambah dan memperbaiki. Kemudian klik dengan opsi -u (kependekan --set-upstream ) :

 git push -u origin <branch> 

Git akan mengatur informasi pelacakan saat Anda mengklik.

5823
03 июня '11 в 23:50 2011-06-03 23:50 jawabannya diberikan Daniel Ruoso 03 Juni '11 pada 23:50 2011-06-03 23:50

Jika Anda tidak membagikan repo Anda dengan pengguna lain, ini berguna untuk mendorong semua cabang Anda ke yang jauh, dan --set-upstream tepat untuk Anda:

 git push --all -u 
border=0

(Tidak persis seperti yang diminta OP, tetapi antarmuka satu baris ini cukup populer)

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

449
20 янв. Jawaban diberikan oleh ErichBSchulz 20 Jan 2014-01-20 14:36 '14 pada 14:36 2014-01-20 14:36

Sebelum pengenalan git push -u tidak ada opsi git push untuk mendapatkan apa yang Anda inginkan. Anda harus menambahkan instruksi konfigurasi baru.

Jika Anda membuat cabang baru, gunakan:

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

Anda dapat menggunakan perintah git config untuk menghindari pengeditan >.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 tentang melacak utas ini.

 [branch "branchB"] remote = origin merge = refs/heads/branchB 
133
04 мая '10 в 16:03 2010-05-04 16:03 Jawaban diberikan oleh Lohrun pada 04 Mei '10 pada 16:03 2010-05-04 16:03

Sederhananya, untuk membuat cabang lokal baru, lakukan:

 git branch <branch-name> 

Untuk memindahkannya ke repositori jarak jauh , ikuti >

 git push -u origin <branch-name> 
111
24 апр. jawaban yang diberikan oleh piyushmandovra pada 24 April 2015-04-24 15:09 '15 pada 15:09 2015-04-24 15:09

Variasi kecil dari solusi yang sudah diajukan:

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

     git checkout -b branchname 
  2. Klik cabang lokal ke repositori jarak jauh (publikasikan), tetapi buatlah itu dapat dilacak, sehingga git pull dan git push akan bekerja segera

     git push -u origin HEAD 

    Menggunakan HEAD adalah "cara mudah untuk menerjemahkan cabang saat ini ke nama yang sama pada remote control". Sumber: https://git-scm.com/docs/git-push Dalam istilah Git HEAD (huruf besar) adalah tautan ke atas cabang saat ini (pohon).

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

    2019

Saya berasumsi bahwa Anda telah mengkloning proyek, misalnya:

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

     git checkout -b <newbranch> 
  • Misalkan 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 
  • Setelah itu, pengguna harus bisa

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

CATATAN . Saya menganggap server Anda sedang berjalan. Jika tidak, itu tidak akan berhasil. Panduan praktis yang bagus ada di sini .

TAMBAH

Tambahkan cabang jarak jauh:

 git push origin master:new_feature_name 

Periksa apakah semuanya baik-baik saja (pilih awal 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 semua:

 git pull 
27
Jawabannya diberikan oleh VP. 2010-05-04 16:04 04 Mei '10 pada 16:04 2010-05-04 16:04

Saya hanya melakukannya

 git push -u origin localBranch:remoteBranchToBeCreated 

lebih dari proyek yang sudah dikloning.

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

24
20 марта '17 в 14:13 2017-03-20 14:13 jawabannya diberikan oleh Arda 20 Maret '17 pada 14:13 2017-03-20 14:13

edit usang, cukup gunakan git push -u origin $BRANCHNAME


Gunakan git publish-branch dari berbagai alat Git milik William ( repo dan klon gitorious ).

Yah, tidak ada Ruby, jadi abaikan tindakan pencegahan! - ambil tiga baris terakhir skrip dan buat skrip bash, git-publish-branch :

19
04 мая '10 в 16:03 2010-05-04 16:03 membalas Tobias Kienzler pada 04 Mei '10 pukul 16:03 2010-05-04 16:03

Untuk membuat cabang baru, pisahkan dari cabang yang ada

git checkout -b <new_branch>

dan kemudian klik utas baru ini di repositori menggunakan

git push -u origin <new_branch>

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

16
03 июня '15 в 23:36 2015-06-03 23:36 jawabannya diberikan oleh cptjack 03 Juni '15 di 23:36 2015-06-03 23:36

Saya membuat alias, jadi setiap kali saya membuat cabang baru, itu akan menghapus dan melacak cabang jauh dengan tepat. Saya menaruh cuplikan berikut di 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 : cukup ketik gcb thuy/do-sth-kool dengan thuy/do-sth-kool - ini adalah nama cabang baru saya.

7
05 янв. jawabannya diberikan oleh Thuy Trinh 05 Jan 2016-01-05 13:11 '16 pada 13:11 2016-01-05 13:11

Untuk GitLab versi 1.7, gunakan:

git checkout -b name_branch

(name_branch, mis: master)

Untuk mengirimnya ke repositori jarak jauh, ikuti >

git push -u origin name_new_branch

(name_new_branch, contoh: fungsi)

6
06 дек. Jawabannya diberikan Fadid 06 Desember. 2016-12-06 21:42 '16 pada 21:42 2016-12-06 21:42

Mengandalkan sedikit jawaban di sini, saya membungkus proses ini sebagai skrip bash sederhana, yang, tentu saja, dapat digunakan sebagai alias untuk Git.

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

 $ 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} eg 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} eg 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 
1
21 апр. Jawabannya diberikan Brad Parks 21 April. 2017-04-21 16:30 '17 pukul 16:30 2017-04-21 16:30

Untuk memuat cabang lokal repositori publik, Anda perlu cd untuk membuka repositori bersama, dan kemudian menggunakan kode berikut:

 git push -u origin branchname 
-8
26 июня '15 в 12:37 2015-06-26 12:37 jawabannya diberikan oleh shankar kumar 26 Juni '15 di 12:37 2015-06-26 12:37

Pertanyaan lain tentang tag atau Ajukan Pertanyaan