힘내 : 내 마지막 커밋 참조


389

난 그냥 내가했을 때 목록을 본 그대로 마지막 커밋에 커밋 된 파일을보고 싶습니다 git commit. 불행히도

git "last commit" log

Google에서는 아무데도 데려다주지 않습니다. 과

git diff HEAD^..HEAD

물론 변화의 용기도 분출하기 때문에 내가 필요한 것은 아닙니다.


35
고마워, 나는 실제로 필요했다 git diff HEAD^..HEAD!
Ameen

답변:


375

의견을 통해 결정된 것처럼 OP가 찾고있는 것으로 보입니다.

$ git log --name-status HEAD^..HEAD

이것은 매우 가까운 당신이에서 얻을 것이다 출력도 svn status또는 svn log -v전복에서 자식에 오는 많은 사람들이 잘 알고있는.

--name-status여기서 열쇠입니다; 이 질문에 다른 사람에 의해 언급 한 바와 같이, 당신이 사용할 수있는 git log -1, git showgit diff출력의 같은 종류를 얻을 수 있습니다. 개인적 git show <rev>으로 개인 개정판을 볼 때 사용하는 경향이 있습니다 .


나는 의견이 나의 질문을 질리게 만드는 가장 좋은 방법은 아니라는 것을 인정한다 :) 고마워 MikeSep
Dan Rosenstark

4
이것이 마지막 커밋을 제공한다고 생각합니다. 그래서, 마지막으로 내가 할 것git log --stat --author nroose -n 1
nroose

1
그리고 약어와 자식 쇼 --name-상태 --oneline으로 단축 할 수
jasonleonhard

너무 분명하다! 나는 그것이 항상 발생하는 일종의 쿼리이기 때문에 그것이 너무 간단한 것이라고 짐작해야했습니다.
Scott Biggs

1
강제 푸시를 사용하는 경우이 comand는 최신 (시간별) 커밋 대신 마지막 패치를 보여줍니다. 일부 사용 사례에서는 까다로울 수 있습니다.
Olix

207

git show 사용 :

git show --summary

생성되거나 제거 된 파일 이름은 표시되지만 변경된 파일 이름은 표시되지 않습니다 . 이 git show명령은 커밋에 대한 다양한 유형의 정보를 표시하는 다양한 출력 형식을 지원합니다.


1
@ jamessan git show --stat이 가깝지만 파일 옆에 '수정 됨'또는 '추가됨'이라는 단어가 나타나는 전망이 없습니까?
Dan Rosenstark

3
당신이 (심지어 미만의 파일 만 이름을 원하는 경우 --stat), 당신은 또한보고 할 수 있습니다 --name-status--name-only스위치.
Mike Seplowitz

1
@ MikeSep, 그것이 실제로 필요한 것입니다. 당신이 대답을하면 나에게 그것이 가장 좋은 대답으로 표시 할 것입니다. 나는 사용하고 있습니다git log --name-status HEAD^..HEAD
Dan Rosenstark

이것은 지금까지 제공된 솔루션 중 가장 간단한 솔루션입니다.
Matthew


44

마지막 커밋을 보려면

git log -1

마지막 2 커밋을 보려면

git log -2

기타....


1
그러나 질문은 "... 마지막 커밋에서 커밋 된 파일 을보고 싶다" 고 말했다 .
Peter Mortensen

42

지금까지 가장 간단한 명령은 다음과 같습니다.

git show --name-only

마지막 커밋의 파일 나열 하고 제공하지 않기 때문에 하고 전체 내장을

출력의 예는 다음과 같습니다.

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <Kylo@darkside.empire.gov>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       

7
--name-status대신에 고려하십시오 --name-only.
Acumenus

5
거기에 문제가 있습니다. 제국이 방어 그리드에 PHP를 사용하고 있습니다!
ptim

3
내가 스택 오버 플로우에서 본 가장 좋은 예! "그것들은 당신이 찾고있는 커밋이 아닙니다."
Scott Biggs


21

마지막 커밋 변경 사항을 보려면

git show HEAD

또는 두 번째 마지막 커밋 변경 사항을 보려면

git show HEAD~1

그리고 위의 '1'을 필요한 커밋 시퀀스 번호로 바꾸십시오.


