Visual Studio에서 Git을 사용하여 버전 제어를 간편하게 하는 방법

이전에 작업하던 코드 버전으로 돌아가고 싶다고 생각한 적이 있나요? 코드 복사본을 백업으로 다른 위치에 수동으로 저장한 적이 있나요? 버전 제어가 해답입니다.

Git은 가장 널리 사용되는 최신 버전 제어 시스템입니다. Git을 사용하면 시간이 지남에 따라 변경한 코드를 추적할 수 있으며 특정 버전으로 되돌릴 수 있습니다. 따라서 전문 개발자이든 코딩 방법을 배우고 있든 Visual Studio의 Git 환경은 매우 유용할 수 있습니다.

Visual Studio에서 Git 및 GitHub를 사용하는 방법을 알아보려면 Git 학습 시리즈에 등록합니다.

Visual Studio에서 Git 및 GitHub로 시작&

Git을 사용하면 Visual Studio의 버전을 간편하게 제어할 수 있습니다. 여러분이 있는 곳에서 우리는 여러분을 만납니다. GitHub 또는 Azure DevOps와 같이 선택한 Git 공급자를 사용하여 원격으로 작업할 수 있습니다. 또는 공급자 없이 로컬로 작업할 수 있습니다.

Visual Studio에서 Git 사용을 시작하려면 다음을 수행합니다.

  • GitHub와 같은 Git 공급자에서 호스트되는 Git 리포지토리가 있는 경우 로컬 머신에 리포지토리를 복제합니다.

  • 아니면 간편하게 새 Git 리포지토리를 만들고 코드를 추가할 수 있습니다. 아직 Git 공급자가 없는 경우 GitHub로 시작하는 것이 좋습니다. Visual Studio의 Git 환경이 이 공급자에 최적화되어 있기 때문입니다. GitHub는 코드를 저장하고 디바이스와 관계없이 어디서나 액세스할 수 있는 안전한 클라우드 코드 스토리지를 별도의 비용 없이 제공합니다.

키 집합에 GitHub 계정과 GitHub Enterprise 계정을 모두 추가할 수 있을 뿐 아니라 Microsoft 계정을 사용하는 것처럼 해당 계정을 활용할 수도 있습니다. GitHub 계정이 없는 경우 지금 다음 단계에 따라 Visual Studio에서 사용할 GitHub 계정을 만드세요.

Git을 처음 사용하는 경우 https://git-scm.com/ 웹 사이트를 먼저 참조하는 것이 좋습니다.

Screenshot of the Create a Git Repository dialog box in Visual Studio.

솔루션 탐색기에서 파일 보기

리포지토리를 복제하거나 로컬 리포지토리를 열면 Visual Studio가 Git 컨텍스트로 전환됩니다. 솔루션 탐색기는 Git 리포지토리 루트에 폴더를 로드하고 디렉터리 트리에서 볼 수 있는 파일(예: CMakeLists.txt 또는 파일 확장명이 .sln인 파일)을 검색합니다. 자세한 내용은 솔루션 탐색기에서 파일 보기를 참조하세요.

직관적인 내부 루프 워크플로

일상적인 Git 워크플로의 경우 Visual Studio를 사용하면 코드에서 전환하지 않고도 코딩하는 동안 Git과 원활하게 상호 작용할 수 있습니다.

분기를 통해 코드를 멀티태스킹하고 실험할 수 있습니다. 동시에 여러 기능에 대해 작업하거나 작업 코드에 영향을 주지 않고 아이디어를 탐색하려는 경우 분기가 매우 유용합니다. 권장되는 Git 워크플로는 작업 중인 모든 기능 또는 수정에 대해 새 분기를 사용합니다. Visual Studio에서 분기를 만드는 방법을 알아봅니다.

새 분기를 만들고 전환하면 기존 파일을 변경하거나 새 파일을 추가한 다음 리포지토리에 작업을 커밋하여 작업을 시작할 수 있습니다. Visual Studio에서의 커밋 수행에 대해 자세히 알아보고 Git의 파일 상태를 더 잘 이해하려면 커밋 만들기 페이지를 참조하세요.

