Langkah-langkah yang Anda daftarkan akan berhasil, tetapi ada cara yang lebih panjang yang memberi Anda lebih banyak opsi:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
The fetch
perintah dapat dilakukan pada setiap titik sebelum merge
, yaitu, Anda dapat menukar urutan pengambilan dan kasir, karenafetch
hanya pergi ke bernama jarak jauh ( origin
) dan mengatakan untuk itu: "beri aku segala sesuatu yang harus Anda bahwa saya tidak ", yaitu, semua komit di semua cabang. Mereka disalin ke repositori Anda, tetapi diberi nama origin/branch
untuk cabang apa pun yang bernama branch
pada remote.
Pada titik ini Anda dapat menggunakan penampil apa pun (git log
,, gitk
dll) untuk melihat "apa yang mereka miliki" yang tidak Anda miliki, dan sebaliknya. Kadang-kadang ini hanya berguna untuk Perasaan Fuzzy Hangat ("ah, ya, itulah sebenarnya yang saya inginkan") dan kadang-kadang berguna untuk mengubah strategi sepenuhnya ("whoa, saya belum menginginkan hal ITU").
Akhirnya, merge
perintah mengambil komit yang diberikan, yang dapat Anda sebutkan origin/master
, dan melakukan apa pun untuk membawa komit dan leluhurnya, ke cabang apa pun yang Anda gunakan saat menjalankanmerge
. Anda dapat menyisipkan --no-ff
atau --ff-only
mencegah maju cepat, atau menggabungkan hanya jika hasilnya maju cepat, jika Anda mau.
Saat Anda menggunakan urutan:
git checkout dmgr2
git pull origin master
yang pull
menginstruksikan perintah git untuk menjalankan git fetch
, dan kemudian setara moral git merge origin/master
. Jadi ini hampir sama dengan melakukan dua langkah dengan tangan, tetapi ada beberapa perbedaan halus yang mungkin tidak terlalu mengkhawatirkan Anda. (Khususnya fetch
langkah yang dijalankan hanyapull
membawa , dan itu tidak memperbarui referensi di repo Anda: 1 origin/master
setiap komit baru angin disebut-hanya dengan khusus FETCH_HEAD
. Referensi)
Jika Anda menggunakan yang lebih eksplisit git fetch origin
(kemudian secara opsional melihat-lihat) dan kemudian git merge origin/master
berurutan, Anda juga dapat membuat lokal Anda tetap master
up-to-date dengan remote, dengan hanya satu fetch
run melintasi jaringan:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
contohnya.
1 Bagian kedua ini telah diubah — saya katakan "diperbaiki" —di git 1.8.4, yang sekarang memperbarui referensi "cabang jarak jauh" secara oportunis. (Itu, seperti catatan rilis mengatakan, keputusan desain yang disengaja untuk melewati pembaruan, tetapi ternyata lebih banyak orang lebih suka git memperbaruinya. Jika Anda ingin SHA-1 cabang jarak jauh yang lama, defaultnya adalah disimpan di , dan dengan demikian dapat dipulihkan dari reflog. Ini juga memungkinkan fitur git 1.9 / 2.0 baru untuk menemukan rebase hulu.)