2013-01-08 2 views
15

커밋하기 전에 커밋의 해시를 알 수있는 방법이 있습니까?커밋하기 전에 GIT 해시를 알고 계십니까?

+0

커밋 할 수없고 해시를 가져온 다음 다시 소프트를 다시 설정할 수없는 이유가 있습니까? –

+1

그 일을하는 것이 좋겠다고 생각했지만 그 대신에이 일을 처리하는 방법이 있습니까? –

+0

항상 방법이 있지만 체조가 약간 있습니다. 왜 해시가 필요하니? –

답변

12

필요한 이유는 무엇입니까? 커밋의 해시를 자신의 커밋 메시지에 넣으려고 생각했다면, 유감스럽게 생각하지만 그것은 불가능합니다 (적어도 SHA1을 깨지 않으면 불가능합니다). 커밋 메시지는 해시를 생성 할 때 사용되는 조각 중 하나이므로 메시지 수정을 시도하면 해시가 변경됩니다.

커밋 전에 커밋의 해시를 찾는 것은 실제로 해시를 기록한 다음 커밋을 버리는 것과 거의 구별 할 수 없습니다 (Carl Norum이 자신의 의견에서 제안한 것처럼). 이유는 해시가 커밋 개체를 만들어 SHA1을 통해 전달되기 때문입니다. 따라서 커밋하지 않고 해시를 찾으려면 기본적으로 디스크에 개체를 쓰지 않고 기본적으로 커밋 프로세스를 수동으로 수행하고 결과를 SHA1에 적용해야합니다. 그리고 그것은 오히려 비실용적 일뿐만 아니라 완전히 무의미합니다.

+0

Subversion에서와 같이 GIT가이를 수행 할 수있는 방법이 있다고 생각했습니다 (예 : $ Revision $). –

+2

@MarceloLiberato : Subversion에서는 만드는 커밋의 개정 번호를 예측하는 것이 간단합니다. git에서는 문자 그대로 불가능합니다 (SHA1을 어떻게 든 부숴 야한다고 제안하지 않는 한). –

+0

그리고 "불가능하다"는 말은 "자식은 길을 제공하지 않기 때문에"나는 "당신이이 기능을 마침내 구현할 수 없기 때문에"라는 뜻입니다. –

9

커밋 해시는 커밋 시간에 따라 다릅니다.

동일한 변경 사항, 동일한 부모, 동일한 작성자 및 동일한 초 안에 커밋 메시지를 사용하여 2 개의 커밋을하면 동일한 해시를 얻게됩니다. 그렇지 않으면 해시가 달라야합니다.

관련 문제