Apakah itu mungkin?
Pada dasarnya, ada repositori jarak jauh dari mana saya tarik menggunakan hanya:
git pull
Sekarang, saya ingin melihat dulu tarikan apa yang akan berubah (beda) tanpa menyentuh apa pun di sisi saya. Alasannya adalah hal yang saya tarik mungkin tidak "baik" dan saya ingin orang lain memperbaikinya sebelum membuat repositori saya "kotor".
git
version-control
Milan Babuškov
sumber
sumber
Jawaban:
Setelah melakukan
git fetch
, lakukangit log HEAD..origin/master
untuk menunjukkan entri log antara komit umum terakhir Anda dan cabang master asal. Untuk menunjukkan perbedaan, gunakan salah satugit log -p HEAD..origin/master
untuk menunjukkan setiap tambalan, ataugit diff HEAD...origin/master
(tiga titik bukan dua) untuk menunjukkan perbedaan tunggal.Biasanya tidak perlu membatalkan unduhan, karena melakukan pengambilan hanya memperbarui cabang jarak jauh dan tidak ada cabang Anda . Jika Anda tidak siap untuk melakukan tarikan dan menggabungkan semua komit jarak jauh, Anda dapat menggunakan
git cherry-pick
untuk menerima hanya komit jarak jauh tertentu yang Anda inginkan. Kemudian, ketika Anda siap untuk mendapatkan semuanya, suratgit pull
wasiat akan bergabung dengan seluruh komitmen.Pembaruan: Saya tidak sepenuhnya yakin mengapa Anda ingin menghindari penggunaan git fetch. Yang dilakukan git fetch adalah memperbarui salinan lokal dari cabang jarak jauh Anda. Salinan lokal ini tidak ada hubungannya dengan salah satu cabang Anda, dan itu tidak ada hubungannya dengan perubahan lokal yang tidak dikomit. Saya telah mendengar tentang orang yang menjalankan git mengambil pekerjaan cron karena sangat aman. (Tapi saya biasanya tidak menyarankan melakukan itu.)
sumber
git diff ...@{u}
sama sepertigit diff HEAD...origin/master
jika asal / master adalah cabang huluSaya pikir git fetch adalah apa yang Anda cari.
Ini akan menarik perubahan dan objek tanpa melakukan mereka ke indeks repo lokal Anda.
Mereka bisa digabung nanti dengan git merge .
Halaman Manusia
Sunting: Eksplorasi Lebih Lanjut
Langsung dari Git- SVN Crash Course link di
Membaca halaman manual secara jujur akan memberi Anda pemahaman terbaik tentang opsi dan cara menggunakannya.
Saya hanya mencoba melakukan ini dengan contoh dan memori, saat ini saya tidak memiliki kotak untuk diuji. Anda harus melihat:
Pengambilan dapat dibatalkan dengan git reset --hard ( tautan ), namun semua perubahan yang tidak dikomit di pohon Anda akan hilang serta perubahan yang Anda ambil.
sumber
git reset --soft
atau tidak--mixed
? Periksa halaman manual.Anda dapat mengambil dari repo jarak jauh, melihat perbedaannya lalu menarik atau menggabungkannya.
Ini adalah contoh untuk repo jarak jauh yang disebut
origin
dan cabang yang disebutmaster
pelacakan cabang jarak jauhorigin/master
:sumber
Saya membuat alias git khusus untuk melakukan itu untuk saya:
dengan itu Anda bisa melakukan ini:
Ini akan memberi Anda cara yang bagus dan mudah untuk melihat pratinjau perubahan sebelum melakukan a
merge
.sumber
Saya menggunakan dua perintah ini dan saya bisa melihat file untuk berubah.
Pertama mengeksekusi git fetch , ia memberikan output seperti ini (bagian dari output):
Operasi ini memberi kita dua ID komit, yang pertama adalah yang lama, dan yang kedua akan yang baru.
Kemudian bandingkan dua commit ini menggunakan git diff
Perintah ini akan mencantumkan file yang akan diperbarui:
Misalnya app / controller / xxxx.php dan app / view / yyyy.php akan diperbarui.
Membandingkan dua commit menggunakan git diff mencetak semua file yang diperbarui dengan baris yang diubah, tetapi dengan grep ia mencari dan hanya mendapatkan baris yang berisi diff -git dari output.
sumber
Saya mungkin terlambat ke pesta, tetapi ini adalah sesuatu yang terlalu lama mengganggu saya. Dalam pengalaman saya, saya lebih suka melihat perubahan mana yang tertunda daripada memperbarui copy pekerjaan saya dan menangani perubahan itu.
Ini masuk dalam
~/.gitconfig
file:Ini mengambil cabang saat ini, kemudian melakukan perbedaan antara copy pekerjaan dan cabang yang diambil ini. Jadi, Anda hanya akan melihat perubahan yang akan terjadi
git pull
.sumber
HEAD..@{u}
? Ini lebih sederhana, dan tidak mengharuskan remote dinamai "asal" atau cabang Anda dinamai sama seperti pada remote.git pull
jika Anda tidak suka apa yang dilakukannya ... jadi saya tidak yakin apa kasus penggunaan untuk ini.git pull
setelahnya. Juga saya pikir itulah pertanyaan op tentang.Jika Anda tidak ingin git-fetch memperbarui .git lokal Anda, cukup salin repo lokal Anda ke direktori temp dan lakukan tarik di sana. Ini adalah shor-hand:
Ex.:
sumber
Bagaimana dengan mengkloning repo di tempat lain, dan melakukan git log di kasir asli dan klon baru untuk melihat apakah Anda mendapatkan hal yang sama.
sumber