이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

Git 소스 컨트롤 설정하기

Git 소스 컨트롤 정보

MATLAB®에 연동된 Git™은 브랜치 생성과 병합을 지원하는 분산 소스 컨트롤을 제공합니다. Git은 분산 소스 컨트롤 툴이므로, 변경 사항을 로컬 리포지토리로 커밋한 후 나중에 다른 원격 리포지토리와 동기화할 수 있습니다.

모든 샌드박스에 전체 리포지토리가 포함되어 있기 때문에 Git은 분산 개발을 지원합니다. 모든 파일의 전체 수정본 내역은 로컬에 저장됩니다. 이로서, 로컬에서 편집하거나 커밋할 때마다 원격 리포지토리에 접속할 필요가 없고 변경 사항을 Push할 때에만 접속하면 되므로 오프라인 작업이 가능합니다. 또한, 고유한 브랜치를 만들어 로컬 편집본을 커밋할 수도 있습니다. 이렇게 하면 속도가 빠르며 커밋할 때마다 다른 변경 사항을 병합할 필요가 없습니다.

Git 소스 컨트롤의 기능은 다음과 같습니다.

  • 브랜치 관리

  • 로컬 전체 수정본 내역

  • 원격 액세스보다 빠른 로컬 액세스

  • 오프라인 작업

  • 파일 이름과 내용 개별 추적

  • 책임 소재 추적을 위한 변경 로그 강제 적용

  • 준비가 되면 변경 사항 배치 통합

이러한 기능이 모든 상황에 적합하지는 않습니다. 예를 들어, 프로젝트가 오프라인 작업에 적절하지 않거나 리포지토리가 전체 로컬 수정본 내역에 비해 너무 큰 경우, Git는 이상적인 소스 컨트롤이 아닙니다. 또한, 편집 전에 파일 잠금을 강제 적용해야 하는 경우 Git에는 이 기능이 없습니다. 이 경우에는 SVN이 더 나은 선택입니다.

MATLAB에서 Git을 사용하면 다음을 수행할 수 있습니다.

  • 로컬 Git 리포지토리를 만듭니다.

  • 원격 Git 리포지토리에서 파일을 끌어오고(Pull) 가져옵니다(Fetch).

  • 브랜치를 만들거나 전환합니다.

  • 브랜치를 로컬에서 병합합니다.

  • 로컬에서 커밋합니다.

  • 원격 Git 리포지토리에 파일을 밀어넣습니다(Push).

다음 도식은 분산된 Git 워크플로를 나타냅니다.

커맨드 라인 Git 클라이언트 설치하기

MATLAB에서 Git을 사용하여 브랜치를 병합하려는 경우, 시스템 전역에서 사용할 수 있는 커맨드 라인 Git 클라이언트도 설치해야 합니다. 추가 설치 없이 다른 Git 기능을 사용할 수 있습니다.

GitHub®에서 제공하는 mingw32 환경(시작(Start) 메뉴의 Git 셸(Git Shell))을 비롯한 일부 클라이언트는 시스템 전역에서 사용할 수 없습니다. 커맨드 라인 Git을 설치하여 시스템 전역에서 사용할 수 있게 합니다. 그러면 MATLAB에서 표준 ssh 키를 찾을 수 있습니다.

MATLAB에서 명령 !git을 실행하여 Git을 사용할 수 있는지 확인합니다. Git을 사용할 수 없는 경우, 설치합니다. 커맨드 라인 Git 클라이언트를 설치하고 파일을 이진 형식으로 등록한 후에는 MATLAB에서 Git의 병합 기능을 사용할 수 있습니다.

Windows®의 경우:

  1. Git 인스톨러를 다운로드하여 실행합니다. 커맨드 라인 Git은 다음 주소에서 찾을 수 있습니다.

  2. PATH를 조정하는 섹션에서 설치 옵션으로 Use Git from the Windows Command Prompt를 선택합니다. 이 옵션은 MATLAB이 Git과 통신할 수 있도록 PATH 변수에 Git을 추가합니다.

  3. 라인 끝 변환을 구성하는 섹션에서 Checkout as-is, commit as-is 옵션을 선택하여 파일에서 라인 끝이 변환되는 것을 방지합니다.

  4. 이진 파일이 손상되는 것을 방지하기 위해, Git을 사용하여 브랜치를 병합하기 전에 이진 파일을 등록하십시오.

Linux®의 경우, 대부분의 배포판에서 Git을 사용할 수 있습니다. 사용 중인 배포판에 맞게 Git을 설치합니다. 예를 들어, Debian®의 경우 다음을 입력하여 Git을 설치합니다.

sudo apt-get install git

Mac의 경우, Mavericks(10.9) 이상 버전에서 터미널에서 git을 실행해 보십시오. 아직 Git이 설치되어 있지 않은 경우, Xcode Command Line Tools를 설치하라는 메시지가 나타납니다. 추가 옵션은 https://git-scm.com/doc를 참조하십시오.

Git에 이진 파일 등록하기

타사 소스 컨트롤 툴을 사용하는 경우 .mlx, .mat, .fig, .mdl, .slx와 같은 MATLAB 및 Simulink® 파일 확장자를 이진 형식으로 등록해야 합니다. 확장자를 등록하지 않으면, 라인 끝(EOL) 문자 변경, 토큰 확장, 키워드 대체, 또는 자동 병합 시도 등을 통해 파일을 제출할 때 이러한 툴이 파일을 손상시킬 수 있습니다. MATLAB 외부에서 소스 컨트롤 툴을 사용하는 경우나 먼저 파일 형식을 등록하지 않은 채로 MATLAB에서 파일을 제출하려고 하는 경우에 손상이 발생할 수 있습니다.

