Command Line에 대해 배우고 나서 git과 git hub를 처음 접했다. 터미널(나는 우분투 사용자다)을 열고 작업을 하면 뭔가 개발자답고 멋지다는 말을 우스갯소리로 동기들이 했는데 그때 나는 'command line은 무엇이고 git은 또 뭐냐'할 정도로 당황하고 있었다. 역시 뭐든 해봐야 는다고 프리코스를 진행하면서 직접 여러 번 사용을 해보고 난 지금에서야 관련 내용 정리를 할 수 있게 되었다.
CLI(Command Line Interface)는 명령 줄 인터페이스 또는 명령어 인터페이스라고 하며 텍스트 터미널을 통해서 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. (출처: 위키백과) CLI는 git 명령어를 입력할 때 사용하기도 한다. 거의 모든 운영체제에서 GUI(Graphic User Interface)를 지원하기 때문에 평상시 모니터(창)를 보면서 키보드나 마우스로 컴퓨터 작업을 한다. 그런데 간혹 마우스를 사용할 수 없는 상황(...) 혹은 모니터에서 GUI를 사용할 수 없는 경우가 생길 수 있다(침착해!). 이럴 때는 클릭을 통해 프로그램을 실행시키는 것이 어렵기 때문에 침착하게 터미널을 열고 command line을 이용해서 원하는 작업을 진행하면 된다. 이게 처음에는 익숙하지 않아서 참 당황스러웠는데 사용할수록 편리하다는 생각이 들었다.
Git은 Version Control System(VCS) 중 하나로 분산시스템이다.
git을 이용하면,
여기서 참으로 헷갈렸던 것이 '그럼 git과 github의 차이는 도대체 뭐냐?'였다. 이에 대한 해답이 아래의 이미지 파일에 잘 정리되어 있다.
(이미지 출처: http://www.vgizy.com/are-git-and-github-the-same-thing-or-not/)
노마드코더의 니콜라스의 비유에 따르면, git은 커피이고 github는 커피숍이다. git이 리포지토리(repository: 버전 관리 시스템에서, 저장소 또는 리포지토리는 파일이나 디렉터리 구조의 집합을 위해 메타데이터를 저장하는 자료 구조이다 - 출처: 위키백과) 즉, 소스코드 저장소라면 github는 git을 사용하는 사람들이 모여서 만든 일종의 social platform인 것이다.
내 나름대로 손으로 그려가며 정리해보았다. 과제를 github에 push하고 pull 할 수 있도록 몇 번 연습했기 때문에 혼자서 작업하는 것은 어느 정도 익숙해졌다.
오늘은 처음으로 페어와 함께 협업한 뒤 github에 push하고 pull 하는 연습을 해보았다. 특히 인상 깊었던 것은 충돌(Conflict)이 발생하는 경우와 이를 해결하는 것이었다. 또 파일을 서로 보내주고 다운로드 하지 않고도 너무 편하게 작업 내용을 공유할 수 있어서 깜짝 놀랐다. 조금 더 연습해보고 익숙해져야지.
위의 흐름과 크게 다르지 않은데 페어와 작업을 하기 위해서는 페어의 git과 나의 git을 연결해주는 작업을 추가해 주어야 했다. git remote add pair와 git remote -v가 사용됐다.
새로운 기능을 개발하거나 원본에 영향을 주지 않고 다양한 시도를 해보고 싶을 때, 여러 사람이 동시에 작업을 할 때 등등 branch를 활용하면 좋다. 작업하는 공간을 이동할 수도 있고(git checkout), branch를 만들고 동시에 그곳으로 이동할 수도 있으며(git checkout -b), branch들을 합칠 수도 있다(git merge).