Git은 분산 버전 제어 시스템입니다. 즉, 지금까지 변경된 모든 내용은 로컬에서만 변경됩니다. 이러한 변경 내용을 원격 리포지토리에 적용하려면 해당 로컬 커밋을 원격으로 푸시해야 합니다.

팀에서 작업하거나 다른 머신을 사용하는 경우 원격 리포지토리에서 새 변경 내용을 지속적으로 페치하고 끌어와야 합니다. Visual Studio에서 Git 네트워크 작업을 관리하는 방법에 대한 자세한 내용은 페치, 끌어오기, 푸시, 동기화 페이지를 참조하세요.

The Visual Studio IDE with the Git menu and the Git Changes tab in Solution Explorer showing.

리포지토리 관리 및 협업&

그러나 Git 리포지토리에 집중하는 것이 더 적합한 경우가 있습니다. 예를 들어 팀이 어떤 작업을 하고 있는지 잘 파악하거나 다른 분기에서 커밋을 복사하거나 나가는 커밋을 정리해야 할 수 있습니다. Visual Studio에는 강력한 리포지토리 검색 및 협업 기능이 포함되어 다른 도구를 사용할 필요가 없습니다.

Git 리포지토리에 집중할 수 있도록 Visual Studio에는 로컬 및 원격 분기와 커밋 기록을 포함하여 리포지토리의 모든 세부 정보를 통합적으로 볼 수 있는 Git 리포지토리 창이 있습니다. 메뉴 모음 또는 상태 표시줄의 Git 또는 보기에서 직접 해당 창에 액세스할 수 있습니다.

The Visual Studio IDE that highlights the Git menu and the Git Changes tab in Solution Explorer.

Git 리포지토리 찾아보기 및 관리

Visual Studio에서 Git 리포지토리 창을 사용하여 Git 리포지토리를 찾아보고 관리하는 방법에 대한 자세한 내용은 다음 페이지를 참조하세요.

병합 충돌 처리

두 명의 개발자가 파일에서 동일한 줄을 수정하고 Git이 어떤 것이 올바른지 자동으로 알 수 없는 경우 병합 중에 충돌이 발생할 수 있습니다. Git은 병합을 중지하고 충돌 상태에 있음을 알려 줍니다. 병합 충돌 해결 페이지에서 자세히 알아보세요.

Git 설정 개인 설정

리포지토리 수준과 전역 수준에서 Git 설정을 개인 설정하려면 다음을 수행합니다.

  1. 메뉴 모음 또는 도구>옵션>소스 제어>Git 전역 설정에서 Git>설정으로 이동합니다.

  2. 원하는 옵션을 선택합니다.

    Screenshot of the Options dialog box where you can choose personalization and customization settings in Visual Studio IDE.

&성능 및 생산성 향상

Visual Studio 내의 통합 Git 도구와 관련하여 성능 및 생산성 향상을 계속 반복합니다. 몇 가지 주목할 만한 업데이트는 다음과 같습니다.

  • 커밋 그래프 Visual Studio 2022 버전 17.2에서는 Git 리포지토리 또는 분기 기록을 볼 때 발생할 수 있는 지연을 줄이는 데 도움이 되는 커밋 그래프 기능을 도입했습니다. 자세한 내용은 Git 환경 수퍼 충전 블로그 게시물을 참조하세요 .

  • 분기 전환 또한 Visual Studio 2022 버전 17.2에서는 솔루션 다시 로드가 필요한 분기 스위치의 수를 80%로 줄입니다. 자세한 내용은 성능 향상: Git 분기 전환 블로그 게시물을 참조하세요.

Visual Studio 2022 버전 17.6에는 GitHub 문제 및 Azure DevOps 작업 항목을 검색하고 연결하는 기능을 포함하기 위한 더 많은 기능 업데이트가 있습니다. 모든 세부 정보를 가져오려면 생산성 향상을 위한 Git 기능 블로그 게시물을 참조하세요.

이제 Git은 Visual Studio 2019의 기본 버전 제어 환경입니다. 버전 16.6부터 피드백에 따라 기능 집합을 구축하고 반복해 왔습니다. 버전 16.8에서는 모든 사용자의 기본 버전 제어 환경이 되었습니다.

참고

