Pertanyaan
Apa perintah Git untuk melakukan alur kerja berikut?
Skenario
Saya kloning dari repositori dan melakukan beberapa komitmen saya sendiri ke repositori lokal saya. Sementara itu, kolega saya membuat komit ke repositori jarak jauh. Sekarang, saya ingin:
Periksa apakah ada komit baru dari orang lain di repositori jarak jauh, yaitu
origin
?Katakanlah ada 3 komit baru pada repositori jarak jauh sejak tarikan terakhir saya, saya ingin membedakan komit repositori jarak jauh, yaitu
HEAD~3
denganHEAD~2
,HEAD~2
denganHEAD~1
danHEAD~1
denganHEAD
.Setelah mengetahui apa yang berubah dari jarak jauh, saya ingin mendapatkan komitmen terbaru dari yang lain.
Temuan saya sejauh ini
Untuk langkah 2: Saya tahu notasi caret HEAD^
, HEAD^^
dll. Dan notasi tilde HEAD~2
, HEAD~3
dll.
Untuk langkah 3: Yaitu, saya kira, hanya a git pull
.
Jawaban:
Anda bisa
git fetch origin
memperbarui cabang jarak jauh di repositori Anda untuk menunjuk ke versi terbaru. Untuk perbedaan terhadap remote:Ya, Anda dapat menggunakan notasi tanda sisipan juga.
Jika Anda ingin menerima perubahan jarak jauh:
sumber
git diff HEAD origin/master
sehingga diff menunjukkan apa yang akan diterapkan jika saya menerima perubahan jarak jauh.Menemukan ini pada jawaban untuk Memeriksa apakah tarikan diperlukan di Git
sumber
git pull <remote> <branch>
setelah itu segera setelah saya perlu mendorong, karena ujung cabang lokal saya ada di belakang rekan jauh.git remote update -v
saya dapaterror: unknown switch `v'
git remote -v update
tidak melakukannyagit remote update -v
Cara yang baik untuk memiliki pandangan sintetis tentang apa yang terjadi "asal" adalah:
sumber
Saya hanya menggunakan
Yang terakhir kemudian melaporkan berapa banyak komit di belakang lokal saya. (jika ada)
kemudian
untuk memperbarui informasi lokal saya :)
sumber
Pertanyaan rutin saya agak "sesuatu yang baru atau diubah dalam repo" jadi whatchanged berguna. Ditemukan di sini .
sumber
Salah satu solusi potensial
Terima kasih atas solusi Alan Haggai Alavi saya menemukan alur kerja potensial berikut:
Langkah 1:
Langkah 2:
Langkah 3:
sumber
git diff origing/master^ origing/master^^
git status
tidak selalu menunjukkan perbedaan antara master dan asal / master bahkan setelah pengambilan. Jika Anda ingin kombinasigit fetch origin && git status
berfungsi, Anda perlu menentukan informasi pelacakan antara cabang lokal dan asal:Untuk cabang master:
sumber
karena belum disarankan sejauh ini ... dan saya merasa cukup berguna ...
saya hanya menggunakan
untuk mengambil perubahan jarak jauh, dan kemudian saya melihat komit jarak jauh lokal dan yang tertunda (dan perubahan terkait) dengan alat gitk yang bagus ( https://git-scm.com/docs/gitk ) yang melibatkan argumen --semua seperti
sumber