(후기) “오픈소스 생태계서 활약해 볼까”…‘깃허브(GitHub) 입문’의 모든 것

안녕하세요 무무 입니다. 
최근 참석한 Github입문 강의를 갔다와서 그 내용을 공유해보려고 합니다.

짧은 요약글
* 일단 히스토리 관리용 만으로도 해도 OK! 
*그 이후에 작업방법의 변화에 따라 그때그때 기능을 습득!
* Git의 단위작업양기록(Commit) 중심 환경으로 개인관리 및 팀원간 소통, 토론, 교육등 개인역량향상에 도움
서울특별시의회 건물 뒤쪽에 교육장이 위치해있다.

교육행사의 상세내용은 다음과 같습니다.

▲행사명 : IT조선 ‘깃허브(GitHub) 입문’ 인사이트쉐어링 
▲대상 : 학생 및 일반인
▲일시 : 2016년 12월 15일(목요일) 오후 7시~9시 
▲장소 : IT조선 연결지성센터 교육장 (서울시 중구 세종대로21길 22 태성빌딩 3층 303호)
▲주최 : IT조선, 조선비즈, 연결지성센터
▲강사 : 송태웅 개발자

저는 일단 Git을 Github과 Bitbucket으로 채워나가는 단계에서 1인 개발 또는 2인 개발을 하다보니 많은 기능을 활용할 일이 적었습니다. 그래도 소규모여서 여러 이슈에 대해 대응을 빨리 대처하기위해 Git이란 기술에 관심이 높을수밖에 없었고, 지금은 Github초보 스터디를 운영하면서 많은 상황에 대한 대처법을 익히고 나누고있습니다.

Github 입문강의를 해주신 송태웅개발자님과 열심히 강의를 들으시는 참석자분들.

이번교육은 교육소개와 이어 Git을 쓰는 이유, Git에서 쓰이는 간단한 명령어들을 알려주시고 나서, 실습을 진행하였고, 참석자분들이 실습중 많이 힘들었던 내용과 함께 중요한 내용에 대해서 정리해주시는 형태로 진행되었습니다.

Git을 처음 습득하시는분들은 자신의 저장소에서 히스토리관리만 해도 괜찮다고 해주셨고, 이 말씀은 다른 기능들을 익혀도 그 기능들이 왜 만들어졌는지 배경과, 기능이 적용이 되야되는 개발 이슈상황들에 대한 이해가 필요하다는 것일것 같았습니다.

(깃헙 사이트와 함께 강사님 저장소 링크입니다. 강사님과 짧게나마 대화를 나눠보니 OS와 네트워크쪽으로 하시는듯하여 관심있으신분들은 팔로우와 Star눌러주시면 좋을듯합니다 ^^ (강의저장소는 git-training입니다.) )

강의는 주로 CLI환경으로 주로 진행이 되었습니다. add, commit, push정도 간단한 명령어를 익힌뒤 실습을 바로 시작하였습니다. 그리고 기본상황과 심화상황을 제시를 해주셔서 그 상황에 맞게 커맨드를 입력하여 풀어나가는 방법으로 실습이 진행되었습니다. 
실습때 진행되었던 커맨드를 나열해보겠습니다. 
(git 생략)
1. config
2. init
3. add
4. commit
5. push
6. status
7. diff
8. log
9. shortlog
10. remote 
11. show
12. reset
13. clone
14. checkout
15. fetch
16. rebase

나열하고 보니 pull은 없었네요. pull은 원격저장소에 있는 내용을 로컬저장소에서 받을때 쓰이는 명령어 입니다. 
(지금 현재 제가 운영중인 Github스터디는 GitBook을 통한 커맨드없이 웹환경으로의 Git 습득 후 단계를 밟아나가는 스터디인데요. 강사님과 나름 Git을 쉽게 익힌 뒤 발전해 나가는것에 대해서는 방향이 비슷해보이긴 한 것 같습니다. 
그리고, Git시스템 및 장점에 대해서 이해가 된다면 CLI에 대해서 시작을 하는게 나을듯 해보입니다.^^ 운영중인 스터디에 많이 참고해봐야될듯합니다.)

강의 마지막쯤에서 강조를 해주셨던것은 오픈소스 기여에 대한 내용과 필요성에 대해서 강조를 해주셨었습니다. 여기서 중요한 커맨드가 위에 작성된 커맨드중 16번인 rebase입니다.

강사님께서는 Rebase가 Merge와 같이 병합관련 작업으로 분류해서는 안된다고하셨었습니다. 그런데 워크트리상 두 작업은 브랜치가 합쳐지는것으로 보이긴 합니다. 그러나 Rebase라 함은 현재작업을 되감기를 한뒤 다른 브랜치와의 작업을 해놓고 이어서 작업을 한다는 방식으로 이해하라고 하셨습니다.

실제로 오픈소스기여를 할때나 협업을 할 때 Rebase작업을 많이 할 경우가 생긴다고 해주셨고, 위 Git-Rebase하기 링크는 두 로컬브랜치에 대한 예 인데요. 강의내에서는 리눅스커널이나 큰 규모의 저장소와 작업을 할 경우를 예를 들어서 설명을 해주셨습니다.

*****실습중 미해결과제********
교육 실습참여를 하면서 최근에 스터디를 통해서 알게된 서브모듈에 대해서 적용하고싶어 개인 TIL저장소(링크)에다가 서브모듈을 생성하여 실습과제를 수행하던중, rebase를 처리하려고 하니 
fatal: Needed a single revision 
invalid upstream upsteam/develop

이라는 에러문이 나왔습니다. 일단 이 fatal문제가 서브모듈로 인한 문제로 파악되기는하나, 추측이라 확신은 하지 못하겠습니다. ㅠㅠ 
일단 다시 git의 기능이 꼭 필요한 상황과 적용했을때의 장점들을 정리해봐야 될 것 같습니다. 이부분에 대한 결론은 정리되면 공유해드리겠습니다.

이 강의를 통해 git에 대한 장점 및 기능이 들어가면 필요한 상황들은 어떤상황일지 생각해보는 계기가 되었고, 잘 정리가 안된기능들에 대해선 바로 정리할려구요 ^^

실습에 대해서 더 자세한 내용과 후기공유는 스터디페이지에서 더 이어서 하도록 하겠습니다.

이상
무무 였습니다. 감사합니다.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.