Visual Studio 2022에서도 Git 기능 세트를 계속 빌드하고 반복합니다. 최근 기능 업데이트에 대해 자세히 알아보려면 Multi-repo support in Visual Studio(Visual Studio에서의 다중 리포지토리 지원) 블로그 게시물을 참조하세요.

Git에 대한 자세한 정보

Git은 가장 널리 사용되는 최신 버전 제어 시스템이므로 전문 개발자와 코딩 학습자를 비롯한 모든 사용자에게 매우 유용할 수 있습니다. Git을 처음 사용하는 경우 https://git-scm.com/ 웹 사이트를 먼저 참조하는 것이 좋습니다. 여기에서 참고 자료, 인기 온라인 설명서, Git 기본 사항 비디오를 찾을 수 있습니다.

Visual Studio 2019에서 Git 시작

Visual Studio의 새로운 Git 환경을 사용하는 방법을 안내합니다. 먼저 둘러보려면 다음 비디오를 확인하세요.

비디오 길이: 5분 27초

Visual Studio에서 Git을 사용하여 생산성을 높일 수 있는 세 가지 방법이 있습니다.

  • 새 Git 리포지토리 만들기. 코드가 Git과 연결되지 않은 경우 새 Git 리포지토리를 만들어서 시작할 수 있습니다.
  • 기존 Git 리포지토리 복제. 작업하려는 코드가 머신에 없는 경우 기존 원격 리포지토리를 복제할 수 있습니다.
  • 기존 Git 리포지토리 열기. 코드가 이미 머신에 있는 경우 파일>열기>프로젝트/솔루션(또는 폴더)을 사용하여 코드를 엽니다. 그러면 Visual Studio에서 코드에 초기화된 Git 리포지토리가 있는지 자동으로 검색합니다.

참고

Visual Studio 2019 버전 16.8부터 완전히 통합된 GitHub 계정 환경을 제공합니다. 이제 키 집합에 GitHub 및 GitHub Enterprise 계정을 모두 추가할 수 있습니다. Microsoft 계정과 같은 방법으로 추가하고 활용할 수 있어 Visual Studio에서 GitHub 리소스에 더 쉽게 액세스할 수 있습니다. 자세한 내용은 Visual Studio에서 GitHub 계정 작업 페이지를 참조하세요.

GitHub 계정이 없는 경우 Visual Studio에서 사용할 GitHub 계정 만들기 페이지에서 설명된 단계를 따라 시작할 수 있습니다.

Visual Studio 2019에서 새 Git 리포지토리 만들기

코드가 Git과 연결되지 않은 경우 새 Git 리포지토리를 만들어서 시작할 수 있습니다. 이렇게 하려면 메뉴 모음에서 Git>Git 리포지토리 만들기를 선택합니다. 그런 다음, Git 리포지토리 만들기 대화 상자에서 정보를 입력합니다.

The Create a Git Repository dialog box in Visual Studio.

Git 리포지토리 만들기 대화 상자에서 새 리포지토리를 GitHub에 쉽게 푸시할 수 있습니다. 기본적으로 새 리포지토리는 프라이빗입니다. 즉, 사용자 자신만 해당 리포지토리에 액세스할 수 있습니다. 이 확인란의 선택을 취소하면 리포지토리는 퍼블릭이 됩니다. 즉, GitHub의 모든 사용자가 리포지토리를 볼 수 있습니다.

리포지토리가 퍼블릭 또는 프라이빗인지와 관계없이 팀과 함께 작업하지 않는 경우에도 코드의 원격 백업을 GitHub에 안전하게 저장하는 것이 가장 좋습니다. 이렇게 하면 사용 중인 컴퓨터가 무엇이든 해당 코드를 사용할 수 있습니다.

로컬 전용 옵션을 사용하여 로컬 전용 Git 리포지토리를 만들도록 선택할 수 있습니다. 또는 기존 원격 옵션을 사용하여 로컬 프로젝트를 Azure DevOps 또는 다른 모든 Git 공급자의 비어 있는 기존 원격 리포지토리와 연결할 수 있습니다.

Visual Studio 2019에서 기존 Git 리포지토리 복제

Visual Studio에는 간단한 복제 환경이 포함됩니다. 복제할 리포지토리의 URL을 알고 있는 경우 리포지토리 위치 섹션에 URL을 붙여넣은 다음, Visual Studio에서 복제할 디스크 위치를 선택할 수 있습니다.

