그동안 SourceTree라는 어플리케이션을 사용해서 Git을 쓰고 있었다.
명령문 몇 줄을 외우는 것보단 버튼을 누르는게 더 편하기 때문이었다.
그런데 요즘 웬만한 에디터들은 Git과의 연동이 가능하다.
따라서 에디터 내에 내재된 터미널을 이용해서 Git을 사용하는 것도 편하다는 이야기를 들었다.
그리고 터미널을 이용해서 Git을 쓰는 것이 더 멋지다.✨
그래서 . . . 더 이상은 미룰 수 없기에 Git을 기초부터 다시 한번 공부해보기로 했다.
먼저 사전 지식이 조금 필요하다.
Commit 과 Push
로컬 저장소와 원격 저장소
저장소는 파일이나 디렉토리를 저장하는 장소이다.
변경 이력을 관리하고자 하는 디렉토리 등을 저장소의 관리하에 두는 것으로, 그 디렉토리에 있는 파일 등의 변경 내역을 기록할 수 있다.
저장소는 자신의 컴퓨터에 있는 '로컬 저장소' / 서버 등 네트워크에 있는 '원격 저장소' 로 나뉜다.
기본적으로 로컬 저장소에서 작업을 수행하고, 그 결과를 원격 저장소에 저장하게 된다.
내가 작업을 수행하는 곳이 로컬 저장소, 그 결과를 기록하는 곳을 원격 저장소라고 생각하면 되겠다.
Branch
현재 출시하고 있는 버전의 유지 보수를 하면서 새로운 기능을 추가하거나 버그를 수정할 수 있다.
이렇게 병렬로 수행되는 여러 버전 관리를 위해 GitHub에는 브랜치라는 기능이 있다.
특정 지점으로 개발의 흐름을 분기하여 기록해 나가는 것이다.
분기 한 지점은 다른 지점의 영향을 받지 않기 때문에 같은 저장소에서 각 개발을 해 나갈 수 있다.
GitHub에 저장소 작성
GitHub 메인 화면에서 Create New Repository를 눌러 저장소를 추가하면 된다.
위의 사전 지식 정도만 알아도 Git을 사용할 수 있다.
기본적인 Git의 작업은 아래와 같은 흐름이다.
1번은 처음 한번만 진행하고, 2번~5번을 반복한다.
- Github에 저장소 작성 (git init) 또는 복제 (git clone)
- 파일 작성 및 편집
- 파일의 변화된 내용 ( 생성, 변경, 삭제 ) 를 git 인덱스에 추가 ( git add )
- 변경 결과를 로컬 저장소에 커밋 ( git commit )
- 로컬 저장소를 푸쉬해 원격 저장소에 반영 ( git push )
이제 기본적인 사용법은 알았으니, 실제 코딩에 자주 이용되는 브랜치의 사용법에 대해 살펴보자
브랜치는 동시에 이루어지는 여러 버전 관리를 할 수 있는 구조이다.
기본적으로 다음과 같은 순서로 사용한다.
브랜치의 생성 이동 → 브랜치에서의 개발 작업 → 브랜치에 푸시 → 브랜치에서 풀 → 브랜치 병합 → 브랜치 삭제
우선 현재 브랜치 목록을 살펴보자
git branch
현재 브랜치에는 * (별표) 표시가 붙는다.
그렇담 브랜치를 만들어보자.
git branch subdir01
브랜치의 이동은 checkout 명령을 사용한다.
git checkout subdir01
또한 지점 만들기 및 이동은 다음 명령으로 정리한다.
git checkout -b subdir01
여기서 git branch로 다시 브랜치 목록을 살펴보면 subdir01 지점이 추가되어 작업 중임을 알 수 있다.
먼저 작업한 파일을 git에 추가 커밋해주자
git add hello.html
git commit -m "add file hello"
이제 로컬 저장소에 파일 추가가 기록되어있다.
그럼 이 점을 원격 저장소에 반영시켜 보자.
원격 저장소의 정보는 등록제이기 때문에 브랜치 이름을 지정하는 것만으로 푸쉬할 수 있다.
git push origin subdir01
Github에서 확인 해보면, 현재 2개의 브랜치가 존재하고 subdir01 브랜치가 푸시된 것을 확인 할 수 있다.
다른 개발자가 subdir01 저장소로 개발하려면 어떻게 해야할까?
풀(pull) 명령을 사용해서 쉽게 구현할 수 있다.
우선 저장소 subdir01에 체크아웃 명령으로 이동한다.
git checkout subdir01
실행 결과를 보면 체크 아웃한 브랜치 subdir01이 원격 브랜치의 subdir01에 대응하고 있는 것을 알 수 있다.
다음 원격 브랜치 subdir01의 코드를 가져오자
git pull
로컬 파일 목록을 보자
ls
따란 🌈
원격 브랜치의 코드가 가져와졌다.
이제 브랜치를 이용해서 여러 개발자의 공동 개발을 시작할 수 있다.
실제 개발 현장에서 새로운 기능의 브랜치를 만들고, 개발한 뒤 테스트까지 완료되면 통합을 한다.
메인 master 브랜치에 통합하는 것이다. 이 브랜치의 통합 작업을 병합이라고 한다.
1) 현재 분기를 master로 전환하기
git checkout master
2) sub1 브랜치 결과를 병합하기
git merge subdir01
3) github에 푸시하기
git push origin master
브랜치 subdir01의 내용이 master로 병합된 걸 확인할 수 있다.
사용하지 않는 브랜치는 제거할 수 있다.
그렇지만 실제 개발 현장에서는 잘못 작성되었을 경우를 제외하곤 작업이 완료된 분기도 남겨두는 것이 일반적이다!
브랜치를 삭제하려면 다음 명령을 실행하자
git branch -d subdir01
결과를 살펴보자
git branch