Jawaban:
Gunakan git checkout <sha1>
untuk memeriksa komit tertentu.
git log
hanya menunjukkan komit pertama sekarang, dapatkah saya mengetahui sha1 dari komit berikutnya?
git log --oneline
dan menempelkan output ke file teks untuk referensi (jumlah sha1 disingkat yang disediakannya dijamin unik). Pilihan lain, jika histori Anda linier, adalah untuk mencari tahu berapa banyak komit yang ada dari komit pertama hingga master
dan digunakan git checkout master~543
(jika ada 543 komit), lalu git checkout master~542
, dll.
Untuk menuju ke versi tertentu / komit jalankan perintah berikut. HASH-CODE bisa Anda dapatkangit log --oneline -n 10
git reset --hard HASH-CODE
Catatan - Setelah mengatur ulang ke versi tertentu / komit Anda dapat menjalankan git pull --rebase
, jika Anda ingin mengembalikan semua komit yang dibuang.
reset
tidak hanya mencatat titik tertentu dalam grafik, tetapi juga akan memindahkan cabang yang saat ini Anda periksa
reset
, semua perubahan Anda yang tertunda dibuang.
git pull --rebase
hanya berfungsi jika Anda memiliki remote untuk repo Anda dan ini terkini.
Anda bisa mendapatkan tampilan grafis dari sejarah proyek dengan alat-alat seperti gitk
. Lari saja:
gitk --all
Jika Anda ingin checkout cabang tertentu:
git checkout <branch name>
Untuk komit tertentu, gunakan hash SHA1 sebagai ganti nama cabang. (Lihat Treeishes di Buku Komunitas Git , yang merupakan bacaan yang bagus, untuk melihat opsi lain untuk menavigasi pohon Anda.)
git log
memiliki seluruh rangkaian opsi untuk menampilkan riwayat ringkasan atau ringkasan juga.
Saya tidak tahu cara mudah untuk maju dalam riwayat commit. Proyek dengan sejarah linier mungkin tidak terlalu umum. Gagasan "revisi" seperti yang Anda miliki dengan SVN atau CVS tidak memetakan semua itu dengan baik di Git.
Menggunakan kunci SHA1 komit, Anda bisa melakukan hal berikut:
Pertama, temukan komit yang Anda inginkan untuk file tertentu:
git log -n <# commits> <file-name>
Ini, berdasarkan pada Anda <# commits>
, akan menghasilkan daftar komit untuk file tertentu.
TIP: jika Anda tidak yakin apa komit yang Anda cari, cara yang baik untuk mengetahuinya adalah dengan menggunakan perintah berikut: git diff <commit-SHA1>..HEAD <file-name>
. Perintah ini akan menunjukkan perbedaan antara versi komit saat ini, dan versi sebelumnya dari komit untuk file tertentu.
CATATAN: kunci SHA1 komit diformat dalam git log -n
daftar sebagai:
melakukan
<SHA1 id>
Kedua, periksa versi yang diinginkan:
Jika Anda telah menemukan komit / versi yang Anda inginkan, cukup gunakan perintah: git checkout <desired-SHA1> <file-name>
Ini akan menempatkan versi file yang Anda tentukan di area pementasan. Untuk mengeluarkannya dari area pementasan cukup gunakan perintah:reset HEAD <file-name>
Untuk kembali ke tempat repositori jauh diarahkan, cukup gunakan perintah: git checkout HEAD <file-name>
Saya berada dalam situasi di mana kami memiliki cabang master, dan kemudian cabang lain bernama 17.0 dan di dalam 17.0 ini ada hash komit yang tidak mengatakan "XYZ" . Dan pelanggan diberikan build sampai revisi XYZ itu. Sekarang kami menemukan bug dan itu perlu dipecahkan untuk pelanggan itu. Jadi kita perlu membuat cabang terpisah untuk pelanggan itu sampai hash "xyz" itu. Jadi, inilah cara saya melakukannya.
Pertama saya membuat folder dengan nama pelanggan itu di mesin lokal saya. Katakanlah nama pelanggan adalah "AAA" setelah folder itu dibuat mengeluarkan perintah berikut di dalam folder ini:
Salah satu caranya adalah dengan membuat semua komitmen yang pernah dibuat untuk tambalan. checkout komit awal dan kemudian menerapkan tambalan dalam urutan setelah membaca.
gunakan git format-patch <initial revision>
lalu git checkout <initial revision>
. Anda harus mendapatkan setumpuk file di direktur Anda mulai dengan empat digit yang merupakan tambalan.
ketika Anda selesai membaca revisi Anda lakukan saja git apply <filename>
yang seharusnya terlihat
git apply 0001-*
dan dihitung.
Tapi saya benar-benar bertanya-tanya mengapa Anda tidak hanya ingin membaca tambalan itu sendiri? Silakan posting ini di komentar Anda karena saya penasaran.
manual git juga memberi saya ini:
git show next~10:Documentation/README
Memperlihatkan konten dari file Documentation / README saat ini sedang dalam komit terakhir ke 10 cabang berikutnya.
Anda juga bisa melihat git blame filename
yang memberi Anda daftar tempat setiap baris dikaitkan dengan penulis hash + komit.
Untuk mendapatkan kode komitmen tertentu, Anda memerlukan kode hash dari commit tersebut. Anda bisa mendapatkan kode hash dengan dua cara:
git log
dan periksa komitmen Anda baru-baru ini di cabang itu. Ini akan menunjukkan kode hash komit Anda dan pesan yang Anda tinggalkan saat Anda melakukan kode Anda. Cukup salin dan lakukangit checkout commit_hash_code
Setelah pindah ke kode itu, jika Anda ingin mengerjakannya dan membuat perubahan, Anda harus membuat cabang lain dengan git checkout -b <new-branch-name>
, jika tidak, perubahan tidak akan dipertahankan.
git log -n1
. Tetapi kecuali jikagit checkout
gagal, itu adalah usaha yang sia-sia.