The Clone a Git Repository dialog box in Visual Studio.

리포지토리 URL을 모르는 경우 Visual Studio에서 기존 GitHub 또는 Azure DevOps 리포지토리로 쉽게 이동하여 해당 리포지토리를 복제할 수 있습니다.

Visual Studio 2019에서 기존 로컬 리포지토리 열기

리포지토리를 복제하거나 만든 후 Visual Studio는 Git 리포지토리를 검색하고 Git 메뉴에서 로컬 리포지토리 목록에 해당 리포지토리를 추가합니다.

여기에서 Git 리포지토리 간에 신속하게 액세스하고 전환할 수 있습니다.

The Local Repositories option from the Git menu in Visual Studio

Visual Studio 2019의 솔루션 탐색기에서 파일 보기

리포지토리를 복제하거나 로컬 리포지토리를 열 때 Visual Studio는 이전에 열린 솔루션 및 프로젝트를 저장하고 닫아서 해당 Git 컨텍스트로 전환합니다. 솔루션 탐색기는 Git 리포지토리 루트에 폴더를 로드하고 디렉터리 트리에서 볼 수 있는 파일을 검색합니다. 여기에는 CMakeLists.txt 같은 파일이나 .sln 파일 확장명을 사용하는 파일이 포함됩니다.

Visual Studio는 솔루션 탐색기에서 로드하는 파일에 따라 보기를 조정합니다.

  • 단일 .sln 파일이 포함된 리포지토리를 복제하는 경우 솔루션 탐색기는 해당 솔루션을 직접 로드합니다.
  • 솔루션 탐색기는 리포지토리에서 .sln 파일을 검색하지 못하면 기본적으로 폴더 보기를 로드합니다.
  • 리포지토리에 둘 이상의 .sln 파일이 있는 경우 솔루션 탐색기는 선택할 수 있는 보기 목록을 표시합니다.

솔루션 탐색기 도구 모음의 보기 전환 단추를 사용하여 현재 열려 있는 보기와 보기 목록 간에 토글할 수 있습니다.

Solution Explorer with the Switch Views button selected in Visual Studio.

자세한 내용은 리포지토리에서 프로젝트 열기 자습서의 솔루션 탐색기에서 파일 보기 섹션을 참조하세요.

Visual Studio 2019의 Git 변경 내용 창

Git은 작업할 때 리포지토리에서 파일 변경 내용을 추적하고 리포지토리의 파일을 세 가지 범주로 구분합니다. 해당 변경 내용은 명령줄에 git status 명령을 입력할 때 표시되는 내용과 동일합니다.

  • 수정되지 않은 파일: 해당 파일이 마지막 커밋 이후 변경되지 않았습니다.
  • 수정된 파일: 해당 파일이 마지막 커밋 이후 변경되었지만 다음 커밋을 위해 아직 스테이징하지 않았습니다.
  • 스테이징된 파일: 해당 파일에는 다음 커밋에 추가될 변경 내용이 있습니다.

작업을 수행하는 동안 Visual Studio는 Git 변경 내용 창의 변경 내용 섹션에서 프로젝트의 파일 변경 내용을 추적합니다.

The Git Changes window in Visual Studio.

변경 내용을 스테이징할 준비가 되면 스테이징할 각 파일의 + (더하기) 단추를 클릭하거나, 파일을 마우스 오른쪽 단추로 클릭한 후 스테이지를 선택합니다. 변경 내용 섹션 위쪽에서 모두 스테이징 + (더하기) 단추를 사용하여 한 번 클릭으로 모든 수정된 파일을 스테이징할 수도 있습니다.

변경을 스테이징하는 경우 Visual Studio는 스테이징된 변경 사항 섹션을 만듭니다. 스테이징된 변경 사항 섹션의 변경 내용만 다음 커밋에 추가됩니다. 이 작업을 수행하려면 스테이징된 항목 커밋을 선택합니다. 이 동작에 해당하는 명령은 git commit -m "Your commit message"입니다. (빼기) 단추를 클릭하여 변경 내용을 스테이징 취소할 수도 있습니다. 이 동작에 해당하는 명령은 단일 파일을 스테이징 취소하는 git reset <directory_path> 또는 디렉터리에 있는 모든 파일을 스테이징 취소하는 git reset <file_path>입니다.

