MATLAB에서 Git 사용하기
MATLAB®에서 Git™ 소스 컨트롤을 사용하여 파일을 관리하고 다른 사용자와 협업할 수 있습니다. Git을 사용하면 파일의 변경 사항을 추적하고 나중에 특정 버전을 다시 불러올 수 있습니다. MATLAB 현재 폴더 브라우저에서 기존 원격 리포지토리를 복제하고, 로컬 리포지토리에 파일을 추가하고, 변경 사항을 커밋하고, 변경 사항을 원격 리포지토리에 밀어 넣고 원격 리포지토리에서 끌어올 수 있습니다.
원격 Git 리포지토리를 복제한 후 원격 리포지토리를 사용하는 기본 워크플로는 다음과 같습니다.
원격 리포지토리에서 최신 변경 사항을 끌어옵니다.
현재 작업 폴더에서 기존 파일을 편집합니다.
로컬 리포지토리에 추가할 새 파일을 표시합니다.
변경 사항을 검토합니다.
수정된 파일을 로컬 리포지토리에 커밋합니다.
변경 내용을 원격 리포지토리에 밀어 넣습니다.
또는 다른 사람과 공유하지 않고 파일의 변경 사항을 추적하려면 원격 리포지토리와 동기화되지 않는 로컬 Git 리포지토리를 생성하면 됩니다. 원격 리포지토리와 동기화되지 않는 로컬 리포지토리를 사용할 경우 끌어오기(Pull) 및 밀어넣기(Push) 작업이 없다는 점을 제외하고는 동일한 기본 워크플로가 적용됩니다.
참고
MATLAB에서 Git을 사용하기에 앞서 시스템을 설정하고 파일 손상을 방지하기 위해 Git 소스 컨트롤 설정하기 항목에 설명된 단계를 따르십시오.
원격 Git 리포지토리 복제하기
HTTPS 또는 SSH를 사용하여 GitHub® 또는 GitLab® 등에서 원격 Git 리포지토리를 복제할 수 있습니다.
원격 Git 리포지토리를 복제하려면 다음을 수행하십시오.
현재 폴더 브라우저에서 공백을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 파일 관리를 선택합니다. "소스 컨트롤을 사용하여 파일 관리" 대화 상자가 MATLAB에 열립니다.
소스 컨트롤 연동 옵션을
Git
으로 설정합니다.리포지토리 경로 필드 옆에 있는 변경 버튼을 클릭합니다. MATLAB에 리포지토리 선택 대화 상자가 열립니다.
원격 리포지토리의 경로를 입력합니다.
유효성 검사 버튼을 클릭하여 원격 리포지토리 경로를 확인합니다. 메시지가 표시되면 원격 리포지토리에 대한 로그인 정보를 입력합니다(예: GitHub 사용자 이름 및 개인 액세스 토큰). 경로가 올바르면 확인을 클릭하여 원격 리포지토리를 선택한 다음, "소스 컨트롤을 사용하여 파일 관리" 대화 상자로 돌아갑니다.
샌드박스 필드에서 가져온 파일을 저장할 작업 폴더의 경로를 입력합니다. 지정한 폴더는 비어 있어야 합니다.
가져오기 버튼을 클릭합니다. 메시지가 표시되면 원격 리포지토리에 대한 로그인 정보를 입력합니다.
원격 리포지토리를 복제한 후 원격 리포지토리의 경로를 변경하려면 소스 컨트롤 > 원격을 선택한 다음 새 경로를 지정합니다.
HTTPS를 사용하여 원격 리포지토리와 상호 작용할 때 잦은 로그인 프롬프트를 방지하려면 자격 증명을 저장하도록 Git 자격 증명 관리자를 구성하십시오. 자세한 내용은 Git 자격 증명 관리하기 항목을 참조하십시오. 또는 SSH를 대신 사용하여 새 공개 키를 추가하고 원격 리포지토리를 복제할 수 있습니다. 자세한 내용은 Git SSH 인증을 사용하도록 MATLAB 구성하기 항목을 참조하십시오.
원격 리포지토리를 새 프로젝트에 복제할 수도 있습니다. 자세한 내용은 원격 Git 리포지토리를 새 프로젝트에 복제하기 항목을 참조하십시오.
추가할 파일 표시하기
작업 폴더의 파일을 소스 컨트롤에 추가하려면, 추가할 파일을 표시하십시오. MATLAB은 현재 폴더 브라우저의 Git 열에서 "소스 컨트롤 상태에 있지 않음" 아이콘()을 통해 소스 컨트롤에 추가되지 않은 파일임을 나타냅니다.
추가할 파일을 표시하려면 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > Git에 추가를 선택하십시오. MATLAB은 "추가됨" 아이콘()을 통해 해당 파일이 추가되는 것으로 표시되었음을 나타냅니다.
변경 사항 검토하기
작업 폴더에서 파일을 변경하면 MATLAB이 현재 폴더 브라우저의 Git 열에서 "수정됨" 아이콘()을 통해 파일이 수정되었음을 나타냅니다. "수정되지 않음" 아이콘()은 파일에 아무런 변경 사항이 없음을 나타냅니다.
수정된 파일을 커밋하기 전에 다음 표에 설명된 방법 중 하나를 사용하여 파일의 변경 사항을 검토하십시오.
동작 | 절차 |
---|---|
변경된 파일을 로컬 리포지토리에 있는 파일의 최신 수정본과 비교. | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 선조와 비교를 선택합니다. 비교 툴이 차이점을 표시합니다. |
변경된 파일을 로컬 리포지토리에 있는 파일의 수정본과 비교. | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 수정본과 비교를 선택합니다. 그런 다음 수정된 파일과 비교할 수정본을 하나 선택하고 로컬 파일과 비교 버튼을 클릭합니다. 비교 툴이 차이점을 표시합니다. |
로컬 리포지토리에 있는 파일의 이전 두 수정본 비교. | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 수정본과 비교를 선택합니다. 그런 다음 비교할 두 수정본을 선택하고 선택한 파일 비교 버튼을 클릭합니다. 비교 툴이 차이점을 표시합니다. |
로컬 리포지토리에서 파일의 수정본 찾아보기. | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 수정본 표시를 선택합니다. 이전에 파일을 커밋한 사람, 커밋한 시기, 로그 메시지, 각 변경 세트의 파일 목록에 대한 정보를 볼 수 있습니다. 여러 파일을 선택하여 각 파일의 수정 이력을 볼 수 있습니다. |
수정된 파일 커밋하기
작업 폴더에 있는 새 파일과 수정된 파일의 현재 상태를 기록하고 저장하려면 파일을 로컬 리포지토리에 커밋하십시오.
로컬 리포지토리에 파일을 커밋하려면 다음을 수행하십시오.
현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 변경 사항 확인 및 커밋을 선택합니다. 변경 사항 확인 및 커밋 대화 상자가 열립니다.
커밋할 파일을 선택합니다.
주석 섹션에 주석을 입력합니다.
커밋 버튼을 클릭합니다.
원격 리포지토리가 앞쪽으로 이동한 경우 파일 수정본을 업데이트하라는 메시지가 표시됩니다. 수정본을 업데이트하려면 현재 폴더 브라우저를 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 끌어오기(Pull)를 선택하십시오. 커밋하기 전에 남아 있는 충돌을 해결하도록 합니다.
파일 밀어넣기
로컬 리포지토리의 커밋된 변경 사항이 원격 리포지토리에 없는 경우 그러한 변경 사항을 원격 리포지토리에 밀어 넣을 수 있습니다. 로컬 리포지토리의 변경 사항이 원격 리포지토리에 없는지 확인하려면 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 세부 정보 보기를 선택하십시오. 커밋된 로컬 변경 사항이 원격 리포지토리보다 앞서는지, 뒤처지는지 아니면 일치하는지가 Git 정보 필드에 표시됩니다.
로컬 리포지토리가 원격 리포지토리보다 앞서는 경우 변경 사항을 밀어 넣으려면 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 밀어넣기(Push)를 선택합니다. 리포지토리가 전진하여 변경 사항을 직접 밀어 넣을 수 없는 경우 메시지가 나타납니다. 계속하려면 원격 리포지토리에서 최신 변경 사항을 로컬 리포지토리로 끌어옵니다.
Git는 원격 리포지토리의 빈 폴더를 지원하지 않습니다. 따라서 MATLAB에 빈 폴더를 만들고 변경 사항을 원격 리포지토리에 밀어 넣는 경우 원격 리포지토리를 새 로컬 리포지토리에 복제할 때 빈 폴더가 포함되지 않습니다. 다른 사용자가 사용할 수 있도록 빈 폴더를 원격 리포지토리에 밀어 넣으려면 폴더에 빈 gitignore
파일을 만든 다음 변경 사항을 밀어 넣습니다.
파일 끌어오기
원격 리포지토리가 전진해 로컬 리포지토리가 뒤처지는 경우 최신 변경 사항을 로컬 리포지토리에 끌어올 수 있습니다. 최신 변경 사항을 끌어오려면 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 끌어오기(Pull)를 선택하십시오. 충돌이 발생하면 끌어오기가 실패할 수 있습니다. 복잡한 변경이 있는 경우 origin에서 브랜치(로컬 리포지토리)를 생성하고 내용을 일부 변경한 다음 그 브랜치를 메인 추적 브랜치에 병합하는 것이 좋습니다.
끌어오기 동작이 최신 변경 사항을 가져와서 현재 브랜치에 병합합니다. 리포지토리로부터 어떤 내용이 들어오게 될지 확신할 수 없는 경우에는 먼저 파일을 가져와서(fetch) 변경 사항을 검토한 다음 수동으로 병합하십시오.
파일 가져오기
원격 리포지토리에서 최신 변경 사항을 가져오려면 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 가져오기(Fetch)를 선택하십시오. 가져오기를 실행하면 모든 origin 브랜치가 로컬 리포지토리에 업데이트됩니다. 작업 폴더 파일은 변경되지 않습니다. origin 리포지토리의 변경 사항을 보려면 origin에서의 변경 사항을 사용자의 로컬 브랜치에 병합해야 합니다.
로컬 리포지토리의 가져온 변경 사항 중에 병합해야 할 사항이 있는지 확인하려면 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 세부 정보 보기를 선택하십시오. 커밋된 로컬 변경 사항이 원격 리포지토리보다 앞서는지, 뒤처지는지 아니면 일치하는지가 Git 정보 필드에 표시됩니다. 커밋된 로컬 변경 사항이 뒤처지는 경우 원격 리포지토리에서 최신 변경 사항을 가져와서 병합해야 합니다.
예를 들어 메인 브랜치를 사용 중인 경우 메인 브랜치의 모든 변경 사항을 원격 리포지토리에 가져오십시오.
현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 가져오기(Fetch)를 선택합니다.
현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 브랜치를 선택합니다.
브랜치 대화 상자의 브랜치 목록에서 origin/main을 선택합니다.
병합을 클릭합니다. origin 브랜치 변경 사항이 작업 폴더의 메인 브랜치에 병합됩니다.
병합이 제대로 완료되었는지 확인하려면 현재 폴더 브라우저에서 마우스 오른쪽 버튼을 클릭하고 소스 컨트롤 > 세부 정보 보기를 선택하십시오. Git 정보 필드에 Coincident with /origin/main
이 표시되면 변경 사항이 제대로 병합된 것입니다. 이제 원격 리포지토리에서 가져와 병합한 변경 내용을 작업 폴더에서 확인할 수 있습니다.
충돌 문제 해결하기
두 명의 사용자가 서로 다른 작업 폴더나 서로 다른 브랜치에서 동일한 파일을 변경하는 경우, 수정한 파일을 커밋하려고 하면 충돌 메시지가 나타납니다. 충돌을 해결하려면 충돌을 일으키는 차이점을 비교한 다음 충돌하는 변경 사항을 병합하거나 덮어쓰십시오. 충돌을 해결한 후에는 충돌을 해결 상태로 표시하고 파일을 커밋할 수 있습니다.
충돌 문제가 있는 경우 MATLAB은 현재 폴더 브라우저의 Git 열에 빨간색 경고 아이콘()으로 표시합니다. 파일 내 충돌을 해결하려면 다음을 수행하십시오.
충돌이 난 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 충돌 보기를 선택합니다. 비교 툴이 열리고 파일의 충돌하는 두 수정본 간의 차이가 표시됩니다.
비교 툴을 사용하여 충돌 해결 방법을 결정합니다. 두 수정본 간의 변경 사항을 병합하려면 파일과 폴더 비교하기 및 파일 병합하기 항목을 참조하십시오.
충돌 문제를 해결한 후에는 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 충돌을 해결 상태로 표시를 선택합니다.
수정된 파일을 커밋합니다.
충돌 마커 추출하기
이진 파일로 등록하지 않은 파일(예: 텍스트 파일)을 사용하는 경우 Git은 그러한 파일에 충돌 마커를 삽입할 수 있습니다. 충돌 마커의 형식은 다음과 같습니다.
<<<<<<<["mine" file descriptor] ["mine" file content] ======= ["theirs" file content] <<<<<<<["theirs" file descriptor]
충돌 파일을 열거나 충돌 보기를 선택하면 MATLAB은 파일에서 충돌 마커를 확인합니다. 파일에 충돌 마커가 포함된 경우 충돌 마커 발견 대화 상자가 열립니다. 프롬프트 내용에 따라 충돌 마커를 추출하고 파일을 수정합니다.
충돌 마커를 보려면 충돌 마커 발견 대화 상자에서 파일 불러오기를 클릭하십시오. MATLAB은 충돌 마커를 인식할 수 없으므로 파일을 열려고 하지 마십시오. 대신, 파일 수정을 클릭하여 충돌 마커를 추출합니다.
충돌 문제가 없는 파일에도 충돌 마커가 있을 수 있습니다. 이러한 상황은 충돌 문제가 있는 파일이 "해결됨"으로 표시되어 로컬 리포지토리에 커밋된 경우에 발생할 수 있습니다. "충돌함"으로 표시되지 않은 파일에서 충돌 마커를 발견했다면 이 충돌 마커를 수동으로 추출할 수 있습니다.
현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 파일에 대한 충돌 마커를 추출을 선택합니다.
"파일에 대한 충돌 마커를 추출" 대화 상자에서, "mine" 파일 버전을 충돌이 난 파일에다 덮어 복사하는 디폴트 옵션과 추출된 파일을 비교합니다 옵션을 선택합니다.
추출을 클릭합니다.
비교 툴을 사용하여 충돌 문제를 해결합니다.
파일 관리하기
현재 폴더 브라우저에서 로컬 Git 리포지토리의 파일을 관리할 때 취할 수 있는 몇 가지 동작이 있습니다. 파일의 이동, 이름 바꾸기, 삭제, 되돌리기가 가능할 뿐 아니라 파일의 소스 컨트롤 상태도 새로 고칠 수 있습니다.
다음 표에는 파일 관리 시 취할 수 있는 동작이 설명되어 있습니다.
동작 | 절차 |
---|---|
하나 이상의 파일에 대한 소스 컨트롤 상태 새로 고침 | 현재 폴더 브라우저에서 하나 이상의 파일을 선택하고 마우스 오른쪽 버튼을 클릭한 후 소스 컨트롤 > Git 상태 새로 고침을 선택하십시오. |
로컬 리포지토리에 있는 모든 파일의 소스 컨트롤 상태 새로 고침 | 현재 폴더 브라우저에서 공백을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > Git 상태 새로 고침을 선택하십시오. |
파일 이동 | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 이동을 선택한 후 새 파일 위치를 입력하십시오. |
파일 이름 바꾸기 | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 이름 바꾸기를 선택한 후 새 파일 이름을 입력하십시오. |
로컬 리포지토리의 파일 삭제 및 작업 폴더에 복사본 유지 | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > Git에서 삭제를 선택하십시오. 소스 컨트롤에서 삭제되도록 파일이 표시되면 기호가 "삭제됨"()으로 바뀝니다. 다음 커밋 시 파일이 리포지토리에서 제거됩니다. |
로컬 리포지토리와 작업 폴더에서 파일 삭제 | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > Git 및 디스크에서 삭제를 선택하십시오. 파일이 현재 폴더 브라우저에서 사라지고 작업 폴더에서 즉시 삭제됩니다. 다음 커밋 시 파일이 리포지토리에서 제거됩니다. |
로컬 리포지토리에 있는 파일의 변경 사항 되돌리기 | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 로컬 변경 사항 되돌리기를 선택하십시오. |
로컬 리포지토리에 있는 모든 파일의 로컬 변경 사항 되돌리기 | 현재 폴더 브라우저에서 공백을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 브랜치를 선택하십시오. 브랜치 대화 상자에서 HEAD로 되돌리기를 클릭하십시오. |
파일을 지정된 수정본으로 되돌리기 | 현재 폴더 브라우저에서 파일을 마우스 오른쪽 버튼으로 클릭하고 Git을(를) 사용하여 되돌리기를 선택하십시오. 그런 다음 수정본을 하나 선택하고 되돌리기 버튼을 클릭하십시오. 파일을 이전 수정본으로 되돌린 후에 변경하는 경우, 리포지토리 내역의 충돌을 해결할 때까지 파일을 커밋할 수 없습니다. |
커밋되지 않은 변경 사항을 Git 스태시를 사용하여 저장하기
수정된 파일을 커밋하지 않고 나중에 사용할 수 있도록 저장하려면 Git 스태시를 만드십시오. 스태시를 사용하면 파일 변경 사항을 손쉽게 새 브랜치로 옮길 수도 있습니다.
스태시를 만들려면 현재 폴더 브라우저의 작업 폴더에서 공백을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 스태시를 선택하십시오. 그런 다음 새 스태시 버튼을 클릭하십시오.
스태시에서 수정된 파일을 보려면 현재 폴더 브라우저에서 공백을 마우스 오른쪽 버튼으로 클릭하고 소스 컨트롤 > 스태시를 선택하십시오. 사용 가능한 스태시 섹션에서 스태시를 선택한 다음 수정된 파일을 마우스 오른쪽 버튼으로 클릭하고 변경 사항을 보거나 복사본을 저장하십시오.
스태시를 현재 브랜치에 적용한 다음 해당 스태시를 삭제하려면 팝을 클릭하십시오. 스태시를 적용하고 유지하려면 적용을 클릭하십시오.
스태시를 삭제하려면 드롭을 클릭하십시오.
참고 항목
함수
gitrepo
|gitclone
|add
|rm
|commit
|createBranch
|switchBranch
|fetch
|merge
|push