Git으로 버전제어

Universal Missions 회사는 (Euphoric State University에서 분사한 항공 서비스 전문회사) 늑대인간(Wolfman)과 드라큘라(Dracula)를 고용해서 다음 행성 착륙선을 화성에 보낼 수 있는지 조사하려고 한다. 늑대인간과 드라큘라 모두 계획하는 작업을 동시에 수행할 수 있길 희망하지만, 과거에도 동일한 문제에 봉착한 경험이 있다. 순서대로 작업을 한다면, 다른 사람 작업이 끝날 때까지 한참을 기다려야 한다. 하지만, 본인 계획을 가지고 작업을 해서 전자 우편으로 주고 받고 하는 것은 분실되고, 덮어쓰고, 이중기록되는 문제가 있다.

한 동료가 작업관리로 버젼 제어(version control)를 제안했다. 버젼 제어가 전자우편을 주고 받는 것보다 낫다:

팀으로 작업하는 사람만 버젼제어로부터 혜택을 받는 것은 아니다: 단독 연구자도 상당히 혜택을 받을 수 있다. 만약 추후에 해당 프로젝트로 되돌아 볼 필요가 있다면 (예를 들어, 기억이 희미해지는 1년 후에), 무엇이 언제, 왜 변경되었는지 기록을 보관하는 것이 모든 연구자에게 극도로 중요하다.

버젼관리 (Version Control)은 디저털 세상에서 연구실 수첩이다: 버젼관리는 전문가가 자신이 한것과 다른 사람과 협업한 것을 기록하고 관리하기 위해서 사용하는 것이다. 모든 대형 소프트웨어 개발 프로젝트는 버젼제어에 의존하며, 대부분의 프로그래머는 작은 일에도 사용한다. 버젼제어가 단지 소프트웨어만 한정된 것이 아니다. 책, 논문, 작은 데이터셋, 시간에 따라 변하고 공유될 필요가 있는 어떤 것이나 버젼제어 시스템에 저장될 수 있고 되어야 한다.

선수과목

이번 학습에서 유닉스 쉘에서 Git을 사용한다. 쉘을 사용한 이전 경험 일부를 기대하지만, 강제적인 의무사항은 아니다.

Schedule

Setup Download files required for the lesson
00:00 1. 자동화된 버젼제어 버젼 제어가 무엇이고, 왜 버젼제어를 사용해야 하는가?
00:05 2. Git 구축 및 설정 Git을 사용하려면 어떻게 환경을 구축해야 할까?
00:10 3. 저장소 생성 Git은 정보를 어디에 저장할까?
00:20 4. 변경사항 추적 Git으로 변경사항을 어떻게 기록할 수 있을까?
버전 제어 저장소의 상태를 어떻게 확인할 수 있을까?
어떻게 내가 만든 변경사항에 노트로 남겨 기록할 수 있을까? 그리고 노트를 남기는 이유는 무엇을까?
00:40 5. 이력 탐색 파일 이전 버젼을 어떻게 확인할 수 있을까요?
변경사항을 어떻게 리뷰할 수 있을까요?
이전 파일 버전을 어떻게 복구할 수 있을까요?
01:05 6. 추적대상에서 제외 어떻게 하면 Git에게 파일 추적을 하지 못하게 할 수 있을까?
01:10 7. GitHub 원격작업 웹상에서 다른 분들과 내가 작업(변경)한 것을 공유할 수 있을까?
01:40 8. 협업 (Collaborating) 버전 제어를 사용해서 어떻게 다른 분들과 협업할 수 있을까요?
02:05 9. 충돌 (Conflicts) 본인 변경사항이 다른 누군가의 변경사항과 충돌나는 경우 어떻게 해야 하나요?
02:20 10. 공개 과학 (Open Science) 버전 제어가 나의 작업을 어떻게 더 공개될 수 있도록 도울까?
02:30 11. 라이선싱 (Licensing) 본인 작업에 어떤 라이선싱 정보를 포함해야 하나요?
02:35 12. Citation How can I make my work easier to cite?
02:37 13. 호스팅 (Hosting) 내 버전 제어 저장소를 어디에 호스팅 해야한요?
02:47 14. Supplemental: Using Git from RStudio How can I use Git with RStudio?
02:57 15. Git 추가설정 Git 관련 환경설정하면서 자주 사용하는 설정은 무엇인가?
03:07 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.