또한 스테이징 영역을 건너뛰어 수정된 파일을 스테이징하지 않도록 선택할 수 있습니다. 이 경우 Visual Studio를 사용하여 변경 내용을 스테이징하지 않고도 직접 커밋할 수 있습니다. 커밋 메시지를 입력한 다음, 모두 커밋을 선택합니다. 이 동작에 해당하는 명령은 git commit -a입니다.

또한 Visual Studio는 모두 커밋 및 푸시모두 커밋 및 동기화 바로 가기를 사용하여 한 번 클릭으로 쉽게 커밋하고 동기화할 수 있습니다. 변경 내용스테이징된 변경 사항 섹션에 있는 파일을 두 번 클릭하면 수정되지 않은 버전의 파일과 한 줄씩 비교를 확인할 수 있습니다.

The line-by-line comparison of file versions in Visual Studio

Azure DevOps 리포지토리에 연결된 경우 “#” 문자를 사용하여 Azure DevOps 작업 항목을 커밋에 연결할 수 있습니다. 팀 탐색기>연결 관리를 통해 Azure DevOps 리포지토리를 연결할 수 있습니다.

Visual Studio 2019에서 기존 분기 선택

Visual Studio는 Git 변경 내용 창 위쪽에 있는 선택기에 현재 분기를 표시합니다.

The current branches that you can view by using the selector at the top of the Git Changes selector in Visual Studio

현재 분기는 Visual Studio IDE의 오른쪽 아래에 있는 상태 표시줄에서도 사용할 수 있습니다.

The current branches that you can view by using the status bar at the bottom-right corner in the Visual Studio IDE

두 위치에서 모두 기존 분기 간에 전환할 수 있습니다.

Visual Studio 2019에서 새 분기 만들기

새 분기를 만들 수도 있습니다. 이 동작에 해당하는 명령은 git checkout -b <branchname>입니다.

새 분기는 간단하게 분기 이름을 입력하고 기존 분기를 기반으로 만들면 됩니다.

The Create a New Branch dialog box in Visual Studio

기존 로컬 또는 원격 분기를 기반으로 선택할 수 있습니다. 분기 체크 아웃 확인란은 새로 만든 분기로 자동으로 전환됩니다. 이 동작에 해당하는 명령은 git checkout -b <new-branch><existing-branch>입니다.

Visual Studio 2019의 Git 리포지토리 창

Visual Studio에는 모든 분기, 원격 및 커밋 기록을 포함하여 리포지토리에 있는 모든 세부 정보의 통합된 보기인 새로운 Git 리포지토리 창이 있습니다. 메뉴 모음 또는 상태 표시줄의 Git 또는 보기에서 직접 해당 창에 액세스할 수 있습니다.

Visual Studio 2019에서 분기 관리

Git 메뉴에서 분기 관리를 선택하면 Git 리포지토리 창에 분기 트리 뷰가 표시됩니다. 왼쪽 창에서 마우스 오른쪽 단추 클릭 상황에 맞는 메뉴를 사용하여 분기를 체크 아웃하고, 새 분기를 만들고, 병합, 다시 지정, cherry-pick 등을 수행할 수 있습니다. 분기를 클릭하면 오른쪽 창에서 해당 커밋 기록의 미리 보기를 볼 수 있습니다.

Visual Studio 2019의 들어오는 커밋 및 나가는 커밋

분기를 페치할 때 Git 변경 내용 창에는 원격 분기에서 풀하지 않은 커밋 수를 표시하는 분기 드롭다운 아래에 표시기가 있습니다. 해당 표시기는 푸시되지 않은 로컬 커밋 수도 보여 줍니다.

The Git Changes window that shows the indicator drop-down UI element in Visual Studio

해당 표시기는 Git 리포지토리 창에서 해당 분기의 커밋 기록으로 이동하는 링크로도 작동합니다. 이제 기록의 맨 위에 들어오는 커밋과 나가는 커밋의 세부 정보가 표시됩니다. 여기에서 커밋을 풀 또는 푸시하도록 결정할 수도 있습니다.

