Git 혼자 작업하기
Git이란?
- Git은 폴더 안에 시간 여행이 가능한 평행 우주를 만드는 것.
- 시간 여행이 가능 하다는 것은 본인이 코딩을 실수 했거나, 이전 코드랑 비교해서 무엇이 바뀌었는지 헷갈릴 때 언제든 폴더 내 상태를 과거로 돌릴 수 있다. 또는 과거로 가서 필요한 코드만 가지고 현재로 돌아오는 것도 가능하다.
- 평행 우주를 만든다는 것은 폴더 안에 여러 평행 우주들을 생성해서 여러 버전을 작업하다가 하나만 골라서 결과물로 결정 할 수 있다는 의미이다.
Git 사용법
- Git 사용법은 아래 두가지로 나뉜다.
- CLI(Command Line Interface)로 명령어를 입력.
- 마우스로 쓸 수 있게 GUI로 만들어진 소프트웨어(ex)SourceTree) 사용.
- Git 저장소 만들기
- 원하는 위치에 프로젝트를 진행할 폴더를 생성.
- 2가지 방법으로 진행.
- CLI로 하는 방법
- cmd에서 현재 폴더에서 git init을 입력.
- git config —global user.name(사용자 이름)과 git config —global user.email(사용자 이메일)을 등록.
- .git 폴더가 숨김폴더로 생성되며 이곳에 평행우주가 생성되는 것.
- SourceTree로 하는 방법
- 홈에서 Create를 클릭 후 목적지 경로와 이름을 입력하고 생성버튼 클릭.
- .git 폴더가 생성될 것.
- CLI로 하는 방법
- 현재 시점을 저장하기
- CLI에서 git status 명령어로 현재 상태를 확인.
- git add (파일이름) 명령어를 입력하여 git의 타입캡슐에 추가.
- git commit 명령어로 타입캡슐을 묻으며 타입캡슐에 대한 설명을 vim에디터로 작성.
- git status 명령어로 더 이상 묻을 것이 없는지 확인.
- 묻을 것이 있다면 add, commit으로 더 묻음.
- 모든 작업을 끝내고 git log 명령어를 입력하면 캡슐의 정보들과 메시지들이 나온다.
- SourceTree에서는 GUI로 전부 볼 수 있다.
- 과거로 돌아가기
- Reset (과감하게 돌아가는 방법)
- 과감하게 돌아가는 방법은 돌아갈 과거 이후 행적은 복원할 여지 없이 완전히 지우겠다는 것이다.
- git log로 확인한 타임캡슐 중에 돌아가길 원하는 시점의 일련번호 앞 여섯자리만 복사한 뒤 git reset (일련번호) —hard 명령어를 입력한다.
- Revert(미래에 한발을 걸치고 소심하게 돌아가는 방법)
- git log 명령어로 취소할 시점 캡슐의 일련번호를 복사한다.
- git revert (6자리 일련번호) 명렁어 입력으로 새 commit 작성.
- commit을 마치면 과거 시점으로 돌아가 있지만 git log를 확인해보면 reset 처럼 돌아간 시점 이후가 지워진게 아니라 새로운 캡슐이 묻혀있는 것을 볼 수 있다.
- reset으로 다시 미래로 돌아갈 수 있기도 하다.
- Reset (과감하게 돌아가는 방법)
- 평행우주 넘나들기 ( Branch )
- 회사에서 배포중인 프로젝트의 운영이나 추가 개발을 하기 위해서는 프로젝트에 손을 대야 하지만 마음대로 배포중인 프로젝트를 건드릴 수 없으니 평행우주를 만들어 배포중인 프로젝트에 대해 영향을 주지 않아야 한다.
- 새로운 평행우주를 만들기 위해 git branch (branch 이름) 의 명령어를 입력하여 새로운 branch를 생성한다.
- 생성한 평행우주로 가기 위해서는 git checkout (branch 이름)으로 이동할 수 있다.
- 새로 만들어진 평행우주 branch는 원 branch의 현 상태를 그대로 가져온다.
- 다른 우주에서 가져오기 ( Merge )
- CLI에서 작업 순서
- 새로 만든 평행 우주 branch들에서 일어난 변화를 main 브랜치로 가져와야 할 때 git checkout main 으로 main branch로 이동 후 git merge (가져올 branch 이름) 을 입력하면 commit을 완료하면 main으로 평행우주의 변화도 적용이 된 것을 볼 수 있다.
- 터미널에서 git log —graph —all —devorate 명령어를 입력하면 좀 더 시각화된 작업내용을 볼 수 있다.
- SourceTree에서 작업 순서
- 모든게 합쳐질 branch에 위치한 상태에서 병합할 branch를 우클릭 하여 merge 항목을 클릭.
- main에서 수정한 파일과 평행우주 branch에서 수정한 파일이 다를 때는 merge가 쉽게 이루어 지지만 같은 파일을 다룰 때는 충돌이 일어난다.
- 충돌이 일어나면 파일에 충돌이 일어나는 부분에 비교해서 나타내 주는데 이때 필요없는 코드를 지우고 git add로 캡슐에 넣고 git commit으로 캡슐을 묻으면 해결 할 수 있다.
- 여러 branch들에서 작업할 때, 협업할 때는 가능한 다른 branch들이 같은 파일을 수정하는 일을 피해서 작업하는 것이 좋다.
- CLI에서 작업 순서
- 다른 우주에서 가져오기 ( Rebase )
- merge를 사용하면 branch로 분기해서 각각 작업해서 병합하기 까지 모든 과정이 log에 남아있다.
- 실제 프로젝트를 진행하다보면 여러 branch들에서 merge를 하므로 여러 갈래들이 여기저기서 합치고 분기해서 굉장히 복잡해지는 경우가 많다.
- 이때 모든 변경 내용들이 딱 한줄로 정리 되면 좋겠다 생각할 때는 merge 대신 rebase를 사용한다.
- rebase는 branch의 base를 재정의 하는 것으로 분기된 branch의 base를 재정의 하여 branch의 분기를 깔끔하게 정리할 수 있다.
- 추가로 다 쓴 branch를 삭제 할 때는 git branch -D ( branch 이름) 으로 지울 수 있다.
참고: 얄코 Git 강좌 (상)