15

커밋을 여러 번 수행하거나 리포지토리를 복제 / 풀링 한 후 커밋이 이루어진 것을 확인하고 싶을 수 있습니다. 커밋 히스토리 (최근 / 최근 커밋에서 첫 번째 커밋까지)를 보려면이 간단한 솔루션을 확인하십시오.

마지막 커밋의 경우 다음 명령을 실행하십시오 git log -1. 더 흥미로운 것들은 아래를 참조하십시오-

  1. 커밋 ID (SHA-1 체크섬), 작성자 이름 <mail ID>, 날짜와 시간 및 커밋 메시지를 보려면-

    git log
    
  2. 커밋 중에 변경된 모든 파일의 이름 및 삽입 / 삭제 수와 같은 추가 통계를 보려면 코드를 검토하는 동안 매우 편리합니다.

    git log --stat
    
  3. 예쁜 형식으로 커밋 내역을 보려면 :) (이전에 사전 빌드 옵션이 이어짐)-

    • 검토 할 커밋이 너무 많으면이 명령은 깔끔한 한 줄로 표시합니다.

      git log --pretty=oneline
      
    • 커밋에 대한 짧은, 중간, 전체 또는 더 자세한 내용을 보려면 각각 다음을 사용하십시오.

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. format옵션을 사용하여 자신의 출력 형식을 사용할 수도 있습니다.

    git log --pretty=format:"%an, %ae - %s"
    

    여기서 % an-저자 이름, % ae-저자 이메일, % s-커밋 주제 등

커밋 이력에 도움이 될 수 있습니다. 자세한 내용은 여기를 클릭 하십시오 .


11
$ git diff-이름 전용 HEAD ^ .. HEAD

또는

$ git log-이름 전용 HEAD ^ .. HEAD

그게 내가 필요한 것입니다. 수정, 추가 또는 삭제되었는지 여부는 어떻습니까? 아마 svn 스타일의 편지?
Dan Rosenstark

1
알았어 git log --name-status HEAD^..HEAD
Dan Rosenstark

2
대신에 git log ... HEAD^..HEAD , 그것은 사용하기 간단하지 않다 git log ... -1 HEAD, 또는 더 나은 git show ... HEAD?
Jakub Narębski

몇 개의 Stackoverflow 게시물을 탐색 한 후 이것이 필요한 답변입니다. 나는 파일과 다른 것을 원하지 않았다. 커밋 요약이없고 최신 커밋의 파일 만 있습니다. 감사!
luckytaxi

6

git diff --stat HEAD

이것은 마지막 커밋과 동일한 diffstat를 보여줍니다.


4

파일 만 나열하는 다른 방법은 다음을 사용하는 것입니다.
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
또는 두 개의 커밋 ID를 사용할 수 있습니다


이것의 장점은 log?
Dan Rosenstark

기본적으로 파일을 나열하는 다른 방법입니다. 나는 보통 배포를 위해 이것을 rsync와 결합한다
Ismail Cherri

0

이전 커밋의 git checkout을 수행 한 후 최신 및 가장 큰 커밋 찾는 것에 대해 이야기하고 있다면 ( 그리고 체크 아웃을 수행하기 전에 HEAD의 해시를 작성하는 것을 잊어 버렸습니다 ) 위의 대부분은 어디로 돌아 가지 않습니다. 네가 시작 했어. git log-[some #] 은 HEAD CURRENT 위치의 로그 만 보여줍니다. 반드시 마지막 커밋 (프로젝트 상태)은 아닙니다. Checkout은 HEAD의 연결을 끊고 체크 아웃 한 항목을 가리 킵니다.

원래 복제를 참조하는 항목에 도달 할 때까지 전체 git reflog를 볼 수 있습니다 . BTW, 프로젝트를 복제 한 시간과 체크 아웃을 수행 할 때 사이에 커밋이 이루어지면 작동하지 않습니다. 그렇지 않으면 로컬 시스템의 모든 커밋이 서버에 있고 전체 프로젝트를 다시 복제하기를 바랍니다.

도움이 되었기를 바랍니다.


고마워, 좋은 지적이지만 원래 질문은 훨씬 간단하고 이미 여러 번 잘 대답했습니다.
Dan Rosenstark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.