Lịch sử hoặc nhật ký của các lệnh được thực thi trong Git


96

Có cách nào tôi có thể theo dõi các lệnh tôi đã sử dụng trong Git trong Windows không? Tôi muốn xem tất cả các lệnh mà tôi đã áp dụng trên kho lưu trữ của mình.

Tôi muốn có thể quay lại lịch sử lệnh và tìm ra lệnh đã gây ra sự cố nếu một lệnh xảy ra.

Xem lịch sử của các cam kết sẽ là một chuyện, nhưng để lưu giữ lịch sử của các hành động khác như tạo chi nhánh hoặc thêm điều khiển từ xa, chúng có được theo dõi không?


3
Đây là một chút sang một bên, nhưng nếu bạn nhìn vào .git/logs, bạn sẽ thấy lịch sử của những gì cam kết mà mỗi nhánh trỏ đến.
Nayuki

1
@Nayuki Vì pushing không thay đổi trạng thái của một chi nhánh cục bộ, reflogrõ ràng là không lưu trữ các pushes, vì vậy, tìm kiếm .git/logs/refs/remotes/*/*là cách duy nhất để xem pushlịch sử của bạn .
Kyle Strand,

Câu trả lời:


-8

git sẽ hiển thị các thay đổi trong cam kết ảnh hưởng đến chỉ mục, chẳng hạn như git rm. Nó không lưu trữ nhật ký của tất cả các lệnh git mà bạn thực hiện.

Tuy nhiên, một số lượng lớn các lệnh git ảnh hưởng đến chỉ mục theo một cách nào đó, chẳng hạn như tạo một nhánh mới. Những thay đổi này sẽ hiển thị trong lịch sử cam kết mà bạn có thể xem git log.

Tuy nhiên, có những thay đổi phá hoại mà git không thể theo dõi, chẳng hạn như git reset.

Vì vậy, để trả lời câu hỏi của bạn, git không lưu trữ lịch sử tuyệt đối của gitcác lệnh bạn đã thực hiện trong một kho lưu trữ. Tuy nhiên, thường có thể nội suy lệnh bạn đã thực hiện thông qua lịch sử cam kết.


2
Trên thực tế, như một câu trả lời bên dưới đề cập đúng, nó có. "history" hiển thị danh sách các lệnh được thực hiện (kể từ khi cài đặt).
Umesh .A Bhat

2
Các vỏ cửa hàng lịch sử, nhưng git không, phải không?
Alex

3
@UmeshABhat git historysẽ hữu ích để xem các lệnh nào đã được thực thi trong một bản sao cụ thể .
Kyle Strand,

5
git refloglà những gì bạn muốn. Xem câu trả lời bên dưới.
Chéyo

3
@ cp.engr: OP yêu cầu lịch sử của các lệnh git, không phải git commit. Câu trả lời này gợi ý suy ra các lệnh từ git commit, đây là công việc rất khó và không phải lúc nào cũng có thể thực hiện được. git reflogthực sự hiển thị các lệnh. Ngoài ra, BTW, shell chỉ là một cách trực tiếp hơn một chút để suy ra các lệnh git, nhưng một repo git có thể được chạm vào bởi nhiều shell. Tốt hơn là hỏi git những lệnh nào đã được sử dụng.
tổ hợp

182

Bạn có thể xem lịch sử bằng git-reflog ( ví dụ ở đây ):

git reflog

18
@PauAI while git reflog sẽ hiển thị tất cả các vị trí mà HEAD của bạn đang theo dõi, nó sẽ không thực sự hiển thị tất cả các lệnh git. Các lệnh Git không di chuyển đầu (ví dụ git branch -D my_precious_branch) sẽ không hiển thị ở đó.
Yonatan

@Yonatan, bạn không hiểu git reflog --allsao?
tổ hợp

2
@combinatorist thử thêm một điều khiển từ xa (như OP cho ví dụ): git remote add foo bar. nó sẽ không xuất hiện git reflog --all, vì nó không sửa đổi con trỏ HEAD.
Yonatan

git reflogkhông hiển thị cho tôi các lệnh như git statusaso., có hoặc không có --alltham số.
Lorenz

62

Nhật ký các lệnh của bạn có thể có sẵn trong lịch sử trình bao của bạn.

history

Nếu bạn không thấy danh sách các lệnh đã thực thi lướt qua, hãy xuất danh sách thành một tệp.

history > path/to/file

Bạn có thể hạn chế kết xuất đã xuất để chỉ hiển thị các lệnh có "git" trong chúng bằng cách nối nó với grep

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

Lịch sử có thể chứa các dòng được định dạng như vậy

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

Sử dụng số mà bạn có thể thực hiện lại lệnh với dấu chấm than

$ !518
git status -s

8

Nếu bạn đang sử dụng CentOS hoặc một phiên bản Linux khác thì chỉ cần làm Ctrl+ Rtại dấu nhắc và nhập git.

Nếu bạn tiếp tục nhấn Ctrl+, Rđiều này sẽ thực hiện tìm kiếm ngược trong lịch sử của bạn cho các lệnh bắt đầu bằnggit


7

Nhập historythiết bị đầu cuối của bạn. Nó không phải là git về mặt kỹ thuật, nhưng tôi nghĩ nó là thứ bạn muốn.


6

Nếu bạn sử dụng Windows PowerShell, bạn có thể nhập "git" và nhấn F8. Tiếp tục nhấn F8 để chuyển qua tất cả các lệnh git của bạn.

Hoặc, nếu bạn sử dụng cygwin, bạn có thể làm điều tương tự với ^ R.


Trong phiên cửa sổ bình thường, bạn có thể sử dụng phím F7 để có một cửa sổ nhỏ cung cấp cho bạn danh sách tất cả các lệnh được nhập trong phiên đó
milso

0

Tôi phát hiện ra rằng trong phiên bản git bash "2.24.0.windows.2" trong thư mục "home" của tôi trong người dùng windows, sẽ có một tệp có tên ".bash-history" không có phần mở rộng tệp trong thư mục đó. Nó chỉ được tạo sau khi bạn thoát khỏi bash.

Đây là quy trình làm việc của tôi:

  1. trước khi thoát loại bash "history >> history.txt" [ENTER]
  2. thoát khỏi lời nhắc bash
  3. giữ Win + R để mở hộp lệnh Run
  4. nhập shell: hồ sơ
  5. mở "history.txt" để xác nhận rằng văn bản của tôi đã được thêm vào
  6. Trên một dòng mới, nhấn [F5] để nhập dấu thời gian
  7. lưu và đóng tệp văn bản lịch sử
  8. Xóa tệp ".bash-history" để phiên tiếp theo sẽ tạo lịch sử mới

Nếu bạn thực sự muốn điểm, tôi đoán bạn có thể tạo một tệp hàng loạt để làm tất cả những điều này nhưng điều này là đủ tốt đối với tôi. Hy vọng nó sẽ giúp một ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.