Saya memeriksa beberapa kode sumber ke GIT dengan pesan komit "Build 0051".
Namun, saya sepertinya tidak dapat menemukan kode sumber itu lagi - bagaimana cara mengekstrak sumber ini dari repositori GIT, menggunakan baris perintah?
Memperbarui
- Diperiksa dalam versi 0043, 0044, 0045 dan 0046 menggunakan SmartGIT.
- Memeriksa 0043, dan memeriksa versi hingga 0051 pada cabang yang berbeda.
- Memeriksa 0043 lagi.
- Sekarang, 0051 telah menghilang.
Memperbarui
Kode sumber pasti ada di sana, sekarang tinggal periksa saja:
C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date: Fri Aug 19 17:24:51 2011 +0100
20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
C:\Source>
Jawaban:
Untuk mencari log komit (di seluruh cabang) untuk teks yang diberikan:
Untuk mencari konten aktual dari komit melalui riwayat repo, gunakan:
untuk menampilkan semua instance dari teks yang diberikan, nama file yang berisi, dan komit sha1.
Akhirnya, sebagai upaya terakhir jika komit Anda menggantung dan tidak terhubung sama sekali ke sejarah, Anda dapat mencari reflog itu sendiri dengan
-g
bendera (kependekan dari--walk-reflogs
:EDIT: jika Anda tampaknya telah kehilangan riwayat, periksa
reflog
sebagai jaring pengaman Anda. Cari Build 0051 di salah satu komit yang terdaftar olehAnda mungkin hanya mengatur Anda
HEAD
ke bagian sejarah di mana komit 'Bangun 0051' tidak terlihat, atau Anda mungkin benar-benar telah menghancurkannya. The reflog git-siap artikel mungkin bisa membantu.Untuk memulihkan komit dari reflog : lakukan checkout git dari komit yang Anda temukan (dan secara opsional buat cabang atau tag baru untuk referensi)
sumber
git grep 'search' $(git rev-list --all)
, cobagit rev-list --all | xargs git grep 'search'
Saya memasukkan ini ke ~ / .gitconfig:
Lalu saya bisa mengetikkan "git find string" dan saya mendapatkan daftar semua commit yang berisi string itu di dalam pesan. Misalnya, untuk menemukan semua komit yang mereferensikan tiket # 33:
sumber
--pretty=\"format:%Cgreen%H %Cblue%s%Creset\"
find = log --all --pretty=\"format:%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --grep
. Perhatikan--all
dan%b
karakter. Thx @AshleyCoolman untukreset
tipnya.find = log --oneline --name-status -i --grep
Meskipun agak terlambat, ada
:/
notasi khusus untuk menentukan komit (atau revisi) berdasarkan pesan komit, hanya awali string pencarian dengan:/
, misalnya:Ini
<message>
bisa menjadi pola regex kompleks yang terdiri dari spasi putih, jadi harap pastikan untuk mengutip / melarikan diri jika perlu, misalnya:Atau, titik awal dapat ditentukan, untuk menemukan komit terdekat yang dapat dijangkau dari titik tertentu, misalnya:
Lihat: manual revisi git .
sumber
sumber
harus melakukan trik
sumber
Coba ini!
sumber
git grep
bukan grep normal, dan memberikan--all
bendera untuk mencari beberapa cabang.git log --all --grep='Build 0051'
(@ jawaban Shelhamer)git log -g
. Anda mungkin kehilangan riwayat dalam pengaturan ulang, tetapi Anda masih dapat memeriksa reflog jika belum dikumpulkan.pertama digunakan
git log --oneline
untuk menemukan SHA dari commit (Pesan), kemudian saya gunakangit log --stat 8zad24d
dengan SHA (pasangan pertama contoh sha char (8zad24d)) untuk menemukan info yang tepatsumber
Ini:
atau ini:
perintah bekerja paling baik untuk saya.
sumber
Untuk mencari di semua cabang
Setelah Anda tahu komit yang ingin Anda tuju
sumber
Jika perubahannya tidak terlalu lama, Anda bisa,
git reflog
dan kemudian checkout id komit
sumber