The Git Repository window that shows the commit history of a branch in Visual Studio

Visual Studio 2019의 커밋 세부 정보

커밋을 두 번 클릭하면 Visual Studio는 별도 도구 창에서 해당 세부 정보를 엽니다. 여기에서 커밋을 되돌리거나, 커밋을 다시 설정하거나, 커밋 메시지를 수정하거나, 커밋에 태그를 만들 수 있습니다. 커밋에서 변경된 파일을 클릭하면 Visual Studio는 커밋 및 해당 부모의 Diff 뷰를 나란히 엽니다.

The Commit Details dialog box in Visual Studio

Visual Studio 2019에서 병합 충돌 해결

두 명의 개발자가 파일에서 같은 줄을 수정하는데 Git이 어떤 것이 올바른지 자동으로 알 수 없는 경우 병합 중에 충돌이 발생할 수 있습니다. Git은 병합을 중지하고 충돌 상태에 있음을 알려 줍니다.

Visual Studio를 사용하면 병합 충돌을 쉽게 파악하고 해결할 수 있습니다. 먼저 Git 리포지토리 창의 위쪽에는 금색 정보 표시줄이 표시됩니다.

The 'Merge completed with conflicts' message in Visual Studio

Git 변경 내용 창에는 ‘병합이 진행 중이지만 충돌 발생’ 메시지와 그 아래 별도 섹션에 병합되지 않은 파일이 표시됩니다.

The 'Merge in progress with conflicts' message in Visual Studio

그러나 두 창이 모두 열려 있지 않고 병합 충돌이 있는 파일로 이동하는 경우에는 다음 텍스트를 검색할 필요가 없습니다.

    <<<<<<< HEAD
    =======
    >>>>>>> main

대신, Visual Studio는 열린 파일에 충돌이 있음을 나타내는 금색 정보 표시줄을 페이지 위쪽에 표시합니다. 그런 다음, 링크를 클릭하여 병합 편집기를 열 수 있습니다.

Screenshot of 'File contains merge conflicts' message in Visual Studio

Visual Studio 2019의 병합 편집기

Visual Studio의 병합 편집기는 들어오는 변경 내용, 현재 변경 내용 및 병합 결과를 표시하는 3방향 병합 도구입니다. 병합 편집기의 맨 위에 있는 도구 모음을 사용하여 파일에서 충돌 및 자동 병합된 차이 간에 이동할 수 있습니다.

The Merge Editor in Visual Studio

또한 토글을 사용하여 차이를 표시하거나 숨기고, 단어 차이를 표시하거나 숨기고, 레이아웃을 사용자 지정할 수 있습니다. 각 측면의 위쪽에는 한쪽 또는 다른 쪽의 모든 변경 내용을 가져오는 데 사용할 수 있는 확인란이 있습니다. 하지만 개별 변경 내용을 가져오려면 양쪽에서 충돌하는 줄의 왼쪽에 있는 확인란을 클릭하면 됩니다. 마지막으로, 충돌 해결을 완료하면 병합 편집기에서 병합 수락 단추를 선택할 수 있습니다. 그런 다음, 커밋 메시지를 작성하고 변경 내용을 커밋하여 해결을 완료합니다.

Visual Studio 2019에서 Git 설정 개인 설정

전역 수준뿐만 아니라 리포지토리 수준에서 Git 설정을 개인 설정하고 사용자 지정하려면 메뉴 모음에서 Git>설정으로 이동하거나 메뉴 모음에서 도구>옵션>소스 제어로 이동합니다. 그런 다음, 원하는 옵션을 선택합니다.

The Options dialog box where you can choose personalization and customization settings in Visual Studio IDE.

Visual Studio 2019에서 전체 팀 탐색기 환경을 사용하는 방법

새 Git 환경은 버전 16.8부터 Visual Studio 2019의 기본 버전 제어 시스템입니다. 그러나 이 기능을 해제하려는 경우 해제할 수 있습니다. 도구>옵션>환경>미리 보기 기능으로 이동한 다음, 새 Git 사용자 환경 확인란을 토글합니다. 그러면 Git용 팀 탐색기 환경으로 다시 전환됩니다.

The Preview Features section of the Options dialog box in Visual Studio