InfoGrab Docs

스쿼시 및 병합

요약

스쿼시 및 병합은 여러 개의 작은 커밋을 하나의 의미 있는 커밋으로 결합합니다. 브랜치가 기본 브랜치에 병합될 때마다 최대 두 개의 커밋이 추가됩니다: 기본적으로 스쿼시된 커밋에는 다음 메타데이터가 포함됩니다: 프로젝트 소유자는 모든 스쿼시 커밋 및 병합 커밋에 대한 새 기본 메시지를 만들 수 있습니다.

스쿼시 및 병합은 여러 개의 작은 커밋을 하나의 의미 있는 커밋으로 결합합니다. 이 전략은 저장소 히스토리를 깨끗하게 유지하고 변경 사항을 추적하거나 되돌리기 쉽게 합니다. 여러 기능을 동시에 작업할 때 스쿼싱은 각 기능의 변경 사항을 별개의 논리적 단위로 분리합니다.

  • 작은 커밋이 합쳐져 변경의 모든 부분을 되돌리기 더 쉬워집니다.
  • 단일 커밋이 대상 브랜치에 병합될 때 전체 커밋 히스토리가 유지됩니다.
  • 기본 브랜치가 깔끔하게 유지되고 의미 있는 커밋 메시지가 포함됩니다.

스쿼시 및 병합 워크플로#

브랜치가 기본 브랜치에 병합될 때마다 최대 두 개의 커밋이 추가됩니다:

  • 브랜치의 커밋을 스쿼싱하여 만들어진 단일 커밋.
  • 프로젝트에서 빠른 전진 병합을 활성화하지 않은 경우 병합 커밋. 빠른 전진 병합은 추가 병합 커밋 생성을 방지하지만 브랜치의 커밋을 단일 커밋으로 스쿼시할 수 있습니다.

기본적으로 스쿼시된 커밋에는 다음 메타데이터가 포함됩니다:

  • 메시지: 스쿼시 커밋 설명 또는 커스터마이징된 메시지
  • 작성자: 머지 리퀘스트를 만든 사용자
  • 커미터: 스쿼시를 시작한 사용자

프로젝트 소유자는 모든 스쿼시 커밋 및 병합 커밋에 대한 새 기본 메시지를 만들 수 있습니다.

머지 리퀘스트의 기본 스쿼시 옵션 설정#

머지 리퀘스트를 생성하거나 편집할 권한이 있는 사용자는 머지 리퀘스트의 기본 스쿼시 옵션을 설정할 수 있습니다.

전제 조건:

  • 프로젝트가 스쿼싱을 허용하거나 권장하도록 구성되어 있어야 합니다.

이를 수행하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
  3. Edit을 선택합니다.
  4. Squash commits when merge request is accepted 체크박스를 선택하거나 해제합니다.
  5. Save changes를 선택합니다.

머지 리퀘스트에서 커밋 스쿼시#

프로젝트에서 머지 리퀘스트의 스쿼싱 옵션을 선택할 수 있는 경우 병합 과정의 일부로 커밋을 스쿼시하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
  3. 머지 리퀘스트 위젯에서 Squash commits 체크박스가 선택되어 있는지 확인합니다. 이 체크박스는 프로젝트의 스쿼싱 옵션이 Do not allow 또는 Require로 설정된 경우 표시되지 않습니다.
  4. 선택 사항. 스쿼시 커밋 메시지 또는 병합 커밋 메시지를 수정하려면(프로젝트 구성에 따라) Modify commit messages를 선택합니다.
  5. 머지 리퀘스트를 병합할 준비가 되면 Merge를 선택합니다.

프로젝트의 스쿼시 옵션 구성#

전제 조건:

  • 이 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.

