2017-01-12 2 views
2

사용자 "마스터"지점에서 커밋 된 (1).새로운 커밋이없는 경우 누가 git에서 누가 분기를 병합했는지 볼 수 있습니까?

사용자 B는 "기능"분기의 (1)을 기반으로 (2) 및 (3)을 위임했습니다.

사용자 A가 마스터 분기에 병합되었습니다 (3).

그래서 지금은 다음과 같습니다

  • hash3 - (원산지/마스터, 원산지/기능) 커밋 3 (사용자 B)
  • hash2 - 커밋 2 (사용자 B)
  • hash1을 - 커밋 1 (사용자 A)

이제 사용자 B가 마스터 분기에 커밋 한 것처럼 보입니다. 그러나 그는 그렇지 않았습니다. 사용자 A가 병합 되었기 때문에이 모양이됩니다. 그러나이 병합 기록은 없습니다. 커밋 만 표시됩니다.

이 커밋을 다른 사용자가 두 가지 다른 작업 (커밋 및 병합)으로 간주하고 두 사용자가 한 가지로 표시하는 대신 레코드가 있습니까?

+0

당신이 병합 커밋에게 기여하는 사용자를 확인 할 수있는 방법을 원하는 건가요? –

+0

예. the가 실제 코드 병합이고 분기 이름을 변경하는 것이 아니라면 다른 커밋으로 표시됩니다. 그러나이 경우 누가 이름을 변경했는지 표시하지 않습니다. –

+0

나는 다음과 같이 어려움을 겪고있다. 설명하기 위해 다이어그램 (텍스트, 커밋을 구분하기 위해'--' 사용)을 보여줄 수 있습니까? –

답변

2

한 사용자가 지형지 물에서 master 브랜치를 빨리 감기하고 다른 개발자가 완료 한 커밋을 가져 오는 시나리오가있는 것 같습니다. 이 뒤에는 흔적이 남아 있지 않기 때문에 두 개발자가 실제로 단일 개발자가 빨리 감기를 수행 한 경우 커밋을 한 것으로 보입니다.

빨리 감기가 발생할 경우에도 병합 커밋을 강제 수행하고 병합 커밋이 필요하지 않은 방법이 있습니다. 당신이 masterfeature 병합을 계획한다면, 당신은 병합이 --no-ff 플래그를 사용하여 커밋 보장 할 수 있습니다 : 당신이 뭔가 GitHub의 또는의 Bitbucket을 사용하는 경우 물론

git checkout master   # switch to master 
git merge --no-ff feature # merge feature into master; force merge commit 

을,이 병합은 저장소에서 일어나는 수 있습니다 그 자체. 이 경우 특정 공급자를 구성해야합니다.

참조 :Why does git fast-forward merges by default?

관련 문제