2016-08-09 2 views
3

코드에서 테스트를 실행할 때 항상 stash create를 사용하여 git 코드의 스냅 샷을 찍은 다음 테스트에 커밋 ID를 첨부합니다. 가비지 수집을 방지하기 위해 reflog에). 이 방법을 통해 나중에 어떤 코드가 해당 테스트 결과로 이어지는 지 쉽게 확인할 수 있습니다.두 개의 다른 상위 커밋을 사용하는 두 커밋 간의 차이점

하지만 종종 이전 코드를 현재 코드 버전과 비교하려고합니다. 문제는 현재 버전의 코드가 master 브랜치에 리베이스 되었기 때문에 git diff가 수백 가지 커밋의 차이점을 표시한다는 것입니다. 현재 내가하는 일은 두 개의 git show가 정상적인 (non-git) diff를 따르는 것입니다. 그러나 이것은 다른 행 번호를 가진 모든 행에 대해이 행 번호가 차이로 간주된다는 큰 단점이 있습니다.

두 번째 커밋을 리베이스 할 때 두 커밋간에 diff를 수행하는 쉬운 방법이 있습니까? 기본적으로, 내부적으로 첫 번째 커밋을 리베이스하는 것과 비슷한 것을 찾고 있습니다. diff를 보여주고 커밋의 내부 리베이스 버전을 제거합니다. 물론, rebase가 실패한다면, 그렇게 되겠지만, 대부분의 경우 rebase는 단지 나를 위해 일하기 때문에, 대부분의 경우 여전히 유용 할 것입니다.

이 글을 직접 작성해도 좋을지 모르지만 일반적인 문제 일 것 같아서 이미 이와 같은 것이 있는지 궁금합니다.

+0

'git diff old ... current'는 당신이 원하는 것을 보여주지 않습니다 (2 점이 아니라 3 점이 있음을 나타냅니다.) – janos

+0

아니요, 이전 버전의 부모 커밋 이후 현재 브랜치의 모든 변경 사항을 보여줍니다. (내 경우에는 old의 부모 위치 현재의 조상이다). 그래서 또한 수백 개의 다른 커밋을 보여줍니다. 그것은 실제로 두 개의 점과 다릅니다. 그러나 제 상황에서는'git diff old^.. current'와 같습니다. 이것은 내가 원하는 것도 아닙니다. – FrederikVds

+0

https://stackoverflow.com/a/28114114/2303202 – max630

답변

0

나는 이것을 git에서 직접하는 방법을 모른다.

그러나 제안한대로 "배후"리베이스를 수행하는 작은 스크립트를 작성하여 정상적으로 작동해야합니다.

그건 그렇고, 여기에 은신처로 일하는 대신 태그를 달았습니다.

마지막으로이 질문의 제목을 rebase으로 업데이트 할 수 있습니다.

+0

나는 stath를 사용하지 않고있다. 인덱스와 작업 공간의 스냅 샷을 두 개의 커밋 형식으로 생성하는'git stash create'를 사용하고있다. 그것은 커밋을 수동으로 만들고 리셋을하는 것과 비슷하지만, 이미이 빌트인이있다. 태그 지정은 관련이 없습니다. 특정 커밋을 "기억"하는 방법이지만, 내 커밋 ID를 외부에 저장하여 기억하기 때문에 기억하지 않고 커밋을 만드는 것이 문제였습니다. 그것은 가비지 콜렉션을 막아 주지만 reflogs를 사용하는 것입니다. 그냥 잘 작동하고'test @ {one week ago} '같은 것을 허용합니다. – FrederikVds

관련 문제