이 게시물은 ‘GitHub Protips: Tips, tricks, hacks, and secrets from Alyson La’을 번역/정리한 게시물이다. 번역 전문가도 아니고 많은 의역/직역있으니… 모호한 내용은 원본 게시물을 참고바람. 😉


Tip 1: GUI vs CLI-둘다는 어떄?

Git/Github를 처음 접하면서, 보통 두가지 선택의 갈림길에 위치하는데 Github Desktop 혹은 Visual Studio용 Github Extension 같은 GUI(Graphical User Interface)를 선택하느냐, git 명령어를 사용하는 CLI(Command line interface)를 선택하느냐다. 내 조언은 “둘다 사용해보자”. 저장소 클론, 브랜치 만들기, 변경사항 브랜치에 커밋하기는 먼저 CLI로 해보고, 그 다음 GUI를 이용해보자. 어떤게 더 마음에 드는가? 나는 어쨌든 bash 명령어들에게 더 익숙해지기 원했기 때문에 터미널에서 Git 명령어들을 사용하기로 했다. 물론 Github Desktop을 사용해서 클릭 한번으로 저장소를 클론한다.

clone with github desktop wp

두가지 모두 사용해보고 지금 당장 나에게 잘 맞는 것을 선택하자. 두가지 모두 동시에 사용할 수 도 있다. 코딩을 이제 막 배우기 시작한 입장에서는 터미널에서 git이나 bash 명령어들을 사용해 몸으로 기억하기를 원할 수 도 있지만, 변경사항(diff) 혹은 저장소를 클론하는 것 같은 일부 작업들은 GUI를 사용하면 더욱 쉽게 처리할 수 있다. 그리고 동료 프로그래머들에게 어떤 도구들을 왜 사용하는지 물어보자. Git/Github를 배울때, 동료나 학급 친구들과 같은 도구를 사용하면 피할 수 없는 git 문제에 봉착했을때 더 쉽게 도움을 받아 해결할 수 있을 것 이다.

Tip 2: dotfiles 설정하기

이건 터미널에서 git 명령어를 실행하는 사람들 위한 게임-체인저이다.

dotfiles

dotfiles는 많은 용도를 가지고 있지만, 한 가지 깔끔한 사용법은 터미널을 커스터마이징하여 커밋 된 git 브랜치와 커밋되지 않은 변경사항이 있는지 확인할 수 있다는 것. 나는 전 동료 John Nunemaker의 dotfiles를 포크해서 내 dotfiles를 만들었다. 하지만 Github에서 dotfiles를 검색한다면 원하는 많은 옵션들을 찾을 수 있다.

Tip 3: Github Pages 사이트 만들기

Github Page는 개인 혹은 프로젝트 기반의 웹사이트의 호스팅을 Github에서 무료로 제공한다.

github pages

간단한 자신만의 웹사이트는 HTML, CSS, JavaScript로 제작할 수 있으니 코딩 튜토리얼을 참고하거나, 다른 Github 사용자의 저장소를 포크할 수 있겠다. 제작하고 나서는 Github에 호스팅하는 자세한 방법을 참고하자.

위에 있는 스크린샷은 Github Pages를 통해 호스팅한 나의 개인 웹사이트이고 동료 @cobyism의 것을 포크했다. 더 많은 Github Pages 영감을 위해서 Github Collection을 살펴보거나 #github-pages가 태그 된 저장소들을 살펴보자. 추가로 fastpages라는 프로젝트도 있는데, Github Actions를 사용해 Jupyter notebook에서 바로 Github Pages 사이트에 쉽게 게시할 수 있도록 도와주는 프로젝트다.

Tip 4: Github 흐름 살펴보기

github pages wp

Github 계정을 가지고 있고, Git/Git Client를 설치했다면 모니터에 일반적으로 사용하는 Git 명령어에 대한 스티커메모를 붙이고 dotfiles을 업데이트하고, 개인 Github Pages를 만들었을텐데, 하지만 실제로 어떻게 Github를 사용해 협업하는가? Github 흐름 삽화(상단 그림)은 어린이 교육 사이트에서 가지고 온 자료다. 이걸 처음으로 보고나서 드디어 나는 Github가 어떤 것인지 이해했다. 우리의 코드를 공유하고, 다른 사람들이 그것을 발전시키고 그것을 통해 우리는 더 나은 것을 다함께 만드는 것이다. 이전 팁에서 나의 dotfiles과 개인 웹사이트는 다른 사람의 것을 포크했다 것!

Github 흐름 살펴보기

Tip 5: 병합 충돌(merge conflicts) 연습하기

병합 충돌은 pull 요청을 통해 master 브랜치로 병합을 시도할때 다른 중복되는 커밋(competing commit)이 존재해 발생하는데, 이때 우리는 Git에게 어떤 커밋을 최종 병합에 적용할지 알려줘야 한다. 이는 사람들이 같은 파일의 같은 행에 각기 다른 수정을 했거나, 다른 사람이 삭제한 파일을 수정하려고 할 때 자주 발생한다.

내가 병합 충돌에 맞닥뜨려 얼마나 많은 프로젝트 및 pull 요청을 포기했는지 기억할 수 없을 정도다. 그것은 날 무섭게 했고, 그것을 고치는 방법에 대한 문서도 무서웠다. 난 VIM을 실행중이 였고, 그만두고 싶었다. 영원히.

cccccccccconflit!!!!

그러고는 두려움에 맞서야 한다는 것을 깨달았고 곧바로 나는 병합 충돌을 목적으로하는 저장소를 만들고 문서를 참고하면서 어떻게 병합 충돌을 수정하는지에 대한 영상을 보면서 연습했다. 이걸 몇번 반복했다. 그러고나면 Github 유저 인터페이스를 통해 간단한 병합 충돌을 수정 할 수 있다. 매우 유용하다.

gui!gui! wp

오늘날, 나는 병합 충돌이 발생하면 겁을 조금 덜 먹고는 침착하게 당근들을 삭제한다. 버전 관리에 덕분에 일을 너무 망치지 않게됐다. 혹은 나쁜 케이스로 삭제하고 다시 클론하면 된다.

Tip 6: 첫 오픈 소스 기여가 문서여도 괜찮다.

여기까지 왔다면, 다음 단계는 오픈소스 커뮤니티와 만나는 것 이다. 몇몇 사람들을 팔로우하고 몇몇 저장소들을 star하거나 watch하고 변경 할 사항이 있으면 pull 요청을 열고, 변경 사항을 프로젝트에 병합하도록 요청해서 오픈 소스 소프트웨어에 기여하자. 나의 첫 오픈소스 기여는 RailGirls의 Github 사용 방법 가이드이다. 당신의 첫 오픈소스 기여가 문서여도 괜찮다. 사실 Github 데이터 과학 팀은 매년 가장 인기인 그리고 트렌딩 저장소를 자세히 설명하는 State of Octoverse 보고서를 발행하는데 지난 몇 년 동안 가장 널리 기여 된 프로젝트 중 일부는 문서와 관련되어 있었다. 예로 Azure DocsAzure DevOps가 있다.

top os by contributors

마지막으로…

Git, Github 강의 또는 튜토리얼 몇가지 :