2014-03-29 16 views
1

특정 브랜치의 히스토리를 조회하는 프로그램을 개발하여 해당 브랜치에서만 수행되는 활동을 얻고 싶습니다.빨리 포워드 병합이 발생하면 git 브랜치 (시작점)의 히스토리를 얻는 방법

  1. 사용자가 해당 지점에 작성한 의견을 표시하려고합니다.
  2. 기타 정보

마스터 분기와 내 기능 분기 (내가 쿼리하려는)가 아직 병합되지 않은 경우이 작업을 수행 할 수 있습니다.

내가 할 수있는 것은 master와 feature-branch 사이에서 쿼리하여 로그를 얻을 수 있다는 것입니다.

git log master..feature-branch. 

수행 한 활동 목록이 있습니다.

하지만 내 문제는 지점에서 빠른 전달 병합이 발생하면 다음 명령이 행을 반환하지 않기 때문에 해당 분기에 대한 데이터를 쿼리하거나 가져올 수 없다는 것입니다.

git log master..feature-branch. 

아무 것도 반환되지 않습니다.

빨리 감기 병합이 발생하더라도 명령을 사용하여 내역을 알아낼 수있는 방법이 있는지 알고 싶습니다.

답변

1

git에서 브랜치는 다른 브랜치에 병합 될 때 해당 브랜치가 빨리 감기 병합되었는지 여부에 관계없이 별개의 신원을 유지하지 않습니다. 따라서, 명령에

git log master..branch 

을 따라하는 것은 신뢰성도 가능한 방법이 될하지 않을 branch에 고유 한 커밋의 목록을 얻을 수 있습니다. git에있는 브랜치는 임시적이고 일시적인 참조 일 뿐이며 실제로 커밋과 영구적으로 관련되지는 않습니다.

당신이 할 수있는 최선의 방법은 브랜치가 아닌 것을 빨리 감기 (no-fast-forward merge)하는 것입니다. 하지만 병합 커밋에서 분기 참조 또는 태그를 유지하지 않으면 git log 명령을 사용하여 분기 이름에 "쿼리"하여 해당 분기에 속한 커밋을 찾을 방법이 없습니다. 또한

가 한 번 지점은 master에 병합되고, 해당 분기의 커밋의 모든는 물론 master에 커밋, 그래서 더 이상 고유 해당 분기에 속하지 않습니다.

+0

오케이 그래서 빨리 감기가 마스터와 병합 된 후에 그 브랜치에서 얼마나 많은 커밋이 이루어 졌는지 알 수있는 방법이 있습니다. 그런 식으로 git log를 사용하여 마지막 N 개의 로그를 질의 할 수 있습니다 -N 그리고 모든 연산을 얻습니다. 그 지점에서 수행 되었습니까? 내 요구 사항은 명령을 사용하거나 프로그래밍 방식으로 해당 지점에서 수행 된 활동을 얻는 것입니다. – Abhishek

+0

브랜치를 다른 브랜치 (예 :'master')로 빨리 감기하면 두 브랜치는 기본적으로 동일한 커밋을 공유합니다. 다시 한 번 커밋은 브랜치에 대해 아무것도 모릅니다. 따라서 빨리 감기 병합을 사용하면 두 분기가 정확히 동일한 커밋을 공유하므로 다른 분기와 구분할 수있는 방법이 없습니다. –