.NET Tools
Essential productivity kit for .NET and game developers
Rider의 GitHub 필수 기능
목차
GitHub는 Git 버전 관리 시스템용 온라인 호스팅 서비스입니다. GitHub는 Git의 기능 및 소셜 코딩 기능 등의 자체 기능을 다양하게 제공합니다. 이 블로그 게시물에서는 Rider에서 GitHub 사용 시 필수 기능을 살펴보겠습니다.
GitHub 소개
우선 Git 및 GitHub의 차이점을 이해하는 것이 중요합니다. Git은 소스 코드 관리 시스템인 반면 GitHub는 Git 저장소용 호스팅 플랫폼입니다. 즉, Git은 버전 관리 시스템(VCS)의 시스템으로 로컬에서 실행합니다. 그리고 Git 명령어를 사용하여 소스가 관리된 코드를 GitHub 호스팅 서비스에 동기화할 수 있습니다. 다행히 Rider에서는 GitHub와 통합된 친숙한 UX를 제공하며, 사용자를 대신하여 Git 명령어를 실행합니다.
GitHub는 호스팅 플랫폼이므로 회사는 자체 프라이빗 서버에 GitHub Enterprise를 도입하여 호스팅할 수 있습니다. Rider에서도 GitHub Enterprise가 지원됩니다.
Rider에서 GitHub 계정으로 로그인
GitHub를 사용하기 전 GitHub 계정과 Rider를 먼저 연결해야 합니다. Rider의 Settings(설정)에서 Version Control(버전 관리) | GitHub로 이동하여 GitHub 계정 로그인 정보를 입력하세요. Rider에서 GitHub 계정으로 로그인하여 코드를 게시하고 가져올 수 있습니다.
GitHub의 이메일/비밀번호 또는 GitHub 토큰을 사용하여 등록할 수 있습니다. 회사에서 GitHub Enterprise를 사용하는 경우 관리자를 통해 서버 이름 및 토큰을 전달받아 해당 정보를 입력해야 합니다.
저장소 생성 및 공유
멋진 프로젝트를 시작하여 GitHub를 통해 팀에 공유할 준비가 되었다면 Git 메뉴에서 GitHub | Share Project on GitHub(GitHub에서 프로젝트 공유)를 선택합니다(Git 메뉴가 없는 경우 이후 참고 사항을 확인하세요). 필수 입력란인 Repository Name(저장소 이름) 및 Remote(원격) 필드를 채웁니다. 이름은 GitHub의 프로젝트 이름과 동일해야 합니다. remote는 코드가 저장된 GitHub 저장소의 별칭입니다. 디폴트 값은 origin이지만 변경할 수 있습니다. 원하는 경우 Description(설명)을 추가하고 Private(프라이빗)으로 지정합니다. 다음으로 Share(공유)를 선택합니다.
빈 저장소가 생성되었으므로 Rider에서 최초 커밋을 위해 Commit(커밋) 대화상자를 사용하여 프로젝트의 코드를 추가하라는 메시지가 즉시 표시됩니다. 변경 사항을 커밋해 보세요. 이렇게 하면 GitHub에도 코드가 푸시됩니다.
참고 사항: 로그인하지 않은 상태에서 GitHub 계정을 Rider에 등록하려는 경우 VCS | Share Project on GitHub(GitHub에서 프로젝트 공유) 메뉴 옵션을 사용하면 로그인 요청 메시지가 표시됩니다. 앞서 언급된 Rider의 설정을 통한 계정 연결과 동일한 프로세스입니다. 등록 후 VCS 메뉴가 Git 메뉴로 변경됩니다.
이제 GitHub의 작업을 편리하게 살펴볼 수 있습니다. Git | GitHub | Open on GitHub(GitHub에서 열기)를 선택하면 Rider가 디폴트 웹 브라우저를 열어 프로젝트의 저장소를 표시합니다. 매우 편리하죠!
저장소 포크
본인의 코드를 공유해도, 포크는 내 GitHub 저장소로 포크(복사)한 다른 사용자 저장소의 스냅샷입니다. 코드가 포크되면 풀 리퀘스트를 생성할 수 있습니다. 풀 리퀘스트는 로컬 저장소와 온라인 저장소 사이가 아닌, 온라인으로 2개의 GitHub 저장소 사이에서 작동하기 때문입니다. 저장소에 직접 커밋하고 푸시할 수 있도록 허용하는 사용자도 있지만, 오픈소스 소프트웨어를 사용한 대부분의 VCS 작업은 풀 리퀘스트를 통해 수행됩니다.
포크는 GitHub UI를 활용하여 완전히 온라인으로 수행해야 하는 작업입니다. 저장소 포크를 수행하려면 해당 저장소를 방문하여 페이지 오른쪽 상단의 Fork(포크) 버튼을 클릭하세요. 저장소를 포크할 위치를 묻는 팝업 창이 표시됩니다. 포크할 GitHub 계정을 선택하면 Github에서 모든 코드를 복사합니다. 이제 포크된 코드 베이스에 직접 개선 사항을 추가하여 자신의 코드 베이스로 개발할 수 있습니다. 또는 풀 리퀘스트를 생성하여 방금 포크한 저장소에 기여할 수도 있습니다.
저장소를 복제하여 코드 가져오기
GitHub에서 호스팅되는 기존 저장소를 최초로 사용할 경우 복제해야 합니다. 복제할 저장소는 다른 사용자의 저장소인 경우가 많지만, 새 시스템이나 새로 설치된 OS에서 액세스하는 경우 본인 저장소 중 하나일 수도 있습니다. GitHub에서 코드를 복제하면 저장소가 로컬에 복사되며, GitHub에서 호스팅되는 원격 저장소로 연결됩니다.
Rider를 열고 시작 화면 오른쪽 상단의 Get from VCS(VCS에서 가져오기) 버튼을 클릭하면 저장소 복제 옵션이 제공됩니다. 시작 화면을 보기 전 Rider 멋진 스플래시 화면을 감상해 보세요.
GitHub 저장소를 복제하려면 저장소 URL이 필요합니다. 저장소 URL은 .git 확장자로 끝나며, GitHub 웹사이트의 각 저장소에서 확인할 수 있습니다. 각 저장소에는 브랜치별로 고유한 URL이 있으며, 일반적으로 디폴트 URL은 main이라는 기본 브랜치를 참조합니다.
Rider는 다음과 같이 저장소 복제를 위한 몇 가지 옵션을 제공합니다.
- URL 필드에 URL 입력.
- 저장소를 탐색하고 1개 선택.
- 회사의 엔터프라이즈 저장소를 탐색하고 1개 선택.
대화상자에 표시된 로컬 디렉터리가 복제할 디렉터리인지 확인합니다.
Git은 Clone(복제) 대화상자에 입력한 로컬 위치로 전체 저장소를 가져와 이름이 origin인 원격 저장소를 설정합니다. 이제 코딩과 협업을 시작해 보세요!
GitHub의 프로젝트를 열고 싶지만 이미 Rider가 열려 있는 경우 Git | Clone(복제) 메뉴 옵션을 선택하면 동일한 Clone 대화상자가 표시됩니다.
커밋 및 풀 리퀘스트
코드 변경 시 커밋도 수행해야 합니다. 코드 커밋이란 지난 커밋 후 변경된 사항의 스냅샷을 저장한다는 의미입니다. 커밋은 Git에서 보이지 않게 이루어지는 추적 기능의 일부이므로 스냅샷 변경 사항을 검토하거나 특정 스냅샷으로 빠르게 되돌릴 수 있습니다. 커밋은 GitHub 저장소로 푸시될 때까지 로컬에서 추적됩니다.
Rider는 코드의 변경 사항과 차이점을 검토하고 커밋할 변경 사항을 선택하거나, 롤백 또는 코드 커밋을 수행할 수 있는 Commit(커밋) 창을 제공합니다. 해당 창에는 변경 목록 관리 등의 추가 옵션이 있습니다.
Ctrl+Alt+K 키보드 단축키를 사용해 Commit 창을 표시하고, 메뉴에서 Git | Commit(커밋)을 선택해 로컬에서 커밋하거나 Commit and Push(커밋 및 푸시)를 사용하여 변경 사항을 GitHub으로 전송합니다. 로컬에서 커밋할 경우 이후 Git | Push(푸시) 옵션을 사용하여 GitHub의 원격 서버에 변경 사항을 업로드할 수 있습니다. GitHub에서 저장소를 포크한 경우 해당 포크에만 변경 사항이 적용됩니다. 원본 저장소에 코드를 병합하려면 풀 리퀘스트를 생성해야 합니다.
코드 커밋 및 푸시가 완료되면 풀 리퀘스트를 생성할 수 있습니다. 하지만 포크 동기화를 먼저 수행해야 합니다. 이렇게 하려면 메뉴에서 Git | GitHub | Sync Fork(포크 동기화)를 선택하세요. 포크 및 원본 소스가 최신 상태로 유지되며, 마지막 업데이트 이후 포크에 적용된 모든 변경 사항이 통합됩니다. 모두 최신 상태일 수 있도록 새로운 기능을 개발하기 전에도 동기화하는 것이 좋습니다. 이후 Git | GitHub | Create Pull Request(풀 리퀘스트 생성) 옵션으로 풀 리퀘스트를 시작합니다. Pull Requests(풀 리퀘스트) 창에서 제목과 설명을 입력하고 병합 옵션을 선택하세요.
언제든 Git | GitHub 메뉴의 View Pull Requests(풀 리퀘스트 보기) 옵션을 선택하여 저장소의 모든 풀 리퀘스트 목록을 확인할 수 있습니다. 풀 리퀘스트를 클릭하면 세부 정보가 표시됩니다.
코드 병합
여러 개발자가 동일한 코드 베이스에서 동시에 작업하는 경우가 많습니다. 그리고 어느 정도 작업을 하면, 변경 사항을 GitHub에서 호스팅되는 중앙 코드 베이스에 통합해야 합니다. 이를 병합(및 리베이스)이라고 하며, 여러 개발자의 수정 사항을 브랜치라는 대상 위치에 통합하는 작업입니다. 브랜치는 개발의 연장선입니다. 저장소별로 메인 브랜치 1개가 있으며, 대부분의 저장소에는 추가 브랜치가 있습니다. 추가 브랜치는 개발자가 새로운 기능 개발이나 버그 수정 등의 특정 작업을 수행하는 데 사용됩니다.
사용자가 풀 리퀘스트를 생성하면 Rider는 병합 여부를 묻고, Merge(병합), Rebase and Merge(리베이스 및 병합), Squash and Merge(스쿼시 및 병합)와 같이 다양한 병합 옵션을 제공합니다.
리베이스는 일반적인 코드 병합의 대안적 옵션입니다. 병합은 브랜치 2개의 기록을 병합하지만 리베이스는 작업 중인 브랜치의 커밋을 대상 브랜치(일반적으로 main)로 통합합니다. 즉, 커밋 기록이 새롭게 작성됩니다. 각 방식의 장단점이 있으므로 커밋 기록의 관리 방법은 팀에서 결정해야 합니다. 병합 중 여러 커밋을 단일 커밋으로 스쿼시할 수 있습니다. 짐작하셨다시피 모든 것이 압축되므로 커밋 기록도 새롭게 작성됩니다. Rider는 뛰어난 UX를 제공하므로 명령어로 커밋을 관리할 수 있습니다.
결론
GitHub의 기초를 익히면 Git을 활용하여 소스 코드를 관리하는 데 유용합니다. 코드 풀 및 푸시 작업 또는 브랜치와 같은 기본적인 Git 개념을 학습하여 GitHub를 활용해 보세요. Rider의 UX는 GitHub 및 Git을 통해 원활하게 소스 코드를 관리할 수 있도록 설계되었습니다. Rider를 다운로드하여 직접 사용해 보세요.
게시물 원문 작성자