Saya kloning repositori git dari proyek tertentu. Bisakah saya mengubah file ke keadaan awal dan ketika saya meninjau file pergi ke revisi 2, 3, 4 ... paling baru? Saya ingin memiliki gambaran tentang bagaimana proyek ini berkembang.
git
revision
revision-history
xralf
sumber
sumber
git log -n1
. Tetapi kecuali jikagit checkout
gagal, itu adalah usaha yang sia-sia.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 hinggamaster
dan digunakangit checkout master~543
(jika ada 543 komit), lalugit checkout master~542
, dll.Untuk menuju ke versi tertentu / komit jalankan perintah berikut. HASH-CODE bisa Anda dapatkan
git log --oneline -n 10
Catatan - Setelah mengatur ulang ke versi tertentu / komit Anda dapat menjalankan
git pull --rebase
, jika Anda ingin mengembalikan semua komit yang dibuang.sumber
reset
tidak hanya mencatat titik tertentu dalam grafik, tetapi juga akan memindahkan cabang yang saat ini Anda periksareset
, 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:Jika Anda ingin checkout cabang tertentu:
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.
sumber
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: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>
sumber
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:
sumber
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>
lalugit 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 terlihatgit 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:
Anda juga bisa melihat
git blame filename
yang memberi Anda daftar tempat setiap baris dikaitkan dengan penulis hash + komit.sumber
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.sumber
Untuk memeriksa komit (nb Anda melihat masa lalu!).
Untuk memulai kembali secara brutal dari komit dan menghapus cabang-cabang selanjutnya yang mungkin Anda buat kacau.
sumber