PMPV

Github Desktop과 Fork를 이용한 깃 협업 플로우 - (3) 본문

development/Fxxk Git

Github Desktop과 Fork를 이용한 깃 협업 플로우 - (3)

playinys 2018. 8. 12. 01:06
반응형

7. Github Desktop

지금까지 git commit, push, remote repozit, origin & upstream 등의 루틴을 알아보았습니다.

개인적으로 깃의 러닝커브를 높이는 요인은 두 가지라고 생각합니다.


1. 가시성이 떨어집니다. add와 commit의 과정은 어떤 변경 내역이 어떻게 기록되는지 보기가 어렵습니다. push의 경우 깃허브 저장소에 올라가기 때문에 변경 내역을 직접 볼 수 있지만 commit log와 같은 내용은 커맨드라인에서 하나하나 확인하기가 힘듭니다. 심지어 협업의 경우, fetch, pull, merge 등은 복수의 저장소를 넘나드는 명령어이기 때문에 구조를 상상하는걸 방해한다고 할까요? 내가 어떤 작업을 하고 있는지 직관적으로 이해하기가 힘듭니다.


2. 커맨드라인에서 작업에 익숙하지 않습니다. 프로그래밍에 익숙한 경우 해당이 안되는 얘기일 수 있지만 제 경우는 개발 자체의 레벨이 병아리 수준인데 리눅스/유닉스 기반의 작업이 낯설었습니다. CLI 환경에서 타이핑을 하는 것 자체가 피로를 가중시킵니다.


이런 어려움을 위한 툴로 소스트리 같은 프로그램이 있습니다. 제가 사용하는 툴은 Github Desktop 입니다. 깃 플로우 과정을 가시적으로 보여주고 커맨드라인 명령어가 아닌 GUI 툴 위에서 작업하기 때문에 직관적으로 이해하기 쉽습니다. 다운로드 링크를 아래에 첨부합니다. 구글 검색하면 바로 나오긴 합니다.


https://desktop.github.com/


링크로 접속해서 설치를 진행해주세요. 맥과 윈도우 양쪽을 다 지원합니다.


설치가 완료되고 깃허브 데스크탑을 실행합니다. 우리는 협업에 관해 공부하고 있었으니 지난 포스팅에서 다룬 포크는 이미 진행되었다고 생각하겠습니다.

포크 다음 과정은 클론입니다. 클론부터 툴을 활용해 진행해보겠습니다.


file 탭 안에 클론 레포지토리가 있습니다. add local repository는 로컬에 있는 프로젝트를 앱으로 가져올 때 쓰입니다. 클론을 해줍시다.

깃허브에서 포크된 프로젝트를 깃헙 데탑을 사용해 클론을 할 때는 origin/upstream이 알아서 설정 됩니다. 터미널에서 작업할 때랑은 다르게 따로 remote add upstream 설정을 해줄 필요가 없습니다.


그럼 upstream 저장소 설정을 건너뛰었으니 바로 로컬에서 프로젝트를 열고 작업 내용을 반영하면 됩니다. 어떻게 해야할까요? 프로젝트를 아톰에서 열고 파일 하나를 추가하고 저장하겠습니다.


왼쪽에 초록색으로 표시되는 testGit 파일이 제가 추가한 작업 내역입니다. 이제 이 내용을 커밋을 해줘야 합니다.

이번에는 터미널이 아닌 깃헙 데탑 앱을 확인하겠습니다.


Changes 탭을 보시면 하나의 변경 내역이 있다고 뜹니다.

그 밑에 어떤 파일에서 변경이 있었는지 보여주고 오른쪽에서는 그 파일의 변경 내역을 알려줍니다.

내가 어디서 어떤 변경을 했는지 확인하고 변경 내역에 이상이 없는지 확인할 수 있습니다. 두 개 이상의 변경 내역이 있다면 체크박스를 이용해 원하는 항목만 커밋을 할 수 있습니다. 혹시 의도하지 않은, 잘못된 변경 내역이 있었다면 파일에서 마우스 우클릭을 하면 Discard Changes라는 선택지가 있습니다. 해당 변경 내역을 아예 없던 일로 되돌릴 수 있습니다. 디스카드를 진행하면 아톰에서도 변경 전으로 돌아가게 됩니다.


