Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

Hacktoberfest Seoul에서 발표한 "오픈소스에 기여할 때 해도 되는 일과 하면 안되는 일" 발표자료

지난달에 Justin 님Hacktoberfest 행사를 하고 싶다고 발표 요청이 와서 고민하다가 참여를 했다. 올해는 코로나 때문에 오프라인 행사를 거의 못 하다 보니 온라인 행사는 오프라인 행사와는 느낌이 달라서 발표도 별로 생각 안 하고 지내고 있었던 것 같다.

Hacktoberfest는 4~5년째 참석하고 있지만, 행사 자체가 10월에 오픈소스에 기여하는 것이었기 때문에 한 번도 세미나나 핸즈온랩 같은 건 생각해 본 적이 없었다. 처음 연락 왔을 때도 "Hacktoberfest는 그냥 한 달 내내 하는 건데 무슨 행사를 해야 하지?"같은 생각을 했던 것 같다. 관심 안 가져서 몰랐는데 원래도 지역별로 이벤트를 열도록 했던 것 같다.

Justin 님과 Ian 님이 준비해 주셔서 Hacktoberfest Seoul이 등록되고 이벤트 페이지를 열어서 지난 24일 온라인으로 세미나를 진행했다.

이번 Hacktoberfest는 초기에 이슈가 좀 많이 되어서 나름대로 고민이 되었지만, 지금은 생각이 좀 정리되었다. 행사가 끝나면 한번 정리해서 글을 써야겠다고 생각하고 있다.

주제는 여러 가지로 고민하다가 Hacktoberfest의 특성상 처음 기여해보고자 하는 사람이 많을 것 같아서 오픈소스에 대해 너무 많은 얘기를 하는 건 어려울 것 같아서 최근에 컨트리뷰톤도 했고 종종 사람들의 기여를 도와주면서 사람들이 어떤 부분에서 어려워하고 주저하는지 생각해 본 것도 있고 해서 오픈소스에 참여하면서 조심해야 할 부분과 너무 두려워하지 말고 해도 되는 부분을 정리해 봐야겠다는 생각이 들어서 다음과 같은 발표자료가 나왔다.

처음으로 온라인 라이브로 발표를 했다. 오프라인은 많이 해봐서 괜찮은데 온라인으로 하려니 좀 떨렸다. 수요일에 미리 Skype로 접속해서 라이브 발표를 테스트해 보았는데도 걱정했던 대로 문제가 생겼다. 첫 발표가 끝나고 나 차례로 넘어와서 발표를 시작했는데 두 번째 장표로 넘어가면서 모니터링으로 띄워둔 Youtube 화면을 보니 화면이 검게 나오고 아무것도 나오지 않았다. Justin 님, Ian 님과 확인해 봤지만 내 장비는 수요일 확인할 때와 같은 장비였고 이상이 없는데 방송이 송출되지 않았다.

온라인은 문제가 생기니까 대처를 할 수 있는 게 거의 없다고 생각하다가... 방송을 송출하는 OBS 프로그램에서 Skype 접속이 끊어진 것을 확인하고 재연결하니 이제 잘 나왔다. 한 20분 정도 걸린 것 같다. ㅠ

청중의 반응을 전혀 살필 수 없으니까 벽보고 얘기하는 것 같아서 약간의 답답함 + 민망함으로 발표를 계속 진행하면서... 이래서 라이브 방송하면서 채팅 많이 보는구나 싶기도 했다. 중간에 접속이 끊기거나 소리가 이상하다거나 하더라도 내가 인지하기 어렵다는 것도 불안하게 느껴졌다. 발표 땐 잘 안 그랬던 것 같은데 방송으로 하다 보니 발표하면서 내가 얼굴을 자꾸 만졌던 것 같은 생각이 들고 운영 쪽에서 오가는 채팅을 보느라고 눈알 돌리는 게 카메라에 다 잡히는 것 같아서 신경 쓰이기도 했다.(방송 후 다시 영상을 보진 않았다. 무서워서... 아직 올라오지도 않았지만...) 그래도 발표 중에는 큰 사고 없이 잘 마무리한 것 같다.

