Sejarah atau log perintah yang dijalankan di Git

96

Adakah cara agar saya dapat melacak perintah yang saya gunakan di Git pada Windows? Saya ingin melihat semua perintah yang telah saya terapkan di repositori saya.

Saya ingin dapat melihat kembali riwayat perintah dan mencari tahu perintah yang menyebabkan masalah jika terjadi.

Melihat riwayat komit akan menjadi satu hal, tetapi untuk menyimpan riwayat tindakan lain seperti membuat cabang atau menambahkan remote, apakah ini dilacak?

nilMoBile
sumber
3
Ini sedikit menyimpang, tetapi jika Anda melihat ke dalam .git/logs, Anda akan melihat sejarah dari apa yang ditunjuk oleh setiap cabang.
Nayuki
1
@Nayuki Karena pushtidak mengubah status cabang lokal, reflogtampaknya tidak menyimpan pushes, jadi mencari ke dalam .git/logs/refs/remotes/*/*adalah satu-satunya cara untuk melihat pushriwayat Anda .
Kyle Strand

Jawaban:

-8

git akan menunjukkan perubahan dalam komit yang memengaruhi indeks, seperti git rm. Itu tidak menyimpan log dari semua perintah git yang Anda jalankan.

Namun, sejumlah besar perintah git memengaruhi indeks dalam beberapa cara, seperti membuat cabang baru. Perubahan ini akan muncul di riwayat komit, yang dapat Anda lihat bersama git log.

Namun, ada perubahan merusak yang tidak bisa dilacak git, seperti git reset.

Jadi, untuk menjawab pertanyaan Anda, git tidak menyimpan histori absolut dari gitperintah yang Anda jalankan dalam repositori. Namun, seringkali mungkin untuk menginterpolasi perintah apa yang telah Anda jalankan melalui riwayat komit.

Alex
sumber
3
Sebenarnya, seperti yang disebutkan oleh jawaban di bawah ini dengan benar, memang demikian. "history" menunjukkan daftar perintah yang dijalankan (sejak instalasi).
Umesh. A Bhat
2
The shell toko sejarah, tetapi git tidak, kan?
Alex
3
@UmeshABhat git historyakan berguna misalnya untuk melihat perintah mana yang telah dijalankan dalam klon tertentu .
Kyle Strand
5
git reflogadalah apa yang kamu inginkan. Lihat jawabannya di bawah.
Chéyo
3
@ cp.engr: OP menanyakan riwayat perintah git, bukan melakukan git. Jawaban ini menyarankan untuk menyimpulkan perintah dari git commit, yang merupakan pekerjaan yang sangat sulit dan tidak selalu memungkinkan. git reflogsebenarnya menunjukkan perintah itu sendiri. Selain itu, BTW, shell hanyalah cara yang sedikit lebih langsung untuk menyimpulkan perintah git, tetapi repo git dapat disentuh oleh beberapa shell. Lebih baik bertanya pada git perintah apa yang digunakan.
kombinatoris
184

Anda dapat melihat sejarahnya dengan git-reflog ( contoh di sini ):

git reflog
jweyrich.dll
sumber
18
@PauAI sementara git reflog akan menampilkan semua posisi yang diikuti oleh HEAD Anda, ini tidak akan benar-benar menampilkan semua perintah git. Perintah Git yang tidak menggerakkan kepala (misalnya git branch -D my_precious_branch) tidak akan muncul di sana.
Yonatan
@Yonatan, tidak bisakah kamu mendapatkannya git reflog --all?
kombinatoris
2
@combinatorist mencoba menambahkan remote (sebagai OP memberi misalnya): git remote add foo bar. ini tidak akan muncul di git reflog --all, karena tidak mengubah penunjuk HEAD.
Yonatan
git reflogtidak menunjukkan perintah seperti git statusaso., dengan atau tanpa --allparameter.
Lorenz
62

Log perintah Anda mungkin tersedia di riwayat shell Anda.

history

Jika melihat daftar perintah yang dieksekusi terbang bukan untuk Anda, ekspor daftar tersebut ke dalam file.

history > path/to/file

Anda dapat membatasi dump yang diekspor agar hanya menampilkan perintah dengan "git" di dalamnya dengan menyalurkannya dengan grep

history | grep "git " > path/to/file

Sejarah mungkin berisi baris yang diformat seperti itu

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

Menggunakan nomor tersebut, Anda dapat menjalankan kembali perintah dengan tanda seru

$ !518
git status -s
acak
sumber
8

Jika Anda menggunakan CentOS atau varian Linux lainnya, cukup lakukan Ctrl+ Rpada prompt dan ketik git.

Jika Anda terus menekan Ctrl+ Rini akan melakukan pencarian terbalik melalui riwayat Anda untuk perintah yang dimulai dengangit

crmpicco.dll
sumber
7

Ketik historyterminal Anda. Secara teknis ini bukan git, tapi menurut saya itulah yang Anda inginkan.

ScottyBlades
sumber
6

Jika Anda menggunakan Windows PowerShell, Anda dapat mengetik "git" dan menekan F8. Terus tekan F8 untuk menelusuri semua perintah git Anda.

Atau, jika Anda menggunakan cygwin, Anda dapat melakukan hal yang sama dengan ^ R.

omong kosong
sumber
Dalam sesi windows normal Anda dapat menggunakan tombol F7 untuk mendapatkan jendela kecil yang memberi Anda daftar semua perintah yang dimasukkan dalam sesi itu
mil
0

Saya menemukan bahwa di versi git bash "2.24.0.windows.2" saya di folder "home" saya di bawah pengguna windows, akan ada file bernama ".bash-history" tanpa ekstensi file di folder itu. Itu hanya dibuat setelah Anda keluar dari bash.

Inilah alur kerja saya:

  1. sebelum keluar dari bash type "history >> history.txt" [ENTER]
  2. keluar dari prompt bash
  3. tahan Win + R untuk membuka kotak perintah Run
  4. masukkan shell: profile
  5. buka "history.txt" untuk mengonfirmasi bahwa teks saya telah ditambahkan
  6. Pada baris baru tekan [F5] untuk memasukkan cap waktu
  7. simpan dan tutup file teks riwayat
  8. Hapus file ".bash-history" sehingga sesi berikutnya akan membuat sejarah baru

Jika Anda benar-benar menginginkan poin, saya rasa Anda dapat membuat file batch untuk melakukan semua ini, tetapi ini cukup baik untuk saya. Semoga bisa membantu seseorang.

pengguna65795
sumber