Bagaimana cara "menarik" dari cabang lokal ke cabang lain?

231

Ini terdengar sangat sederhana, tetapi saya tidak bisa memahaminya. Saya membuat cabang eksperimental beberapa waktu yang lalu, dan sekarang saya ingin menarik semua perubahan yang terjadi pada master sejak saya membuatnya. Ini semua lokal. Saya ingin menarik dari master lokal ke my_branch lokal, tetapi saya tidak bisa melakukannya. Ini sepertinya tidak berhasil, memberi tahu saya bahwa master bukanlah repositori git:

git pull master
Phil Kulak
sumber
Lihat juga stackoverflow.com/questions/3124601/…
Michael Freidgeim

Jawaban:

339

Anda harus memberi tahu git dari mana menarik, dalam hal ini dari direktori / repositori saat ini:

git pull . master

tetapi ketika bekerja secara lokal, Anda biasanya hanya memanggil penggabungan (menarik secara internal panggilan menggabungkan):

git merge master
rajutan
sumber
1
Saya suka git pull . masterkarena saya pikir itu akan memeriksa apakah ada sesuatu yang baru dari asal juga. Apakah ini benar?
Josiah Yoder
1
@JosiahYoder no, pull .secara khusus memberitahu Git untuk menarik dari repositori yang terletak di .(yaitu direktori / repositori saat ini). originhanyalah singkatan untuk "apa pun lokasi repositori yang ditentukan dalam .git/configfile (biasanya disetel secara otomatis saat kloning repositori)
knittl
1
Oh! Jadi git pull . masterakankah menarik dari repositori lokal alih-alih asal? (Tidak mengambil dari asal !?) Apakah ada keuntungan git pull . masterlebih dari git merge masteritu?
Josiah Yoder
2
@JosiahYoder ya persis, itu akan "menarik" dari repositori lokal alih-alih repositori asal. Pengambilan tidak dilakukan (karena semuanya dari repositori lokal sudah ada di sini!). Tidak ada keuntungan - kedua perintah melakukan kurang lebih sama. Jika Anda melakukan fast-forward, Anda bisa menggunakan push . origin/branch:branch(tidak menarik) untuk memperbarui cabang lokal, tanpa memeriksanya terlebih dahulu.
Knittl
Aku memuji kamu. Dengan kekuatan Greyskull!
R Claven
45

Apa yang Anda cari adalah penggabungan.

git merge master

Dengan pullAnda mengambil perubahan dari repositori jarak jauh dan menggabungkannya ke cabang saat ini.

KingCrunch
sumber
38

Posting yang cukup lama, tetapi mungkin membantu orang baru ke git.

Saya akan pergi dengan

git rebase master
  • riwayat log jauh lebih bersih dan tidak ada gabungan melakukan (jika dilakukan dengan benar)
  • perlu berurusan dengan konflik, tetapi itu tidak sulit.
Lukino
sumber
1
tentu ada banyak cara bagi tim pengembangan untuk mengelola proses percabangan mereka. Secara pribadi, saya telah menggunakan git selama 8 tahun, dan saya tidak pernah harus rebase. Saya selalu menggunakan gabungan, dan selalu memenuhi kebutuhan saya. Tentunya dengan rebase, seperti penggabungan, skenario mungkin muncul ketika git tidak dapat secara otomatis memutuskan hasil yang benar dari "menggabungkan" dua set perubahan. Mengenai poin yang Anda buat tentang riwayat komit "bersih". Secara pribadi, preferensi saya adalah untuk mempertahankan semua riwayat commit, kalau-kalau saya perlu melakukan beberapa "commit arkeologi" (seperti yang sering terjadi!)
user3441604
-1

Jika Anda mencari tarikan baru dari cabang lain seperti dari lokal ke master, Anda dapat mengikuti ini.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
theRana
sumber