Git, GitHub에 대해 배워보자
해당 내용은 유튜브를 보고 정리를 해놨습니다. 출처 : https://youtu.be/Bd35Ze7-dIw
[beginner’s curiosity]Git, GitHub에 대해 배워보자
개발자 입장에서 피할수없다는 Git! 도데체, Git, Github 무엇인가요?
Git 이 필요한 이유
1. 버전관리
- 소프트웨어라는게 만드는 과정, 운영하는과정에서도 계속 해서 무언가 더하고 고치고 빼고 하는 수정사항들이 발생됨
- 근데, 나중에 이전 기능이 다시 필요할 수도 있고, 누가 실수로 잘못된 코드를 섞어서 이전 데이터를 복원해야할 떄도 있음
- 그리고 이러한 내용들을 확인하기위해 코드가 어디가 어떻게 바뀌었는지, 과거 내역을 확인해야 할 수도 있죠.
- 그렇기 때문에 중간중간 자료를 저장해놔야하는데, 만약 Git 없이 그냥 파일로서 저장을 한다면 곂쳐지는 데이터들이 있음에도 각각의 저장을 하게됨. ( 나중에 언제 필요할지 모르니깐…)
2. 협업
- 작은 프로젝트는 혼자서도 개발하지만, 대부분의 프로젝트는 개발자들이 여러명이서 협업을 하게됩니다.
- 소프트웨어 프로젝트라는게 보통 폴더 통째로 있어야 테스트를 진행하는데, 보통 개발자들끼리 일정부분부역을 나눠서 코드 작성진행을 하게됨
- 그래서 테스트를 하기위해 메일이라던지, 클라우드라던지 파일을 주고 받게 된다면 골치아픈 상황이 발생될수있음
- 또한 이런 상황은 누가 언제 어디를 어떻게 건들었는지 확인하기가 어려워 뒷처리를 마무리하기도 힘들게 됨
이론
1. 정의: 리누스 토르발스가 개발한 분산형 버전 관리 시스템(VCS).
- Git 자체는 오픈 소스
- 저장소는 https://github.com/git/git
- 라이선스는 GPL
~Git 영어단어 뜻 : 재수없고 멍청한 놈, 자식~
2. Git과 Git-hub차이는?
- git-hub는 git을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
- git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템
3. 만들게 된 배경 리누스 토발즈는 리눅스 커널을 관리하는 기존 툴이 엉망인 것에 화가나 Git을 제작 하게되었다. 특히, 리누스는 하도 많이 화가난 나머지, 단 2주만에 완성을 하였다.
4. beginner의 기본 단어 확인
커맨드 라인(Command Line) : git 명령어를 입력할 때 사용하는 컴퓨터 프로그램. 맥에선 터미널
저장소(Repository): 프로젝트가 살(live) 수 있는 디렉토리나 저장 공간
버전관리(Version Control) : 기본적으로, 깃이 서비스되도록 고안된 목적
커밋(Commit) : 깃에게 파워를 주는명령어로, 무슨 일을 했다는 메모를 남기는 기능
브랜치(Branch) : 작업자의 메인 프로젝트의 브랜치를 따와서(branch off), 자신이 변경하고 싶은 자신만의 버전을 만든다. 작업을 끝낸 후, 프로젝트의 메인 디렉토리인 “master”에 브랜치를 다시 “Merge”
5. beginner의 기본 명령어 확인
git init : 깃 저장소를 초기화
git config : “configure”의 준말, 처음에 깃을 설정할 때 가장 유용
git help : 21개의 가장 많이 사용하는 깃 명령어 소환
git status : 저장소 상태를 체크. 어떤 화일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 확인
git add : 파일을 추가하면, 깃의 저장소 “스냅샷”에 포함(저장소에 새 파일들을 추가 안함)
git commit : 깃의 가장 중요한 명령어
git branch : 여러 협업자와 작업하기 위해 자신만의 변경으로 자주 사용
git checkout : 글자 그대로, 현재 위치하고 있지 않은 저장소를 “체크아웃”할 수 있다
git merge : 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 master 브랜치로 병합할 수 있다.
git push : 깃허브에 변경사항을 “push”한다.
git pull : 깃허브로부터 변경사항을 다운로드한다(“pull”).
5. 예시를 갖고 설명을 해보자면
Git을 이용한 프로젝트라면
프로젝트를 만들 때 만든 파일들이 다 담긴 프로젝트 폴더가 있음
cd (폴더 디렉토리)
그 폴더에서 git을 시작하면 지금부터 이 폴더의 모든 수정 내역들이 저장되는 .git
이라는 폴더가 생김
Git init
백업을 위해, 백업에 포함할 파일들을 모두 설정하고 git add -A
이 시점까지는 이러이러한 작업을 진행했다 하는 말을 남깁니다. git commit -m "(작업 수행 내용)”
그러면 이 폴더의 전체 내용들이 박제가됨, 이후에도 프로젝트에 의미있는 변화가 있을 때마다 이 작업을 해두면 압축파일로 저장할 때 처럼 전체가 따로 복사가 되는게 아니라 각 버전의 변경사항들만 기록되는거라서 용량을 많이 차지하거나 하지 않음
그리고 만약, 수정사항이 번복되거나 문제가 발생되서 이전 내역을 확인해야한다면, git logs
를 통해 지금까지 박제 내역을 확인 한 다음
박재되었던 과거로 복원을 하면 됩니다. git reset — hard 3r8da0
- 3r8da0는 로그이름 그러면 수정된 내역들은 복원되고 , 새로 만든 파일들은 삭제, 지웠던 파일들은 복구가 됨
또한 ‘이 기능을 넣을까 말까,’ 하는 다른 가능성의 길을 가지치기를 통해 진행할 수 도 있음
git branch “(브랜치명)”
만약 브랜치 내용을 적용해도 괜찮을 때는 합칠수도 있습니다.
git merge “(브랜치명)”
즉, git은 버전 관리를 위한 [소프트웨어] 이고, github은 이 git으로 저장되서 워격 전송된 내역들이 저장되는 공간을 제공하는 서비스! (커피와 커피숍같은 관계)
6. 시작하기 : github.com 가입
참고 자료
https://ko.wikipedia.org/wiki/ https://nolboo.kim/blog/2013/10/06/github-for-beginner/
추후 git 사용법에 대한 실기는 사진과 함께 2부작으로 연재를 하겠습니다.
실기
Jekyll + GitHub Pages 블로그 시작하기(feat.삽질의 시작)
필자는 공부를 위해 Git, GitHub에대해 알아보던 도중, 잘못된 길을 보았고 그렇게 8시간의 시간이 흘렀다.
+) 나름 처음에는 글에 도움될려고 초안도 만들었는데…
비록 초보자지만 8시간동안 아무리 구글링을 해도 진행이 안되었다는점 그리고 무서운 경고 메세지들로 우선 Stop
주말에 도움을 요청하여 다시 시도해보기로 하였다.
to be continue 주말동안 최선을 다해볼게요…