다른 파일 확장자가 이진 형식으로 등록되어 있는지 확인하여 체크인 시 손상되지 않도록 하십시오. .mdlp, .slxp, .sldd, .p, MEX 파일, .xlsx, .jpg, .pdf, .docx 등의 파일을 확인하고 등록하십시오.

커맨드 라인 Git 클라이언트를 설치한 후에는 충돌 마커를 삽입하여 Git으로 인한 파일 손상을 방지할 수 있습니다. 이렇게 하려면 .gitattributes 파일을 편집하여 이진 파일을 등록하십시오. 자세한 내용은 다음을 참조하십시오.

  1. 샌드박스 폴더에 .gitattributes 파일이 아직 없는 경우 다음과 같이 MATLAB 명령 프롬프트에서 파일을 생성하십시오.

    edit .gitattributes
  2. .gitattributes 파일에 다음 라인을 추가합니다.

    *.mlx -crlf -diff -merge
    *.mat -crlf -diff -merge
    *.fig -crlf -diff -merge
    *.p -crlf -diff -merge
    *.slx -crlf -diff -merge
    *.mdl -crlf -diff -merge
    
    이 라인은 이 유형의 파일에 대해 자동적으로 라인 피드, 차이 비교, 병합 등을 시도하지 않도록 지정합니다.

  3. 체크인 시 손상 방지를 위해 이진 형식으로 등록해야 하는, 사용 중인 다른 파일 형식이 있는지 확인합니다. .mdlp, .slxp, MEX 파일(.mexa64, .mexmaci64, .mexw64), .xlsx, .jpg, .pdf, .docx 등의 파일이 있는지 확인합니다. 각각의 필요한 파일 형식에 대한 라인을 attributes 파일에 추가합니다.

    예제:

    *.mdlp -crlf -diff -merge
    *.slxp -crlf -diff -merge
    *.sldd -crlf -diff -merge
    *.mexa64 -crlf -diff -merge
    *.mexw64 -crlf -diff -merge
    *.mexmaci64 -crlf -diff -merge
    *.xlsx -crlf -diff -merge
    *.docx -crlf -diff -merge
    *.pdf -crlf -diff -merge
    *.jpg -crlf -diff -merge
    *.png -crlf -diff -merge
  4. Git 클라이언트를 사용할 수 있도록 MATLAB을 다시 시작합니다.

Git 서브모듈 추가하기

다른 리포지토리의 코드를 재사용하기 위해 Git 서브모듈을 지정할 수 있습니다.

외부 Git 리포지토리를 서브모듈로 복제하려면 다음과 같이 하십시오.

  1. MATLAB 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤(Source Control) > 서브모듈(Submodules)을 선택합니다.

  2. 서브모듈 대화 상자에서 + 버튼을 클릭합니다.

  3. 서브모듈 추가 대화 상자의 원격(Remote) 상자에 리포지토리 위치를 지정합니다. 선택적으로, 유효성 검사(Validate)를 클릭합니다.

  4. 경로(Path) 상자에 서브모듈의 위치를 지정하고 확인(OK)을 클릭합니다. 서브모듈 대화 상자에 서브모듈의 상태와 세부 정보가 표시됩니다.

  5. 상태 메시지를 확인하고 닫기(Close)를 클릭합니다.

가져오기(Fetch)를 사용하여 최신 서브모듈 버전 가져오기

추가된 서브모듈을 관리하려는 경우에는 서브모듈 대화 상자를 엽니다.

  1. 최신 버전의 서브모듈을 가져오려면 서브모듈 대화 상자에서 가져오기(Fetch)를 클릭합니다.

  2. 가져온 후에는 병합해야 합니다. 리포지토리에서 원격 추적 브랜치 대비 상대적인 현재 브랜치에 대한 자세한 내용을 보려면 서브모듈 대화 상자의 상태(State) 메시지를 확인하십시오. 메시지 Behind가 표시되면 리포지토리의 변경 사항을 로컬 브랜치에 병합해야 합니다.

  3. 브랜치(Branches)를 클릭한 후 브랜치 대화 상자를 사용하여 원본 변경 사항을 로컬 브랜치에 병합합니다. 가져오기(Fetch)와 병합하기 항목을 참조하십시오.

밀어넣기(Push)를 사용하여 변경 사항을 서브모듈 리포지토리로 보내기

서브모듈에서 내용을 변경한 후 변경 사항을 다시 리포지토리로 보내려면 다음과 같이 하십시오.

  1. 상위 폴더에서 로컬 커밋을 수행합니다.

  2. 서브모듈 대화 상자를 열고 밀어넣기(Push)를 클릭합니다.

다른 사용자가 상위 폴더를 복제할 때 자신이 서브모듈에서 변경한 사항을 받도록 하려면 인덱스와 헤드가 일치하는지 확인하십시오.

  1. 서브모듈 대화 상자에서 인덱스 값과 헤드 값을 확인합니다. 처음에 서브모듈을 복제했을 때나 마지막으로 상위 폴더를 커밋했을 때 인덱스는 헤드 커밋을 가리킵니다. 인덱스와 헤드가 일치하지 않으면 인덱스를 업데이트해야 합니다.

  2. 인덱스를 업데이트하려면 상위 폴더에서 변경 사항을 커밋한 다음 서브모듈 대화 상자에서 밀어넣기(Push)를 클릭합니다. 그러면 인덱스와 헤드가 동일해집니다.

관련 항목