2017-11-14 7 views
2

입니다. 근본적으로, 과거의 git 커밋을 보려면 git log를 사용하는 것이 좋습니다. 그러나 우리 회사에서 우리는 한 커밋에 대해 gerrit로 작업하고 커밋에 대한 수정을합니다. 특정 커밋에 대한 모든 과거 수정 사항을 어떻게 볼 수 있습니까? 그래서 커밋 메시지를 볼 수 있으며 수정 사항을 서로 비교할 수 있습니까? 감사!로그 수정 방법은

답변

3

있습니다 . 질문에 diff가 표시되는 방법을 지정하지 않으므로 여기에 가능한 해결책 중 하나가 있습니다.

  • port

    ssh -p <port> <username>@<gerrithost> gerrit query commit:<commit-id> --patch-sets --format=json 
    
      는 기본적으로 29418입니다;
    • username은 실행할 gerrit 사용자 이름입니다. gerrit query. 저장소 의 참조를 읽을 수있는 권한을 부여 받아야합니다.
    • gerrithost은 gerrit의 호스트 이름 또는 IP 주소입니다.
    • commit-id은 커밋의 sha1 값입니다.
    • --format=json은 선택 사항입니다. 기본 형식은 text입니다.

      ref: refs/changes/90/812290/3 
      ref: refs/changes/90/812290/2 
      ref: refs/changes/90/812290/1 
      

      이러한 리트마다 대해 생성 심판이 그 refs/for 대상으로 푸시 커밋

    출력 등의 항목을 포함하는 변화의 패치 세트에 대한 세부 사항을 포함한다. 숫자 812290을 알고있는 경우 change:812290을 사용하여 gerrit querycommit:<commit-id>을 바꿀 수 있습니다. 로컬 저장소에 이러한 심판을 가져 오기 :

    git fetch origin refs/changes/90/812290/3 
    

    이 심판을 다운로드가 가리키는 된 후 당신이 자식이 당신이 원하는대로 그들을 조작 명령을 실행할 수 커밋.

    git diff commit1 commit2 
    

    자세한 내용은 Gerrit의 문서에서 gerrit query을 검색 할 수 있습니다.

  • 0

    짧은 대답은 불가능합니다. Atlassian's Git Tutorials에서

    :

    개정 커밋은 실제로 완전히 새로운 커밋하고 이전은 더 이상 현재의 지점에 없습니다 커밋합니다.

    즉, 수정 된 커밋에 액세스 할 수 없습니다. 그들 interactive rebase를 사용하여 : (부수는 커밋 섹션)

    대안으로, 별도의 커밋으로 모든 변경 사항을 적용 할 수 및 검토를 완료 할 때 squash은. 같은 변경-ID을, 모든 "개정"가정이

    0

    리트 당신이 선택할 수
    같은 리트 - 변경에 커밋의 세트를 연결하는 방법입니다
    (이 변화의 버전 당신 각-다른 비교하고 싶습니다.

    디폴트의 동작은, 최신 하나에가 (먼저 세트에 커밋)를 자료를 비교하는 것입니다.

    로컬 (git-) 지점에서는 git reflog 명령을 사용하여
    변경의 다른 버전을 볼 수도 있습니다.

    (git reflog
    을 빵 부스러기 같은 작업의 역사를 보여주고 당신도 showcherry-pick 그 개정의 수) 모든 개정이 같은 Change-Id있는 경우에, 어떤것 하나의 변화의 패치 세트