Databricks Git 폴더에서 Git 작업 실행(Repos)
이 문서에서는 복제, 분기, 커밋 및 푸시를 포함하여 Git 폴더를 사용하여 Databricks 작업 영역에서 일반적인 Git 작업을 수행하는 방법을 설명합니다.
원격 Git 리포지토리에 연결된 리포지토리 복제
사이드바에서 작업 영역을 선택한 다음 Git 리포지토리 복제를 만들 폴더로 브라우저를 만듭니다.
작업 영역의 오른쪽 위에 있는 추가의 오른쪽에 있는 아래쪽 화살표를 클릭하고 드롭다운에서 Git 폴더를 선택합니다.
Git 폴더 만들기 대화 상자에서 다음 정보를 제공합니다.
- 복제하려는 Git 리포지토리의 URL(형식)
https://example.com/organization/project.git
- 복제하려는 리포지토리에 대한 Git 공급자입니다. 옵션에는 GitHub, GitHub Enterprise, GitLab 및 Azure DevOps(Azure Repos)가 포함됩니다.
- 복제된 리포지토리의 내용을 포함할 작업 영역의 폴더 이름
- 원뿔 패턴을 사용하여 지정된 하위 디렉터리만 복제되는 스파스 체크 아웃을 사용할지 여부
- 복제하려는 Git 리포지토리의 URL(형식)
이 단계에서는 스파스 체크 아웃을 사용하여 리포지토리 디렉터리의 하위 집합만 복제할 수 있습니다. 이 기능은 리포지토리가 Databricks 지원 제한보다 큰 경우에 유용합니다.
- Git 폴더 만들기를 클릭합니다. 원격 리포지토리 내용은 Databricks 리포지토리에 복제되며 작업 영역을 통해 지원되는 Git 작업을 사용하여 작업을 시작할 수 있습니다.
모범 사례: Git 폴더에서 공동 작업
Databricks Git 폴더는 사용자가 Git 기반 소스 제어 및 버전 관리를 사용하여 공동 작업할 수 있도록 작업 영역에 포함된 Git 클라이언트로 효과적으로 작동합니다. 팀 공동 작업을 보다 효과적으로 만들려면 자체 개발 분기 에서 작업하는 각 사용자에 대해 원격 Git 리포지토리에 매핑된 별도의 Databricks Git 폴더를 사용합니다. 여러 사용자가 Git 폴더에 콘텐츠를 기여할 수 있지만, 지정된 한 명의 사용자만 끌어오기, 푸시, 커밋 및 분기 전환과 같은 Git 작업을 수행해야 합니다. 여러 사용자가 Git 폴더에서 Git 작업을 수행하는 경우 사용자가 분기를 전환하고 의도치 않게 해당 폴더의 다른 모든 사용자에 대해 전환할 때와 같이 분기 관리가 어렵고 오류가 발생하기 쉽습니다.
공동 작업자와 Git 폴더를 공유하려면 복사 링크를 클릭하여 Databricks 작업 영역 맨 위에 있는 배너에 Git 폴더 를 만듭니다. 이 작업은 다른 사용자에게 보낼 수 있는 URL을 로컬 클립보드에 복사합니다. 받는 사람이 브라우저에서 해당 URL을 로드하면 동일한 원격 Git 리포지토리에서 복제된 자신의 Git 폴더를 만들 수 있는 작업 영역으로 이동합니다. UI에 Git 폴더 모달 만들기 대화 상자가 표시되며, 사용자 고유의 Git 폴더에서 가져온 값으로 미리 채워집니다. 모달에서 파란색 Git 폴더 만들기 단추를 클릭하면 Git 리포지토리가 현재 작업 폴더 아래의 작업 영역에 복제되어 이제 직접 작업할 수 있습니다.
공유 작업 영역에서 다른 사람의 Git 폴더에 액세스할 때 맨 위에 있는 배너에서 Git 폴더 만들기를 클릭합니다. 이 작업을 수행하면 Git 폴더를 백업하는 Git 리포지토리에 대한 구성으로 미리 채워진 Git 폴더 만들기 대화 상자가 열립니다.
Important
현재 Git CLI를 사용하여 Git 폴더에서 Git 작업을 수행할 수 없습니다. 클러스터의 웹 터미널을 통해 CLI를 사용하여 Git 리포지토리를 복제하는 경우 파일이 Azure Databricks UI에 표시되지 않습니다.
Git 대화 상자에 액세스
Notebook 또는 Databricks Git 폴더 브라우저에서 Git 대화 상자에 액세스할 수 있습니다.
Notebook에서 현재 Git 분기를 식별하는 Notebook의 이름 옆에 있는 단추를 클릭합니다.
Databricks Git 폴더 브라우저에서 리포지토리 이름 오른쪽에 있는 단추를 클릭합니다. 리포지토리 이름을 마우스 오른쪽 단추로 클릭하고 메뉴에서 Git...를 선택할 수도 있습니다.
Git 작업을 수행할 수 있는 전체 화면 대화 상자가 표시됩니다.
- 현재 작업 분기입니다. 여기에서 다른 분기를 선택할 수 있습니다. 다른 사용자가 이 Git 폴더에 액세스할 수 있는 경우 분기를 변경하면 동일한 작업 영역을 공유하는 경우 분기도 변경됩니다. 이 문제를 방지하려면 권장 모범 사례를 참조하세요.
- 새 분기를 만드는 단추입니다.
- 현재 분기에 체크 인된 파일 자산 및 하위 폴더 목록입니다.
- Git 공급자로 이동하고 현재 분기 기록을 표시하는 단추입니다.
- 원격 Git 리포지토리에서 콘텐츠를 끌어오는 단추입니다.
- 변경 내용에 대한 커밋 메시지 및 선택적으로 확장된 설명을 추가하는 텍스트 상자입니다.
- 작업 분기에 작업을 커밋하고 업데이트된 분기를 원격 Git 리포지토리로 푸시하는 단추입니다.
오른쪽 위에 있는 kebab을 클릭하여 하드 재설정, 병합 또는 다시베이스와 같은 추가 Git 분기 작업 중에서 선택합니다.
작업 영역 Git 폴더에서 Git 작업을 수행하기 위한 홈입니다. 사용자 인터페이스에 표시되는 Git 작업으로 제한됩니다.
새 분기 만들기
Git 대화 상자에서 기존 분기를 기반으로 새 분기를 만들 수 있습니다.
다른 분기로 전환
Git 대화 상자에서 분기 드롭다운을 사용하여 다른 분기로 전환(체크 아웃)할 수 있습니다.
Important
Git 폴더의 분기를 체크 아웃한 후에는 다른 사용자가 원격 Git 리포지토리에서 분기를 삭제할 가능성이 항상 있습니다. 원격 리포지토리에서 분기가 삭제된 경우 로컬 버전은 연결된 Git 폴더에 최대 7일 동안 남아 있을 수 있습니다. Databricks의 로컬 분기는 삭제할 수 없으므로 제거해야 하는 경우 리포지토리를 삭제하고 다시 표시해야 합니다.
원격 Git 리포지토리에 변경 내용 커밋 및 푸시
새 Notebook 또는 파일을 추가하거나 기존 Notebook 또는 파일을 변경한 경우 Git 폴더 UI에서 변경 내용을 강조 표시합니다.
변경에 필요한 커밋 메시지 추가하고 커밋 및 푸시를 클릭하여 이러한 변경 내용을 원격 Git 리포지토리에 푸시합니다.
기본 분기 커밋할 권한이 없는 경우(예: main
분기) 새 분기를 만들고 Git 공급자의 인터페이스를 사용하여 PR(끌어오기 요청)을 만들어 기본 분기 병합합니다.
참고 항목
- Notebook이 원본 파일 형식(
.py
,.scala
, ,.sql
.r
)으로 저장되는 경우 Notebook 출력은 기본적으로 커밋에 포함되지 않습니다. IPYNB 형식을 사용하여 Notebook 출력을 커밋하는 방법에 대한 자세한 내용은 IPYNB Notebook 출력 아티팩트 커밋 제어를 참조 하세요.
원격 Git 리포지토리에서 변경 내용 끌어오기
원격 Git 리포지토리에서 변경 내용을 가져오려면 Git 작업 대화 상자에서 끌어오기를 클릭합니다. Notebook 및 기타 파일은 원격 Git 리포지토리의 최신 버전으로 자동으로 업데이트됩니다. 원격 리포지토리에서 가져온 변경 내용이 Databricks의 로컬 변경 내용과 충돌하는 경우 병합 충돌 해결해야 합니다.
Important
업스트림에서 끌어오는 Git 작업은 Notebook 상태를 지웁니다. 자세한 내용은 수신 변경 내용이 Notebook 상태를 지움을 참조하세요.
분기 병합
Git 작업 대화 상자의 오른쪽 위에 있는 케밥에서 선택하여 Git 병합 작업에 액세스합니다.
Databricks Git 폴더의 병합 함수는 .를 사용하여 git merge
한 분기를 다른 분기로 병합합니다. 병합 작업은 한 분기에서 다른 분기로 커밋 기록을 결합하는 방법입니다. 유일한 차이점은 이를 달성하기 위해 사용하는 전략입니다. Git 초보자의 경우 분기로 강제 푸시 필요가 없으므로 커밋 기록을 다시 작성하지 않으므로 병합(재베이스를 통해)을 사용하는 것이 좋습니다.
- 병합 충돌 있는 경우 Git 폴더 UI에서 확인합니다.
- 충돌이 없으면 병합은 다음을 사용하여
git push
원격 Git 리포지토리로 푸시됩니다.
Rebase
다른 분기의 분기
Git 작업 대화 상자의 오른쪽 위에 있는 케밥 메뉴에서 Git Rebase 작업에 액세스합니다.
재배정은 분기의 커밋 기록을 변경합니다. 마찬가지로 git merge
한 git rebase
분기의 변경 내용을 다른 분기로 통합합니다. 다시베이스는 다음을 수행합니다.
- 현재 분기의 커밋을 임시 영역에 저장합니다.
- 현재 분기를 선택한 분기로 다시 설정합니다.
- 이전에 현재 분기에 저장된 각 개별 커밋을 다시 적용하여 두 분기의 변경 내용을 결합하는 선형 기록을 만듭니다.
Warning
리베이스를 사용하면 동일한 리포지토리에서 작업하는 협력자의 버전 관리 문제가 발생할 수 있습니다.
일반적인 워크플로는 주 분기에서 기능 분기 다시 지정하는 것입니다.
다른 분기의 분기를 다시 지정하려면 다음을 수행합니다.
Git 폴더 UI의 분기 메뉴에서 다시 저장할 분기를 선택합니다.
케밥 메뉴에서 다시베이스를 선택합니다.
다시 기반으로 할 분기를 선택합니다.
다시베이스 작업은 여기에서 선택한 분기의 변경 내용을 현재 분기로 통합합니다.
Databricks Git 폴더가 실행 git commit
되고 git push --force
원격 Git 리포지토리를 업데이트합니다.
병합 충돌 해결
병합 충돌은 2명 이상의 Git 사용자가 파일의 동일한 줄에 대한 변경 내용을 공통 분기로 병합하려고 시도하고 Git에서 적용할 "올바른" 변경 내용을 선택할 수 없는 경우에 발생합니다. 사용자가 다른 분기의 변경 내용을 커밋되지 않은 변경 내용이 있는 분기로 끌어오거나 병합하려고 할 때 병합 충돌이 발생할 수도 있습니다.
끌어오기, 다시 기반 또는 병합과 같은 작업으로 인해 병합 충돌 경우 Git 폴더 UI에는 충돌 및 충돌 해결 옵션을 포함하는 파일 목록이 표시됩니다.
다음과 같은 두 가지 기본 옵션이 있습니다.
- Git 폴더 UI를 사용하여 충돌을 해결합니다.
- Git 작업을 중단하고 충돌하는 파일의 변경 내용을 수동으로 삭제한 다음 Git 작업을 다시 시도합니다.
Git 폴더 UI를 사용하여 병합 충돌 해결하는 경우 편집기에서 충돌을 수동으로 해결하거나 들어오는 변경 내용이나 현재 변경 내용을 모두 유지하는 중에서 선택해야 합니다.
모든 최신 상태로 유지 또는 들어오는 변경 내용 수행
현재 또는 들어오는 변경 내용만 모두 유지하려는 경우 전자 필기장 창의 파일 이름 오른쪽에 있는 케밥을 클릭하고 모든 현재 변경 내용 유지 또는 들어오는 모든 변경 내용을 선택합니다. 동일한 레이블이 있는 단추를 클릭하여 변경 내용을 커밋하고 충돌을 해결합니다.
팁
어떤 옵션을 선택해야 하는지 혼동하시겠습니까? 각 옵션의 색은 파일에 유지할 각 코드 변경 내용과 일치합니다.
수동으로 충돌 해결
수동 충돌 해결을 사용하면 병합에서 수락해야 하는 충돌하는 줄을 결정할 수 있습니다. 병합 충돌 경우 충돌 파일의 내용을 직접 편집하여 충돌을 해결합니다.
충돌을 해결하려면 유지하려는 코드 줄을 선택하고 Git 병합 충돌 표식을 포함하여 다른 모든 항목을 삭제합니다. 완료되면 확인됨으로 표시를 선택합니다.
병합 충돌 해결할 때 잘못된 선택을 한 경우 중단 단추를 클릭하여 프로세스를 중단하고 모든 항목을 실행 취소합니다. 모든 충돌이 해결되면 병합 계속 또는 다시베이스 계속 옵션을 클릭하여 충돌을 해결하고 작업을 완료합니다.
Git reset
Databricks Git 폴더에서 Azure Databricks UI 내에서 Git reset
을 수행할 수 있습니다. Databricks Git 폴더의 Git 재설정은 git reset --hard
git push --force
.
Git 재설정은 분기 내용과 기록을 다른 분기의 최신 상태로 바꿉니다. 편집 내용이 업스트림 분기 충돌하는 경우 이 기능을 사용할 수 있으며, 업스트림 분기 다시 설정할 때 편집 내용이 손실되는 것은 상관없습니다. git reset –hard
에 대한 자세한 정보.
업스트림(원격) 분기로 다시 설정
git reset
이 시나리오에서는 다음을 수행합니다.
- 선택한 분기(예
feature_a
: )를 다른 분기(예main
: )로 다시 설정합니다. - 또한 업스트림(원격) 분기를 기본으로
feature_a
다시 설정합니다.
Important
다시 설정하면 로컬 및 원격 버전의 분기에서 커밋되지 않은 커밋되지 않은 변경 내용이 모두 손실됩니다.
분기를 원격 분기로 다시 설정하려면 다음을 수행합니다.
분기 메뉴의 Git 폴더 UI에서 다시 설정할 분기를 선택합니다.
kebab 메뉴에서 재설정을 선택합니다.
재설정할 분기를 선택합니다.
스파스 체크 아웃 모드 구성
스파스 체크 아웃은 Databricks에서 원격 리포지토리 디렉터리의 하위 집합만 복제하고 사용할 수 있게 해주는 클라이언트 쪽 설정입니다. 이는 리포지토리의 크기가 Databricks 지원 한도를 초과하는 경우에 특히 유용합니다.
새 리포지토리를 추가(복제)할 때 스파스 체크 아웃 모드를 사용할 수 있습니다.
Git 폴더 추가 대화 상자에서 고급을 엽니다.
스파스 체크 아웃 모드를 선택합니다.
원뿔 패턴 상자에서 원하는 원뿔 체크 아웃 패턴을 지정합니다. 여러 개의 패턴을 줄 바꿈으로 구분합니다.
현재 Azure Databricks에서 리포지토리에 대한 스파스 체크 아웃을 사용하지 않도록 설정할 수 없습니다.
원뿔 패턴의 작동 방식
스파스 체크 아웃 모드에서 원뿔 패턴이 작동하는 방식을 이해하려면 원격 리포지토리 구조를 나타내는 다음 다이어그램을 참조하세요.
스파스 체크 아웃 모드를 선택하고 원뿔 패턴을 지정하지 않으면 기본 원뿔 패턴이 적용됩니다. 여기에는 루트의 파일만 포함되고 하위 디렉터리가 없으므로 다음과 같이 리포지토리 구조가 생성됩니다.
스파스 체크 아웃 원뿔 패턴을 parent/child/grandchild
로 설정하면 grandchild
디렉터리의 모든 콘텐츠가 재귀적으로 포함됩니다. /parent
, /parent/child
및 루트 디렉터리의 파일도 즉시 포함됩니다. 다음 다이어그램에서 디렉터리 구조를 참조하세요.
줄 바꿈으로 구분된 여러 패턴을 추가할 수 있습니다.
참고 항목
제외 동작(!
)은 Git 원뿔 패턴 구문에서 지원되지 않습니다.
스파스 체크 아웃 설정 수정
리포지토리가 만들어지면 설정 > 고급 > 원뿔 패턴에서 스파스 체크 아웃 원뿔 패턴을 편집할 수 있습니다.
다음 작동을 확인합니다.
커밋되지 않은 변경 내용이 없는 경우 원뿔 패턴에서 폴더를 제거하면 Databricks에서 폴더가 제거됩니다.
스파스 체크 아웃 원뿔 패턴을 편집하여 폴더를 추가하면 추가로 끌어오지 않아도 Databricks에 폴더가 추가됩니다.
해당 폴더에 커밋되지 않은 변경 내용이 있는 경우 폴더를 제거하도록 스파스 체크 아웃 패턴을 변경할 수 없습니다.
예를 들어 사용자가 폴더의 파일을 편집하고 변경 내용을 커밋하지 않습니다. 그런 다음, 이 폴더를 포함하지 않도록 스파스 체크 아웃 패턴을 변경하려고 합니다. 이 경우 패턴이 허용되지만 실제 폴더는 삭제되지 않습니다. 패턴을 되돌려 해당 폴더를 포함하고, 변경 내용을 커밋한 다음, 새 패턴을 다시 적용해야 합니다.
참고 항목
스파스 체크 아웃 모드를 사용하도록 설정하여 만든 리포지토리에는 스파스 체크 아웃을 사용하지 않도록 설정할 수 없습니다.
스파스 체크 아웃을 사용하여 변경 및 푸시
기존 파일을 편집하고 Git 폴더에서 커밋하고 푸시할 수 있습니다. 파일의 새 폴더를 만들 때 해당 리포지토리에 대해 지정한 원뿔 패턴에 포함합니다.
원뿔 패턴 외부에 새 폴더를 포함하면 커밋 및 푸시 작업 중에 오류가 발생합니다. 이 문제를 해결하려면 커밋 및 푸시하려는 새 폴더를 포함하도록 원뿔 패턴을 편집합니다.
리포지토리 구성 파일의 패턴
커밋 출력 구성 파일은 gitignore 패턴과 유사한 패턴을 사용하고 다음을 수행합니다 .
- 양수 패턴을 사용하면 일치하는 Notebook에 출력을 포함할 수 있습니다.
- 음수 패턴은 일치하는 Notebook에 대한 출력 포함을 사용하지 않도록 설정합니다.
- 패턴은 모든 Notebook에 대해 순서대로 평가됩니다.
- Notebook으로 확인되지
.ipynb
않는 잘못된 경로 또는 경로는 무시됩니다.
양수 패턴: Notebook 경로 folder/innerfolder/notebook.ipynb
의 출력을 포함하려면 다음 패턴을 사용합니다.
**/*
folder/**
folder/innerfolder/note*
음수 패턴: Notebook에 대한 출력을 제외하려면 양수 패턴이 일치하지 않는지 확인하거나 구성 파일의 올바른 위치에 음수 패턴을 추가합니다. 음수(제외) 패턴은 다음으로 !
시작합니다.
!folder/innerfolder/*.ipynb
!folder/**/*.ipynb
!**/notebook.ipynb
스파스 체크 아웃 제한
스파스 체크 아웃은 현재 크기가 4GB보다 큰 Azure DevOps 리포지토리에서 작동하지 않습니다.
리포지토리를 추가하고 나중에 원격으로 연결
Git 폴더를 프로그래밍 방식으로 관리하고 사용하려면 Git 폴더 REST API를 사용합니다.