Memperbarui repositori lokal dengan perubahan dari repositori GitHub

567

Saya punya proyek yang diperiksa secara lokal dari GitHub, dan repositori jarak jauh sejak itu telah membuat perubahan. Apa perintah yang benar untuk memperbarui salinan lokal saya dengan perubahan terbaru?

Tom
sumber
26
Perlu dicatat bahwa github telah menghasilkan serangkaian panduan yang sangat informatif dan bermanfaat untuk menggunakan git dan github. Saya menemukan mereka sangat berharga ketika saya pertama kali pindah ke git. help.github.com
Mark Embling

Jawaban:

791

Mungkin:

git pull origin master
James Healy
sumber
28
Ia mengeluh: "Anda diminta untuk menarik dari 'asal' jarak jauh, tetapi tidak menentukan cabang. Karena ini bukan remote yang dikonfigurasi secara default untuk cabang Anda saat ini, Anda harus menentukan cabang di baris perintah." Jadi saya mencoba "$ git pull master asal" dan itu berhasil dengan baik.
Juan Lanus
8
git pull master asal
Andrzej Rehmann
1
Saya menghapus beberapa file dan tidak membawanya lagi, tahu?
Aquarius Power
1
Apakah kita melakukan git commit sebelum menjalankan ini? setiap kali saya menjalankan perintah ini, saya berakhir dengan 18347213846 file yang dimodifikasi yang bahkan tidak saya sentuh !!!
Orkun Ozen
5
Saya baru belajar dengan cara yang sulit bahwa menarik cabang repositori jarak jauh yang baru tidak membuat cabang dari nama itu secara lokal, tetapi sebaliknya menarik cabang jauh itu ke dalam cabang lokal apa pun yang kebetulan diperiksa. Saya tidak yakin bagaimana cara membatalkan kekurangan ini dan kloning ulang repositori. Dalam kasus apa pun, tampaknya cabang lokal tidak tergantung pada cabang jarak jauh dan Anda harus selalu memastikan bahwa Anda berada di cabang lokal yang dimaksud sebelum menarik.
Joe Lapp
87

Ini harus bekerja untuk setiap repo default:

git pull origin master

Jika cabang default Anda berbeda dengan master, Anda harus menentukan nama cabang:

git pull origin my_default_branch_name
Andrzej Rehmann
sumber
2
Tidak juga. fatal: Tidak dapat menemukan master
referensi
1
@Eijkhout mungkin dalam kasus repo Anda tidak ada cabang master, dan beberapa cabang lainnya ditetapkan sebagai default
Andrzej Rehmann
62
git fetch [remotename]

Namun, Anda harus menggabungkan perubahan apa pun ke cabang lokal Anda. Jika Anda berada di cabang yang melacak cabang jarak jauh di Github, maka

git pull

pertama-tama akan melakukan pengambilan, dan kemudian bergabung dengan cabang yang dilacak

Gareth
sumber
5
Jika Anda menggunakan git fetchmetode ini, Anda juga ingin mengambil tag git fetch -t. Jika Anda puas dengan perubahan ( git log HEAD..FETCH_HEAD), Anda dapat menggabungkannya git merge FETCH_HEAD.
Brad Grissom
16

Pertanyaan ini sangat umum dan ada beberapa asumsi yang akan saya buat untuk menyederhanakannya sedikit. Kami akan menganggap bahwa Anda ingin memperbarui mastercabang Anda .

Jika Anda belum membuat perubahan apa pun secara lokal, Anda dapat menggunakan git pulluntuk menurunkan komitmen baru dan menambahkannya ke master.

git pull origin master

Jika Anda telah membuat perubahan, dan Anda ingin menghindari menambahkan komit gabungan baru, gunakan git pull --rebase.

git pull --rebase origin master

git pull --rebase akan berfungsi bahkan jika Anda belum melakukan perubahan dan mungkin merupakan panggilan terbaik Anda.

Mahavir Chhasatiya
sumber
1
Rebase, dan bahaya rebase: atlassian.com/git/tutorials/rewriting-history/git-rebase . Paragraf 2 dan 3 dari "Memahami bahaya rebase" benar-benar membuat saya kehilangan set perintah SVN.
WillC
9

Dengan master asal yang sudah ditetapkan, Anda hanya perlu menggunakan perintah di bawah ini -

git pull "https://github.com/yourUserName/yourRepo.git"
Shailendra
sumber