리포지토리 및 원격 저장소 작업
Git 리포지토리 및 원격 저장소를 사용하면 서로 다른 위치에서 작업을 동기화하여 다른 사람들과 협업할 수 있습니다. VS Code는 명령줄 Git 지식 없이도 원격 리포지토리 작업을 위한 통합 도구를 제공합니다.
이 문서는 복제, 게시, 변경 사항 동기화 및 VS Code에서 여러 리포지토리 관리를 포함하여 Git 리포지토리 및 원격 저장소 작업을 다룹니다.
원격 저장소 이해
원격 저장소는 GitHub, Azure DevOps 또는 GitLab과 같은 다른 서버에 호스팅된 Git 리포지토리입니다. 원격 저장소를 사용하면 팀 구성원이 작업을 공유할 수 있는 중앙 위치를 제공하여 협업을 가능하게 합니다.
리포지토리를 복제하면 Git은 자동으로 원본 리포지토리를 가리키는 origin이라는 원격 저장소를 생성합니다. 다른 서버 또는 리포지토리와 상호 작용해야 하는 경우 여러 원격 저장소와 작업할 수 있습니다.
원격 저장소 작업에는 세 가지 주요 작업이 포함됩니다.
-
Fetch: 작업 파일을 변경하지 않고 원격 저장소에서 커밋을 다운로드합니다. 이를 통해 다른 사람의 작업을 병합하지 않고도 다른 사람이 수행한 작업을 확인할 수 있습니다.
-
Pull: 원격 저장소에서 커밋을 다운로드하여 현재 브랜치에 병합합니다. 이것은 fetch와 merge를 한 번의 작업으로 수행하는 것입니다.
-
Push: 로컬 커밋을 원격 저장소에 업로드하여 다른 사람들이 변경 사항에 액세스할 수 있도록 합니다.