프로젝트의 모든 머지 리퀘스트에 대한 기본 스쿼싱 동작을 구성하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
  3. Squash commits when merging 섹션에서 원하는 동작을 선택합니다:
    • Do not allow: 스쿼싱이 수행되지 않으며 옵션이 표시되지 않습니다.
    • Allow: 스쿼싱이 허용되지만 기본적으로 해제되어 있습니다.
    • Encourage: 스쿼싱이 허용되고 기본적으로 선택되어 있지만 비활성화할 수 있습니다.
    • Require: 스쿼싱이 항상 수행됩니다. 머지 리퀘스트에 스쿼시 옵션이 표시되지만 사용자는 변경할 수 없습니다.
  4. Save changes를 선택합니다.

장기 실행 브랜치 동작#

스쿼시 및 병합은 장기 실행 브랜치에는 사용하지 않는 것이 좋습니다. 대신 원래 커밋 히스토리를 보존하는 병합 방법(예: 병합 커밋 또는 패스트-포워드 병합)을 사용하세요.

새 커밋을 계속 받는 브랜치를 스쿼시 및 병합하면 브랜치 히스토리가 대상 브랜치에서 분기됩니다. 스쿼시는 대상 브랜치에서 다른 SHA를 가진 단일 새 커밋을 생성합니다. 대상 브랜치를 리베이스하거나 병합하지 않고 소스 브랜치에서 계속 작업하면 Git은 히스토리가 분기된 것으로 처리합니다.

해당 소스 브랜치에서 새 머지 리퀘스트를 열면 다음이 표시됩니다:

  • 이전 머지 리퀘스트에서 이미 병합된 커밋.
  • 소스 브랜치가 대상 브랜치보다 뒤에 있다는 경고.

diff는 대상 브랜치에 아직 없는 새 변경 사항만 올바르게 표시합니다.

스쿼시 병합 후 장기 실행 브랜치를 대상과 동기화 상태로 유지하려면:

  • 각 병합 후 대상 브랜치에서 소스 브랜치를 리베이스합니다.
  • 각 병합 후 대상 브랜치를 소스 브랜치에 병합합니다.

관련 항목#

스쿼시 및 병합

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

스쿼시 및 병합은 여러 개의 작은 커밋을 하나의 의미 있는 커밋으로 결합합니다. 브랜치가 기본 브랜치에 병합될 때마다 최대 두 개의 커밋이 추가됩니다: 기본적으로 스쿼시된 커밋에는 다음 메타데이터가 포함됩니다: 프로젝트 소유자는 모든 스쿼시 커밋 및 병합 커밋에 대한 새 기본 메시지를 만들 수 있습니다.

스쿼시 및 병합은 여러 개의 작은 커밋을 하나의 의미 있는 커밋으로 결합합니다. 이 전략은 저장소 히스토리를 깨끗하게 유지하고 변경 사항을 추적하거나 되돌리기 쉽게 합니다. 여러 기능을 동시에 작업할 때 스쿼싱은 각 기능의 변경 사항을 별개의 논리적 단위로 분리합니다.

  • 작은 커밋이 합쳐져 변경의 모든 부분을 되돌리기 더 쉬워집니다.
  • 단일 커밋이 대상 브랜치에 병합될 때 전체 커밋 히스토리가 유지됩니다.
  • 기본 브랜치가 깔끔하게 유지되고 의미 있는 커밋 메시지가 포함됩니다.

스쿼시 및 병합 워크플로#

브랜치가 기본 브랜치에 병합될 때마다 최대 두 개의 커밋이 추가됩니다:

  • 브랜치의 커밋을 스쿼싱하여 만들어진 단일 커밋.
  • 프로젝트에서 빠른 전진 병합을 활성화하지 않은 경우 병합 커밋. 빠른 전진 병합은 추가 병합 커밋 생성을 방지하지만 브랜치의 커밋을 단일 커밋으로 스쿼시할 수 있습니다.

