Git과 Github
안녕하세요 오늘은 깃과 깃허브에 대해 알아보려고 합니다. 정말 기본적인 활용과 필요성을 먼저 알아볼겁니다. 심화 내용은 앞으로 차차 다루고, 지금은 중요한 기본 개념을 위주로 알아보겠습니다.
1. 개념과 필요성
깃은 버젼관리 시스템입니다. 리누스 토발스가 개발했다고 알려졌는데요. 깃과 같은 좋은 버젼관리 시스템이 구축하기 전에 개발환경은 상당히 열악했다고 합니다. 외부 저장 장치에 수정한 파일들을 저장해서 물리적으로 전달하는 방식도 많이 이용했는데요. 깃과 같은 무료 버젼관리 프로그램이 등장하면서 이 문제는 많이 해소됩니다.
사람이 많아지고 업무 방향이 다각화 될 수록 버젼에 대한 관리는 어려워집니다. 특히 코드 한 줄로 모든 시스템이 변할 수 있는 개발자들에게 세부적이고 섬세한 버젼 기록은 중요했죠. 이를 해결하기 위해 깃은 ‘파일 안에 모든 변경사항을 기록하자’라는 생각을 시스템화 합니다. 또한 변경 당시 어떤 모습이고 어느 시점에 변경이 이뤄졌는지 까지 기록하는 것을 넘어 git blame 등의 명령어를 통해 작은 부분이라도 수정한 당사자를 찾을 수 있도록 섬세한 프로그램을 만들었죠.
그런데 꼭 이런 버젼관리가 필요할까요? 버젼관리가 필요한 이유는 4가지로 축약됩니다.
-
수정할 때마다 새 파일 만들면 관리 어려움
- 언제든 과거 버젼으로 돌아갈 수 있어야 함
- 이력을 남겨 수정한 당사자를 파악하기 쉽다
- 하나의 프로젝트로 여럿의 개발자 협업이 가능
이렇게 잘 이뤄진 버젼관리는 다양한 장점을 제공해 개발 환경을 훨씬 쾌적하게 만들어줍니다.
2. git과 github의 차이
깃허브는 깃으로 작업한 결과물이 올라가는 장소일 뿐 깃과 직접적인 영향이 있지는 않습니다. 깃허브에 대해 설명하자면
- 깃을 사용한 프로젝트 저장소(로컬 뿐 아니라 온라인을 이용해 저장)
- 개발자들의 소셜 네트워크(개발자들의 코드도 볼 수 있게 공개)
라고 정리가 가능합니다.
한 마디로 정의하면 깃을 이용해 온라인에서 호스팅이 가능하도록하는 서비스입니다. 깃은 로컬로만 가능하지만, 깃허브를 통해 온라인으로 확장이 가능하죠. 깃허브는 온라인에서 제어해야 하기 때문에 깃으로 작업한 결과물에 remote라는 명령어를 통해 깃허브로 전달합니다.
3.터미널 명령어로 활용하기
깃 허브를 GUI로 제공하는 서비스도 많지만 개발자라면 터미널을 활용해 git을 제어할 줄 알아야 합니다. AWS등 github GUI 프로그램의 활용이 제한되는 공간에서도 업무에 지장을 주면 안되기 때문입니다. 오늘은 중요한 명령어를 기준으로 간략하게 깃허브로 파일을 업로드하는 방법을 알아보겠습니다.
Git init # 깃 시작
Git status # 깃 상태 확인
git add # 파일 수정 이력 기록 준비 (장바구니 담기)
git commit # 구파일 수정 이력 기록 (구매)
git log # commit 이력 보기
위의 다섯가지 명령어가 가장 기본적인 명령어입니다. 단순하지만 깃에서 가장 많이 쓰이는 명령어 입니다.
git remote add origin url
git branch -M main
git push -u origin main
위의 3가지 명령어는 깃을 이용한 작업물을 깃허브에 전송하는 명령어 입니다. 위 코드는 빈 레파지토리 생성시 깃허브에서도 연결을 위해 알려주고 있으니 참고하시면 좋겠네요. 간혹 branch가 master로 되어있는 경우도 있는데, 이는 main과 같은 의미 입니다. 그러나 요즘 master와 slave라는 개념의 부정적 영향으로 master라는 표현 대신 main을 활용하자고 합의를 했습니다. 브랜치에 대해서는 차후 좀 더 자세히 다뤄보도록 하겠습니다.