푸시할 때 Git은 커밋을 보낼 원격 저장소를 알아야 합니다. 기본적으로 Git은 현재 브랜치에 구성된 업스트림 브랜치를 사용합니다. 업스트림이 설정되지 않은 경우 VS Code는 브랜치를 게시하고 업스트림을 설정하라는 메시지를 표시합니다.
원격 저장소 추가
리포지토리에 새 원격 저장소를 추가하려면
-
소스 제어 보기(
⌃⇧G (Windows, Linux Ctrl+Shift+G))에서 **추가 작업** (...) > **원격 저장소** > **원격 저장소 추가**를 선택합니다.또는 명령 팔레트(
⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **Git: 원격 저장소 추가** 명령을 실행합니다. -
원격 저장소 URL 입력
-
원격 저장소의 이름 입력 (예:
upstream)
이제 리포지토리에 가져오거나 푸시할 수 있는 추가 원격 저장소가 있습니다.
유사한 단계를 사용하여 원격 저장소를 제거할 수 있습니다 (Git: 원격 저장소 제거).
리포지토리 복제
복제는 원격 리포지토리의 로컬 복사본을 컴퓨터에 만듭니다. 복제된 리포지토리에는 원격 저장소의 모든 브랜치, 커밋 및 기록이 포함됩니다. 기본적으로 Git은 복제한 URL을 가리키는 origin이라는 원격 저장소를 구성합니다.
리포지토리를 복제하려면 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **Git: 복제** 명령을 실행하거나 소스 제어 보기에서 **리포지토리 복제** 버튼을 선택합니다.
GitHub에서 복제하는 경우 VS Code는 GitHub 인증을 요청합니다. 그런 다음 목록에서 리포지토리를 선택하여 컴퓨터로 복제합니다. 목록에는 공개 및 비공개 리포지토리가 모두 포함됩니다. 다른 Git 제공자의 경우 리포지토리 URL을 입력합니다.

복제할 때 VS Code는 리포지토리를 저장할 로컬 폴더를 선택하라는 메시지를 표시합니다. 복제 후 복제된 리포지토리를 새 창에서 열도록 선택할 수 있습니다.
GitHub Pull Requests and Issues 확장은 풀 요청 및 이슈 관리를 통해 GitHub 통합을 강화합니다. VS Code에서 GitHub 작업에 대해 자세히 알아보세요.
GitHub에 게시
원격 저장소에 연결되지 않은 로컬 리포지토리가 있는 경우 VS Code에서 직접 GitHub에 게시할 수 있습니다.
리포지토리를 GitHub에 게시하려면
-
소스 제어 보기 열기
-
소스 제어 보기에서 **GitHub에 게시** 선택
-
요청 시 GitHub에 로그인
-
공개 또는 비공개 리포지토리를 만들지 선택
-
초기 커밋에 포함할 파일 선택
VS Code는 GitHub에 새 리포지토리를 만들고 원격 저장소로 추가한 다음 커밋을 푸시합니다.
GitHub에 게시하는 것은 로컬 작업을 온라인으로 가져오는 가장 빠른 방법입니다. 리포지토리를 만들고 원격 저장소를 구성하고 커밋을 한 단계로 푸시합니다.
푸시, 풀 및 동기화
푸시, 풀 및 동기화는 로컬 작업을 원격 리포지토리와 동기화된 상태로 유지하는 핵심 작업입니다.
커밋 푸시
푸시는 로컬 커밋을 원격 리포지토리에 업로드합니다. 커밋을 푸시하려면
-
변경 사항을 로컬에서 커밋
-
소스 제어 보기에서 **추가 작업** (...) > **푸시** 선택
또는 상태 표시줄의 동기화 아이콘을 선택하여 한 번의 작업으로 풀과 푸시를 모두 수행합니다. 특정 원격 저장소로 푸시하려면 **푸시 대상** 옵션을 사용합니다.
소스 제어 그래프 보기 도구 모음의 푸시 아이콘을 사용하여 로컬 커밋을 푸시할 수도 있습니다.
-
요청 시 원격 저장소와 인증하도록 로그인
커밋이 원격 브랜치에 업로드됩니다. 이제 다른 팀 구성원이 변경 사항을 가져갈 수 있습니다.
브랜치에 업스트림이 구성되어 있지 않은 경우 VS Code는 먼저 브랜치를 게시하라는 메시지를 표시합니다.
커밋 가져오기
가져오기는 원격 리포지토리에서 커밋을 다운로드하여 로컬 브랜치에 병합합니다. 커밋을 가져오려면
-
소스 제어 보기에서 **추가 작업** (...) > **가져오기** 선택
또는 상태 표시줄의 동기화 아이콘을 선택하여 한 번의 작업으로 풀과 푸시를 모두 수행합니다. 특정 원격 저장소에서 가져오려면 **가져오기 대상** 옵션을 사용합니다.
소스 제어 그래프 보기 도구 모음의 가져오기 아이콘을 사용하여 원격 커밋을 가져올 수도 있습니다.
-
VS Code가 원격 커밋을 다운로드하고 병합합니다.
로컬 변경 사항과 원격 커밋 사이에 충돌이 있는 경우 VS Code는 병합 충돌 해결 도구를 통해 이를 해결하도록 도와줍니다.
리베이스를 사용한 가져오기
원격 변경 사항을 병합하는 대신 로컬 커밋을 원격 변경 사항 위에 리베이스할 수 있습니다.
-
소스 제어 보기에서 **추가 작업** (...) > **가져오기 (리베이스)** 선택
-
VS Code가 원격 커밋을 먼저 적용한 다음 로컬 커밋을 위에 다시 적용합니다.
리베이스는 병합 커밋 없이 선형 기록을 생성합니다. Git 리베이스에 대해 자세히 알아보세요.
변경 사항 동기화
동기화는 풀 및 푸시 작업을 결합합니다. 먼저 원격에서 변경 사항을 가져온 다음 로컬 커밋을 푸시합니다. 이것이 작업을 동기화된 상태로 유지하는 권장 방법입니다.
변경 사항을 동기화하려면
- 소스 제어 보기에서 **변경 사항 동기화** 선택
- 상태 표시줄의 동기화 아이콘 선택

상태 표시줄의 동기화 표시기는 푸시할 커밋(↑)과 가져올 커밋(↓) 수를 보여줍니다. 예를 들어, ↑2 ↓1은 푸시할 커밋 2개와 가져올 커밋 1개가 있음을 의미합니다.
git.confirmSync 설정을 구성하여 VS Code가 동기화 전에 확인을 요청할지 여부를 제어합니다.
커밋 가져오기
가져오기는 원격 리포지토리에서 커밋을 다운로드하고 로컬 브랜치에 병합하지 않습니다. 이를 통해 통합하기 전에 들어오는 변경 사항을 검토할 수 있습니다.
커밋을 가져오려면
- 소스 제어 보기에서 **추가 작업** (...) > **가져오기** 선택
- **모든 원격 저장소에서 가져오기**를 선택하여 구성된 모든 원격 저장소에서 가져옵니다.
- **가져오기 (가지치기)**를 선택하여 삭제된 원격 브랜치를 가져오고 제거합니다 (항상 가지치기하려면
git.pruneOnFetch설정을 활성화하세요).
가져온 후 소스 제어 그래프에서 들어오는 커밋을 **가져오기**로 병합하기 전에 검토할 수 있습니다.
커밋을 백그라운드에서 자동으로 가져오려면 git.autofetch 설정을 활성화하세요 (기본값 비활성화). 가져오기 간격을 구성하려면 git.autofetchPeriod 설정을 사용하세요 (기본값 180초).
상태 표시줄 동기화 작업
상태 표시줄은 소스 제어 보기를 열지 않고도 일반적인 리포지토리 및 원격 저장소 작업에 빠르게 액세스할 수 있도록 합니다.
브랜치 표시기
왼쪽 하단의 브랜치 표시기는 다음을 보여줍니다.
- 현재 브랜치 이름: 선택하여 브랜치 전환
- 동기화 상태: 푸시할 커밋(↑) 및 가져올 커밋(↓) 수
- 게시 상태: 게시되지 않은 브랜치의 경우 **브랜치 게시** 표시

상태 표시줄의 동기화 아이콘(회전하는 화살표)을 사용하면 원격 저장소와 변경 사항을 동기화(푸시 및 가져오기)할 수 있습니다.
다음 설정을 사용하여 상태 표시줄 동작을 사용자 지정할 수 있습니다.
- git.showActionButton: 표시할 작업 버튼 (동기화 또는 커밋) 제어
- git.showPushSuccessNotification: 성공적인 푸시 후 알림 표시
- git.showCommitInput: 소스 제어 보기에서 커밋 입력 표시
소스 제어 그래프
소스 제어 그래프는 커밋 기록, 브랜치 관계 및 원격 저장소와의 동기화 상태를 시각적으로 표현합니다. 이를 통해 들어오고 나가는 변경 사항을 쉽게 이해할 수 있습니다.

그래프는 다음을 표시합니다.
- 현재 브랜치: 특별한 표시기로 강조 표시
- 업스트림 브랜치: 아직 가져오지 않은 원격 저장소의 커밋 표시
- 들어오는 커밋(↓): 가져올 수 있는 원격 저장소의 커밋
- 나가는 커밋(↑): 푸시할 수 있는 로컬 커밋
- 다른 브랜치: 리포지토리의 로컬 및 원격 브랜치
그래프 도구 모음에서 직접 가져오기, 푸시 및 풀을 수행할 수 있습니다. 그래프 보기는 들어오고 나가는 변경 사항도 표시하므로 동기화가 필요한 시기를 쉽게 확인할 수 있습니다. 그래프의 항목을 선택하면 해당 커밋에서 변경된 개별 파일을 볼 수 있습니다.
다음 설정을 사용하여 소스 제어 그래프를 사용자 지정할 수 있습니다.
- scm.graph.showIncomingChanges: 들어오는 커밋 표시 또는 숨기기
- scm.graph.showOutgoingChanges: 나가는 커밋 표시 또는 숨기기
- git.graph.pageSize: 처음에 로드할 커밋 수
소스 제어 그래프를 사용하여 커밋 기록 보기에 대해 자세히 알아보세요.
리포지토리 작업
리포지토리 보기에서는 단일 워크스페이스에서 여러 Git 리포지토리를 관리할 수 있습니다. 여러 리포지토리에 걸친 프로젝트 작업을 할 때 유용합니다. 리포지토리 보기에는 리포지토리에 연결된 Git 워크트리도 표시됩니다.

리포지토리 보기를 표시하려면 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **소스 제어: 리포지토리 보기로 초점 이동** 명령을 실행합니다. scm.alwaysShowRepositories 설정을 구성하여 소스 제어 보기에서 항상 리포지토리 보기를 표시합니다.
각 리포지토리에서 활성 브랜치, 동기화 상태를 볼 수 있으며 가져오기, 푸시 등의 작업에 액세스할 수 있습니다.
VS Code는 리포지토리를 포함하는 폴더를 열 때 Git 리포지토리를 자동으로 감지합니다. 여러 리포지토리(예: 모노레포)가 있는 폴더를 연 경우 모든 리포지토리가 리포지토리 보기에 나타납니다.
리포지토리 선택 모드
한 번에 단일 리포지토리 또는 워크트리에 집중하려면 단일 리포지토리 모드로 전환할 수 있습니다. 해당 모드에서는 선택한 리포지토리의 변경 사항 및 그래프만 볼 수 있습니다. 다중 리포지토리 모드에서 작동하는 경우 소스 제어 보기는 모든 리포지토리의 변경 사항을 표시합니다. scm.repositories.selectionMode 설정을 사용하여 다중 리포지토리 모드와 단일 리포지토리 모드 간에 전환합니다.
자격 증명 도우미
자격 증명 도우미는 인증 자격 증명을 안전하게 저장하여 푸시 또는 풀할 때마다 입력할 필요가 없습니다. VS Code가 원격 리포지토리와 상호 작용할 때마다 자격 증명을 묻는 메시지가 표시되지 않도록 자격 증명 도우미를 설정해야 합니다.
다음 단계
- 브랜치 및 워크트리 - 브랜치 관리 및 병렬 개발에 대해 알아보기
- 스테이징 및 커밋 - 커밋 워크플로 마스터하기
- 병합 충돌 - 브랜치를 병합할 때 충돌을 처리합니다.
- GitHub 작업 - 풀 요청 및 GitHub 통합에 대해 알아보기