기본적으로 스쿼시된 커밋에는 다음 메타데이터가 포함됩니다:

  • 메시지: 스쿼시 커밋 설명 또는 커스터마이징된 메시지
  • 작성자: 머지 리퀘스트를 만든 사용자
  • 커미터: 스쿼시를 시작한 사용자

프로젝트 소유자는 모든 스쿼시 커밋 및 병합 커밋에 대한 새 기본 메시지를 만들 수 있습니다.

머지 리퀘스트의 기본 스쿼시 옵션 설정#

머지 리퀘스트를 생성하거나 편집할 권한이 있는 사용자는 머지 리퀘스트의 기본 스쿼시 옵션을 설정할 수 있습니다.

전제 조건:

  • 프로젝트가 스쿼싱을 허용하거나 권장하도록 구성되어 있어야 합니다.

이를 수행하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
  3. Edit을 선택합니다.
  4. Squash commits when merge request is accepted 체크박스를 선택하거나 해제합니다.
  5. Save changes를 선택합니다.

머지 리퀘스트에서 커밋 스쿼시#

프로젝트에서 머지 리퀘스트의 스쿼싱 옵션을 선택할 수 있는 경우 병합 과정의 일부로 커밋을 스쿼시하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
  3. 머지 리퀘스트 위젯에서 Squash commits 체크박스가 선택되어 있는지 확인합니다. 이 체크박스는 프로젝트의 스쿼싱 옵션이 Do not allow 또는 Require로 설정된 경우 표시되지 않습니다.
  4. 선택 사항. 스쿼시 커밋 메시지 또는 병합 커밋 메시지를 수정하려면(프로젝트 구성에 따라) Modify commit messages를 선택합니다.
  5. 머지 리퀘스트를 병합할 준비가 되면 Merge를 선택합니다.

프로젝트의 스쿼시 옵션 구성#

전제 조건:

  • 이 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.

프로젝트의 모든 머지 리퀘스트에 대한 기본 스쿼싱 동작을 구성하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
  3. Squash commits when merging 섹션에서 원하는 동작을 선택합니다:
    • Do not allow: 스쿼싱이 수행되지 않으며 옵션이 표시되지 않습니다.
    • Allow: 스쿼싱이 허용되지만 기본적으로 해제되어 있습니다.
    • Encourage: 스쿼싱이 허용되고 기본적으로 선택되어 있지만 비활성화할 수 있습니다.
    • Require: 스쿼싱이 항상 수행됩니다. 머지 리퀘스트에 스쿼시 옵션이 표시되지만 사용자는 변경할 수 없습니다.
  4. Save changes를 선택합니다.

장기 실행 브랜치 동작#

스쿼시 및 병합은 장기 실행 브랜치에는 사용하지 않는 것이 좋습니다. 대신 원래 커밋 히스토리를 보존하는 병합 방법(예: 병합 커밋 또는 패스트-포워드 병합)을 사용하세요.

새 커밋을 계속 받는 브랜치를 스쿼시 및 병합하면 브랜치 히스토리가 대상 브랜치에서 분기됩니다. 스쿼시는 대상 브랜치에서 다른 SHA를 가진 단일 새 커밋을 생성합니다. 대상 브랜치를 리베이스하거나 병합하지 않고 소스 브랜치에서 계속 작업하면 Git은 히스토리가 분기된 것으로 처리합니다.

해당 소스 브랜치에서 새 머지 리퀘스트를 열면 다음이 표시됩니다:

  • 이전 머지 리퀘스트에서 이미 병합된 커밋.
  • 소스 브랜치가 대상 브랜치보다 뒤에 있다는 경고.

diff는 대상 브랜치에 아직 없는 새 변경 사항만 올바르게 표시합니다.

스쿼시 병합 후 장기 실행 브랜치를 대상과 동기화 상태로 유지하려면:

  • 각 병합 후 대상 브랜치에서 소스 브랜치를 리베이스합니다.
  • 각 병합 후 대상 브랜치를 소스 브랜치에 병합합니다.

관련 항목#