발표 후 실제 기여를 도와줄 수 있도록 50분 정도의 핸드온랩이 발표자별로 나뉘어서 있었는데 무료행사에 온라인이라 그런지 참석자가 많지 않아서인지 (다행히)내 방에는 아무도 오시지 않아서 발표만 하고 끝이 났다. ㅎㅎㅎ

2020/10/25 16:57 2020/10/25 16:57

새 버전에 맞게 git checkout 대신 switch/restore 사용하기

Git에 어느 정도 익숙하기에 새로운 기능이 나와도 일일이 테스트해보거나 자세히 확인해 보지 않았다. 얼마 전에 Git 2.23에서 checkout을 대신할 switch, restore가 도입된 것을 알게 되었고 언제부터인지는 모르지만 git --help에도 checkout 명령어가 안 나온다는 것을 알게 되었다.

도입할 때는 실험적으로 들어온 것 같지만 정식으로 자리 잡은 것 같아서(이 부분에 대한 히스토리는 못 찾겠다.) 불편함이 없음에도 변화에 따라 나도 checkout을 벗어나야겠다고 생각했다. 기존의 Git 교육자료도 다 checkout으로 되어 있고 가끔 발표나 시연할 때도 checkout을 계속 사용하면 새로 Git을 배우는 사람들이 헷갈릴 것 같기도 해서...

checkout이 대체된 이유는 하나의 명령어가 가진 기능이 너무 많기 때문이다. 문서에 나온 정의도 다음과 같이 명확히 분리한 것을 알 수 있다.

  • checkout: Switch branches or restore working tree files
  • switch: Switch branches
  • restore: Restore working tree files

git switch

switch는 위 설명대로 checkout에서 브랜치를 변경하는 부분만 담당한다.

이전에는 git checkout <BRANCH_NAME>으로 브랜치를 변경했지만 이젠 switch로 변경한다. 명령어만 달라졌고 사용 방법은 같다.

$ git switch develop
'develop' 브랜치로 전환합니다
브랜치가 'upstream/develop'에 맞게 업데이트된 상태입니다

내가 많이 사용하는 브랜치를 새로 만들면서 브랜치 변경까지 하는 git checkout -b <BRANCH_NAME>-c 옵션으로 똑같이 사용할 수 있다.

$ git switch -c new-branch
새로 만든 'new-branch' 브랜치로 전환합니다

브랜치를 어디서 만들지는 지정하지 않았으므로 HEAD가 사용되었는데 특정 브랜치나 커밋에서 새로운 브랜치를 만들고 싶으면 브랜치 이름 뒤에 커밋을 지정해 주면 된다.

$ git switch -c new-branch2 515c633a
새로 만든 'new-branch2' 브랜치로 전환합니다


git restore

restore는 워킹 트리의 파일을 복원해 주는 역할을 한다.

파일의 수정 내용(README.md 파일을 수정했다고 했을 때)을 복원하려면 git checkout -- README.md처럼 사용했는데 이젠 다음과 같이 사용할 수 있다. 명확하지 않은 checkout --보다는 restore가 더 낫다고 생각한다.

$ git restore README.md

git add를 통해서 수정 내용을 stage에 이미 넣었을 때 이를 다시 빼려면 git reset HEAD README.md를 사용했어야 했는데 이 부분도 restore로 들어왔다. 수정사항을 빼고 조작할 때 모두 restore로 통일되어서 사용하기도 쉬울 테고 이해하기도 좋다.

$ git restore --staged README.md


물론 Git은 안내메시지가 잘 되어 있어서 나오는 명령어만 잘 따라 해도 되지만 익숙한 명령어는 잘 바꾸게 되지 않아서 정리를 해봤다. 사실 너무 사용법이 똑같아서 왜 미루고 있었나 싶을 정도로 간단하다. 아직 손에 안 붙어서 switch,restore가 바로바로 입력되진 않고 있고 별칭으로 co = checkout을 설정해서 checkout을 다 입력하지 않고 있었는데 여기도 별칭을 고민해 봐야겠다.

2020/10/21 01:55 2020/10/21 01:55