Saya ingin dapat melakukan hal berikut:
Buat cabang lokal berdasarkan beberapa cabang lain (jarak jauh atau lokal) (via
git branch
ataugit checkout -b
)Dorong cabang lokal ke repositori jarak jauh (publikasikan), tetapi membuatnya bisa dilacak jadi
git pull
dangit push
akan segera bekerja.
Bagaimana aku melakukan itu?
Saya tahu tentang --set-upstream
Git 1.7, tapi itu adalah tindakan pasca-penciptaan. Saya ingin menemukan cara untuk membuat perubahan serupa ketika mendorong cabang ke repositori jarak jauh.
git
repository
git-branch
git-push
git-remote
Roni Yaniv
sumber
sumber
Jawaban:
Di Git 1.7.0 dan yang lebih baru, Anda dapat checkout cabang baru:
Edit file, tambahkan dan komit. Kemudian dorong dengan
-u
(kependekan dari--set-upstream
) :Git akan mengatur informasi pelacakan selama push.
sumber
push.default
disetel keupstream
, ini tidak akan melakukan apa yang menurut Anda akan dilakukan. Ini akan mencoba untuk mendorong cabang pelacakan yang ada. Gunakan:git push -u origin mynewfeature:mynewfeature
atau lakukangit branch --unset-upstream
dulu.-u
opsi setiap kali kita mendorong cabang ke jarak jauh atau hanya membutuhkannya pertama kali?-u
sekali untuk memulai pelacakan. Setelah itu gunakan sajagit push
Jika Anda tidak membagikan repo Anda dengan orang lain, ini berguna untuk mendorong semua cabang Anda ke kendali jarak jauh, dan
--set-upstream
melacak dengan benar untuk Anda:(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.
sumber
git pull --all
menarik semuanya kembali ke tempat lain? kewlgit push --all -u
?Sebelum pengenalan
git push -u
, tidak adagit push
pilihan untuk mendapatkan apa yang Anda inginkan. Anda harus menambahkan pernyataan konfigurasi baru.Jika Anda membuat cabang baru menggunakan:
Anda dapat menggunakan
git config
perintah untuk menghindari pengeditan.git/config
file secara langsung .Atau Anda dapat mengedit
.git/config
file secara manual untuk mendapatkan informasi pelacakan ke cabang ini.sumber
git push origin -u local_branch:remote_branch
Sederhananya, untuk membuat cabang lokal baru , lakukan:
Untuk mendorongnya ke repositori jarak jauh , lakukan:
sumber
git branch <branch-name>
dangit checkout -b <branch-name>
keduanya membuat cabang tetapi checkout beralih ke cabang barusrc branch-name does not match any
Sedikit variasi dari solusi yang sudah diberikan di sini:
Buat cabang lokal berdasarkan beberapa cabang lain (jarak jauh atau lokal):
Dorong cabang lokal ke repositori jarak jauh (publikasikan), tetapi membuatnya bisa dilacak jadi
git pull
dangit push
akan segera bekerjaMenggunakan
HEAD
adalah "cara praktis untuk mendorong cabang saat ini ke nama yang sama di remote". Sumber: https://git-scm.com/docs/git-push Dalam istilah Git, HEAD (dalam huruf besar) adalah referensi ke atas cabang saat ini (pohon).The
-u
pilihan adalah hanya singkat untuk--set-upstream
. Ini akan menambahkan referensi pelacakan hulu untuk cabang saat ini. Anda dapat memverifikasi ini dengan melihat file .git / config Anda:sumber
git push -u origin <branch-name>
tidak bekerja untuk saya tetapi menggunakanHEAD
bukannya<branch-name>
bekerja dengan sempurna :)Saya hanya melakukannya
lebih dari proyek yang sudah dikloning.
Git membuat cabang baru bernama di
remoteBranchToBeCreated
bawah komit saya yang saya lakukan dilocalBranch
.Sunting : ini mengubah
localBranch
hulu cabang lokal Anda (mungkin bernama ) menjadiorigin/remoteBranchToBeCreated
. Untuk memperbaikinya, cukup ketik:Jadi cabang lokal Anda sekarang melacak
origin/localBranch
kembali.sumber
error: src refspec <new branch> does not match any.
ketika saya mencoba ini.Saya kira Anda sudah mengkloning proyek seperti:
Kemudian di salinan lokal Anda, buat cabang baru dan periksa:
Andaikan Anda membuat "git bare --init" di server Anda dan membuat myapp.git, Anda harus:
Setelah itu, pengguna harus bisa
CATATAN: Saya berasumsi bahwa server Anda sudah aktif dan berjalan. Jika tidak, itu tidak akan berhasil. Cara yang baik ada di sini .
TAMBAH
Tambahkan cabang jarak jauh:
Periksa apakah semuanya baik (ambil asal dan daftar cabang jarak jauh):
Buat cabang lokal dan lacak cabang jarak jauh:
Perbarui semuanya:
sumber
git remote add origin
cabang lokal dapat dilacak? apakah itu perintah kuncinya di sini?git remote add origin
hanya mendaftarkan repositori jarak jauh baru. Ini hanya langkah yang diperlukan sebelum mendorong cabang Anda ke repositori jarak jauh (jika Anda tidak ingin mengetikkan seluruh alamat setiap kali)sunting usang, cukup gunakan
git push -u origin $BRANCHNAME
Gunakan
git publish-branch
dari alat Git lain-lain William ( repo dan klon gitorious ).OK, tidak ada Ruby, jadi - abaikan pengamanan! - mengambil tiga baris terakhir dari naskah dan membuat script bash,
git-publish-branch
:Kemudian jalankan
git-publish-branch REMOTENAME BRANCHNAME
, tempat REMOTENAME biasanya asal (Anda dapat memodifikasi skrip untuk mengambil asal sebagai default, dll ...)sumber
git push
dangit config
perintah skrip ruby . Saya menggunakan kode skrip untuk mengedit jawaban saya. Anda dapat menggunakan informasi ini untuk membuat skrip shell kecil yang mendukung Anda.Untuk membuat cabang baru dengan bercabang dari cabang yang ada
dan kemudian dorong cabang baru ini ke repositori menggunakan
Ini membuat dan mendorong semua komit lokal ke cabang jarak jauh yang baru dibuat
origin/<new_branch>
sumber
Untuk versi GitLab sebelum 1.7, gunakan:
(name_branch, ex:
master
)Untuk mendorongnya ke repositori jarak jauh, lakukan:
(name_new_branch, misalnya:
feature
)sumber
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
.bash_profile
file:Penggunaan : ketikkan saja
gcb thuy/do-sth-kool
denganthuy/do-sth-kool
nama cabang baru saya.sumber
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
sumber
Anda dapat melakukannya dalam 2 curam:
1. Gunakan
checkout
untuk buat cabang lokal:Bekerja dengan Cabang Anda seperti yang Anda inginkan.
2. Gunakan
push
perintah untuk membuat cabang secara otomatis dan mengirim kode ke repositori jarak jauh:sumber
Untuk fleksibilitas terbaik, Anda bisa menggunakan perintah custom Git . Misalnya, buat skrip Python berikut di suatu tempat di
$PATH
bawah nama Andagit-publish
dan buat agar dapat dieksekusi:Maka
git publish -h
akan muncul informasi penggunaan:sumber