변경 내역에 문제가 없다면, 커밋을 진행합니다. 다시 한 번 앱을 확인하겠습니다.



왼쪽 하단에서 커밋 메세지를 작성할 수 있습니다. 상단에 Summary에는 커맨드라인에서 깃 커밋을 진행할 때 git commit -m "<메세지 타이틀>" 이 부분에 해당하는 메세지입니다. 아래 Descroption에는 해당 메세지의 세부적인 설명을 첨부할 수 있습니다. 저 부분을 작성하면 커밋 버튼이 활성화됩니다.


버튼이 활성화되었으니 눌러서 커밋을 진행해주겠습니다. 커밋이 완료되면 Chaneges 탭은 비워지고 방금 했던 커밋이 History 탭 안으로 들어가게 됩니다. 다음엔 푸시를 할 차례입니다. 어떻게 진행될까요?


상단에 Push origin 버튼이 등장합니다. 우리가 원격 저장소로 설정한 origin에 푸시를 진행할 수 있다는 내용입니다. 저 버튼을 눌러보겠습니다.


잠시 기다리면 Pushing to origin.. 메세지가 나오며 푸시가 진행되는 중이라고 알립니다. 푸시가 끝나면 다시 Fetch origin으로 변경됩니다.

이 상황에서 깃허브 저장소를 확인하시면 푸시가 잘 된 것을 볼 수 있습니다. 변경 내역이 반영됩니다.


이제 풀리퀘스트를 날려줘야겠죠? 앱에서 맥 기준 command + R, 윈도우는 control + R을 눌러줍니다. 단축키가 작동하지 않는다면 상단의 탭을 봐주세요. Branch 탭 안에 Create Pull Request가 있습니다. 그걸 선택해주세요.


깃허브 upstream 저장소에서 풀리퀘스트를 요청하는 화면이 뜹니다. 여기서부터는 지난 포스팅과 마찬가지로 풀리퀘스트 요청을 진행해주시면 되겠습니다.


비교적 직관적으로 작업 내역을 반영하는 방법에 대해 알아봤습니다. 그럼 작업 내역을 가져오는건 어떻게 할까요?

upstream 저장소에 새로운 커밋 내역이 있을 때를 확인해보겠습니다.


upstream 저장소에 나의 커밋이 병합된 모습입니다. 빨간 박스에서 확인하실 수 있습니다.

그 이후, 새로운 커밋이 추가되었습니다. 위에 있는 변경 내역을 어떻게 가져올 수 있을까요? 지난번과 마찬가지로 pull, fetch, merge의 선택지가 있습니다. 앱에서 확인 해보겠습니다.


히스토리에는 내 마지막 커밋 내용까지만 반영되어있습니다. 상단에 fetch origin 버튼을 눌러보겠습니다.



그 다음, 상단에서 Branch 탭 안에 Merge Into Current Branch를 선택합니다.


여기에서 upstream/master를 선택합니다. 그럼 아래의 Merge into master 버튼이 활성화 되는걸 보실 수 있겠습니다. 버튼을 눌러서 머지를 완료해줍니다.


히스토리 안에 깃허브에서 봤던 변경 내역이 로컬까지 잘 가져와진걸 볼 수 있습니다.

로컬의 에디터, 아톰 등에서도 변경 내역이 반영된 것을 확인할 수 있습니다.


여기까지가 포크와 깃허브 데스크탑을 이용한 협업의 루틴입니다. 커맨드라인 명령어에 비해 지원되지 않는 기능이 있는 점 등의 한계는 있지만 자주 사용하는 기능의 편의성은 툴이 압도적이라고 생각합니다. 이 루틴을 이해하고 반복하시다보면 협업 플로우를 능숙하게 진행하실 수 있게 될거라 생각합니다.


다음 포스팅에서는 conflict 해결법, branch 관리 등을 다룰 예정입니다. 틀린 부분이 있다거나 설명이 부족한 부분은 언제나 댓글로 달아주세요!

반응형
Comments