Saya memiliki dua cabang, master dan dev. Saya selalu bekerja pada dev dan hanya memeriksa kode ke cabang master setelah disetujui untuk penggunaan produksi. Ketika saya melakukannya, saya harus melakukan hal berikut:
git checkout master
git merge dev
git checkout dev
Itu sangat bertele-tele, dan karena saya sering melakukannya, saya ingin menguranginya. Apakah ada satu perintah git yang bisa saya gunakan untuk menggabungkan dari dev cabang saya saat ini ke master cabang lain tanpa harus checkout cabang master terlebih dahulu? Sesuatu yang mungkin seperti:
git merge dev to master
akan menjadi hebat. Saya melihat-lihat dokumentasi git dan tidak melihat apa-apa.
git
version-control
Chris
sumber
sumber
git stash
,git checkout master
,git merge dev
,git checkout dev
,git stash pop
.Jawaban:
1. Tambahkan alias jarak jauh untuk repositori lokal Anda, mis:
(Atau di windows
git remote add self C:\path\to\your\repository
)2. Dorong ke remote sendiri, mis:
sumber
/path/to/your/repository
ini adalah jalur ke pohon kerja Anda, yaitu jangan sertakan.git
direktori. Juga, ini harus dilakukan tanpa mengatakan: remote harus diperbarui jika Anda memindahkan repo.git remote add self file:///c/projects
hanya datang kembali dengan catatan penggunaandev
) dan kemudian mendorong komit gabungan menggunakangit push self dev:master
..
bekerja dengan baik bagi saya:git push . head:master
.Jawaban terpilih tertinggi saat ini oleh @zerome adalah jawaban yang bagus, tetapi agak tidak perlu.
Di dasar git repo Anda, Anda bisa melakukan ini:
git push . dev:master
Solusi yang lebih umum yang akan bekerja di mana saja di pohon adalah:
sumber
git push . dev:master
menyederhanakan hidup saya! Jawaban terbaik sejauh ini, terima kasihgit push origin dev:master
merge --no-ff
perilaku dengan ini?git remote add self file:///myRepo
?Taruhan terbaik Anda adalah menggunakan alias, yang ditempatkan di gitconfig global Anda (
~/.gitconfig
):sehingga Anda dapat menjalankannya dari repositori apa pun sebagai
sumber
&&
, tidak;
, itu akan gagal penggabungan, dan tidak mencoba untuk beralih kembali. Semoga pengguna cukup pintar untuk melihat pesan "gagal digabung" dan menanganinya.merge-to = "!f() { export tmp_branch=
cabang git ini | grep '*' | tr -d '*'; git checkout $1 && echo git merge $tmp_branch && echo git checkout $tmp_branch; unset $tmp_branch; }; f"
, itu mari saya tidak perlu mengetik di cabang saya saat ini, jadi jika saya ingin menggabungkandev
ke dalammaster
dan aku didev
saat aku hanya mengetikgit merge-to master
merge-to = "!f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '`; git checkout $1 && git merge $tmp_branch && git checkout $tmp_branch; unset $tmp_branch; }; f"
git branch | grep '* ' | tr -d '* '
; git checkout $ 1 && git merge --no-ff $ tmp_branch && git checkout $ tmp_branch; unset tmp_branch;}; f"Sedikit modifikasi dari Jefromi alias yang tidak mengharuskan Anda mengetikkan cabang saat ini.
Jadi Anda menggunakannya seperti:
git merge-to dev
.Ini akan beralih ke
dev
cabang, menggabungkannya dengan CURRENT dan kemudian akan beralih kembali.Misalnya, dengan asumsi Anda berada di
master
cabang, itu akan menggabungkan master menjadi dev dan Anda masih akan menjadi master.Itu pasti pergi ke dotfiles saya :)
sumber
Ini sudah tua, tapi ...
Menggabungkan solusi dari @ kevin-lyda dan @ dmytrii-nagirniak di atas. alias ini menggabungkan cabang saat ini ke cabang yang ditentukan. Ia menggunakan metode remote dengan dan menggunakan perintah git untuk mendapatkan konteks.
Untuk digunakan seperti:
sumber
Untuk menggabungkan cabang saat ini ke cabang lain tanpa memeriksa cabang lainnya:
Penggabungan maju cepat
Ini sangat mudah. Menurut definisi, gabungan maju-cepat berarti penunjuk cabang dipindahkan di depan di pohon komit. Jadi yang perlu Anda lakukan hanyalah mensimulasikan bahwa:
Kiat: Jika Anda melakukan
git fetch
dan memiliki komitmen baruorigin/master
, Anda dapat memindahkanmaster
cabang tanpa memeriksa menggunakan:Gabungkan melalui gabungkan komit
Ini tidak selalu memungkinkan. Untuk membuat komit gabungan, Anda harus melakukan operasi gabungan. Dan untuk melakukan operasi penggabungan, Anda harus memiliki komit di cabang lain yang tidak ada di cabang saat ini.
Jika Anda memiliki komitmen di
master
cabang yang tidak ada didev
cabang, Anda dapat:Penjelasan:
Gabungkan
master
ke cabang sementara dan luncurkan editor pesan komit. Jika Anda ingin komit gabungan terlihat seperti Anda telah menggabungkandev
cabangmaster
, edit dari ini:untuk ini:
Kiat: Anda bisa menggunakan
-m "Merge branch 'dev'"
alih-alih-e
lebih cepat.master
penunjuk cabang untuk menunjuk ke komit gabungan.dev
rantingnya.Ini masih menyentuh pohon kerja Anda, tetapi minimal ya. Itu tidak memutar kembali pohon sampai ke keadaan asli
master
hanya untuk membawa perubahan pengembangan sekali lagi. Beberapa mungkin tidak peduli, tetapi bagi yang lain mungkin penting.sumber
Sering kali Anda berasal dari cabang yang ingin Anda gabungkan dengan cabang saat ini. Dalam hal ini Anda dapat melakukan:
git co - && git merge @{-1}
sebagai contoh:
sumber
Solusi saya mirip dengan jawaban lain, dengan perbedaan-perbedaan berikut:
set -ex
sehingga setiap perintah dicetak dan jika fungsi gagal segera keluargit merge
: git merge
yang memastikan penyelesaian-tab bekerja dengan beberapa pengaturan shell (mis.gitfast
dari oh-my-zsh)sumber