Git에서 실행 된 명령 기록 또는 로그


96

Windows의 Git에서 사용한 명령을 추적 할 수있는 방법이 있습니까? 내 저장소에 적용한 모든 명령을보고 싶습니다.

명령 이력으로 돌아가서 문제가 발생한 경우 문제를 일으킨 명령을 파악하고 싶습니다.

커밋 기록을 보는 것도 하나의 일이지만 브랜치 생성이나 원격 추가와 같은 다른 작업의 기록을 유지하기 위해 추적됩니까?


3
이것은 약간의 제쳐두고 있지만을 보면 .git/logs각 분기가 가리키는 커밋의 역사를 볼 수 있습니다.
Nayuki 2011 년

1
@Nayuki pushing은 지역 지점의 상태를 변경하지 않기 때문에 reflog분명히 pushes를 저장하지 않으므로 살펴 보는 .git/logs/refs/remotes/*/*것이 push역사 를 볼 수있는 유일한 방법 입니다.
Kyle Strand

답변:


-8

git은 인덱스에 영향을 미치는 커밋의 변경 사항을 표시 git rm합니다. 실행하는 모든 git 명령의 로그를 저장하지 않습니다.

그러나 자식 명령 많은 수의 지수에 영향을 미치는 몇 가지 예 : 새 분기를 만들기로, 방법. 이러한 변경 사항은 커밋 기록에 표시되며 git log.

그러나 git과 같이 추적 할 수없는 파괴적인 변경 사항이 있습니다 git reset.

따라서 질문에 답하기 위해 git은 git저장소에서 실행 한 명령 의 절대 기록을 저장하지 않습니다 . 그러나 커밋 히스토리를 통해 실행 한 명령을 보간하는 것이 종종 가능합니다.


3
실제로 아래 답변이 정당하게 언급했듯이 그렇습니다. "히스토리"는 설치 이후 실행 된 명령 목록을 보여줍니다.
Umesh .A Bhat

2
저장 역사지만, 자식은하지 않습니다, 그렇죠?
Alex

3
@UmeshABhat git history특정 클론에서 실행 된 명령을 확인하는 데 유용합니다 .
Kyle Strand

5
git reflog당신이 원하는 것입니다. 아래 답변을 참조하십시오.
Chéyo

3
@ cp.engr : OP는 git 커밋이 아닌 git 명령의 기록을 묻습니다. 이 답변은 git 커밋에서 명령을 추론하는 것을 제안합니다. 이것은 매우 힘든 작업이며 항상 가능하지는 않습니다. git reflog실제로 명령 자체를 보여줍니다. 또한 BTW, 쉘은 git 명령을 추론하는 약간 더 직접적인 방법 일 뿐이지 만 git repo는 여러 쉘에서 다룰 수 있습니다. 어떤 명령이 사용되었는지 git에게 물어 보는 것이 좋습니다.
결합

184

git-reflog를 사용 하여 기록을 볼 수 있습니다 ( : 여기 ).

git reflog

18
@PauAI git reflog 는 HEAD가 따르는 모든 위치를 표시하지만 실제로 모든 git 명령을 표시하지는 않습니다. 머리를 움직이지 않는 Git 명령 (예 git branch -D my_precious_branch:)은 표시되지 않습니다.
Yonatan

@Yonatan, 당신은 그것을 얻을 수 git reflog --all없습니까?
조합

2
@combinatorist 원격 추가를 시도하십시오 (예를 들어 OP가 준 것처럼) : git remote add foo bar. 그것은에 표시되지 않습니다 git reflog --all는 HEAD 포인터를 수정하지 않는 한,.
Yonatan

git reflog매개 변수 git status가 있거나없는 aso. 와 같은 명령을 표시하지 않습니다 --all.
Lorenz

62

명령 로그는 셸 기록에서 사용할 수 있습니다.

history

실행 된 명령 목록이 사용자에게 적합하지 않은 경우 목록을 파일로 내 보냅니다.

history > path/to/file

내 보낸 덤프를 grep으로 파이핑하여 "git"이있는 명령 만 표시하도록 제한 할 수 있습니다.

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

기록에는 다음과 같은 형식의 줄이 포함될 수 있습니다.

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

숫자를 사용하면 느낌표와 함께 명령을 다시 실행할 수 있습니다.

$ !518
git status -s

8

CentOS 또는 다른 Linux 버전을 사용 하는 경우 프롬프트에서 Ctrl+ R를 입력하고 git.

Ctrl+ 를 계속 R누르면 기록에서 다음으로 시작하는 명령에 대한 역 검색이 수행됩니다.git


7

history터미널을 입력 하십시오. 기술적으로 git는 아니지만 원하는 것입니다.


6

Windows PowerShell을 사용하는 경우 "git"을 입력하고 F8 키를 누를 수 있습니다. 계속해서 F8을 눌러 모든 git 명령을 순환합니다.

또는 cygwin을 사용하는 경우 ^ R로 동일한 작업을 수행 할 수 있습니다.


일반 창 세션에서 F7 키를 사용하여 해당 세션에 입력 된 모든 명령 목록을 제공하는 작은 창을 얻을 수 있습니다.
milso

0

Windows 사용자의 "home"폴더에있는 내 버전의 git bash "2.24.0.windows.2"에는 해당 폴더에 파일 확장자가없는 ".bash-history"라는 파일이 있습니다. bash를 종료 한 후에 만 ​​생성됩니다.

내 워크 플로는 다음과 같습니다.

  1. bash 유형 "history >> history.txt"를 종료하기 전에 [ENTER]
  2. bash 프롬프트 종료
  3. Win + R을 눌러 실행 명령 상자를 엽니 다.
  4. shell : profile 입력
  5. 내 텍스트가 추가되었는지 확인하려면 "history.txt"를 엽니 다.
  6. 새 줄에서 [F5]를 눌러 타임 스탬프를 입력합니다.
  7. 히스토리 텍스트 파일 저장 및 닫기
  8. 다음 세션에서 새 기록을 만들도록 ".bash-history"파일을 삭제합니다.

당신이 정말로 포인트를 원한다면 나는 당신이이 모든 것을 할 배치 파일을 만들 수 있다고 생각하지만 이것은 나에게 충분합니다. 누군가에게 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.