2017-09-28 10 views
1

자식 로그없이 파일을 수정 한 커밋 첫 번째 컨설팅없이 myfile 버전의 커밋 해시를 얻으려면 git log?자식 쇼는 우리가 쉽게 이전을 표시하는 구문은 무엇</p> <pre><code>git show HEAD~:myfile </code></pre> <p>처럼 그 개정에 파일을 <code>HEAD~</code><code>HEAD^</code>처럼 이전 커밋을 가리키는 개정을 구성하고 표시 할 수 있습니다 자식에

fugitivevim에 사용하고 때로는 :Gedit을 사용하여 파일의 이전 버전을 열어야합니다. 그러나 나는 무엇을 논쟁으로 공급할 지 모른다.

+3

그것은 할 수없는 것 같다. "이전 버전"은 모호합니다. 조상이 이전 버전 인 병합 커밋의 경우? – ElpieKay

+0

@ElpieKay 질문은 첫 번째 부모를보고 있다고 가정합니다. –

+0

@ JosephK.Strauss 예. 첫 번째 부모는 충분히 좋습니다. –

답변

0
git show $(git log -m --first-parent --format=%H HEAD~ -2 -- path/to/file | tail -1):path/to/file 

참고 :이 해결 방법을 사용하려면 경로를 두 번 지정해야하며 매번 입력 할 필요가 있습니다. 별칭이 아마도 더 좋을 것입니다.

git config alias.prev '! f(){ git show $(git log -m --first-parent --format=%H HEAD~ -2 -- "$1" | tail -1):"$1"; }; f' 

이전 해시를 얻으려면 :

git config alias.prevhash '! f(){ git rev-parse $(git log -m --first-parent --format=%H HEAD~ -2 -- "$1" | tail -1):"$1"; }; f' 
+0

감사합니다. 하지만 여전히 git log를 사용합니다. 이것이 해시를 얻는 유일한 방법입니까? –

+0

@LiuSha 내 편집을 참조하십시오. –