1. 버전관리 시스템
버전관리 시스템이란 소스코드의 버전을 관리하여 복구 및 협업을 편리하게 할 수 있도록 도와주는 시스템이다. ex) Git, DropBox, Google Drive
2. Git 설치
소스코드를 버전관리하기 위해 사용되는 대표적인 버전관리시스템은 Git이다. 이를 사용하기 위해 Git을 설치해야 하는데, Git은 명령어로 버전관리를 하기 때문에 사용하기 쉽지 않다. 때문에 Git을 GUI를 이용하여 편리하게 사용할 수 있게 해주는 프로그램인 SourceTree를 이용하여 버전관리 시스템을 이용한다.
Git 공식 페이지 https://git-scm.com/
우선 Git 공식 페이지에 접속하여 Windows용 Git을 다운로드한다.
다운받은 설치파일을 실행하고, 기본 설정으로 설치한다.
설치가 완료되면, Git GUI, Git CMD, Git Bash 등이 설치된 것을 볼 수 있다. 여기서 Git Bash를 실행한다.
실행하면 아래와 같이 터미널과 유사한 창이 뜬다.
git 명령어를 입력한다.
위와 같이 출력되면 Git이 성공적으로 설치된 것이다. 여기서 Git 명령어를 이용하여 Git을 이용할 수도 있다.
3. 원격 저장소 - Github
SourceTree를 설치하기에 앞서, Github를 먼저 시작한다.
Github는 Git으로 관리되는 프로젝트를 원격에 저장하여 여러 사용자 또는 여러 환경에서 사용할 수 있도록 하는 원격 저장소이다. 프로젝트를 로컬 환경뿐만 아니라 원격에 저장함으로써 안전하게 저장할 수 있고, 다른 PC에서도 작업할 수 있다.
Github 공식 홈페이지 https://github.com/
Github에 접속하여 Sign up으로 가입을 하거나, 계정이 있을 경우 Sign in으로 로그인 한다.
New Repository를 클릭하여 새 프로젝트 저장소를 만든다.
저장소 이름을 입력한다. Initialize this repository with a README 는 저장소를 생성하면서 프로젝트를 설명하는 README 파일을 생성할 것인지 묻는 것인데 체크를 해도 되고 안해도 된다. Create Repository를 클릭하여 저장소를 생성한다.
저장소가 생성되면서 저장소에 접근할 수 있는 주소를 보여준다. Git이 설치된 환경에서 이 저장소에 연결할 때 이 주소로 연결할 수 있다.
4. SourceTree 설치
SourceTree는 Git을 쉽게 사용할 수 있도록 GUI를 제공하는 소프트웨어이다. 프로젝트의 커밋, Push 등의 작업을 인터페이스를 이용하여 쉽게 할 수 있도록 도와준다. Git과 같이 사용하면 소스코드의 버전을 쉽게 관리할 수 있다.
SourceTree 공식 페이지 https://www.sourcetreeapp.com/
SourceTree 공식 페이지에서 SourceTree for Windows를 다운받는다.
설치 파일을 실행한다.
Atlassian 계정이 필요한데, 새로 가입하거나 구글 계정을 연동할 수 있다.
Atlassian 계정으로 로그인 한 후 Github 등 원격 저장소에 연결한다. 이 과정은 건너뛰고 다음에 할 수 도있다. Github를 선택하고 계속을 클릭하면 설치가 진행된다.
자신의 Github로 인증하면, GitHub에 있는 저장소 목록에서 복제할 저장소를 선택한다. 방금 만든 GitHubProject를 선택한다. 선택한 저장소가 목적지 경로의 폴더에 복제된다. 목적지 경로의 폴더는 바꿀 수 있으며 빈 폴더여야 한다.
저장소 복제가 완료되면 소스트리가 실행된다. 커밋 등의 활동을 위해서는 지금 프로젝트를 관리하는 사용자가 누구인지 등록해야 한다. 이메일 주소와 이름을 등록한다.
5. 버전만들기
저장소에서 파일 생성 또는 편집 -> 선택하여 스테이지에 올리기 -> 커밋
여러 파일이 변경되었어도 일부 파일만 묶어서 스테이지에 올릴 수 있다.
수정된 파일들을 Working Copy라고 한다.
Working Copy의 파일들을 스테이지에 올리는 것을 ADD라고 한다.
ADD된 파일들은 스테이지(Staging Area = Index) 에 올라간다.
커밋을 누르면 스테이지의 파일들이 '버전'이 된다.
'버전'들의 리스트를 '저장소'라고 한다.
*커밋하기전에 변경사항을 검토하고 설명을 넣도록 하자
6. 되돌리기
6.1 Discard(폐기)
커밋하기 전에는 '폐기(Discard)'를 클릭하여 변경사항을 제거하고 가장 최근에 커밋하였던 상태로 돌아갈 수 있다.
6.2 Reset(초기화)
이전에 커밋했던 상황들 중 하나로 돌아가고 싶을 때는 돌아가고 싶은 버전 우클릭 - 이 커밋까지 현재 브런치를 초기화 - Hard 를 선택하면 선택한 버전으로 돌아가고 그동안의 변경사항은 삭제된다.
Mix를 선택하면 선택한 버전으로 돌아가면서 최근의 다른 커밋들은 삭제하지만, Working Copy(커밋하지 않은 변경사항)은 그대로 둔다.
6.3 Revert(Reverse 되돌리기)
돌아가고 싶은 버전 우클릭 - 커밋 되돌리기를 선택하면 파일들은 해당 버전의 상태로 바뀌면서 새로운 버전이 생성된다. 하지만 새로운 버전과 되돌리고자 했던 버전 사이의 커밋들이 제거되지 않는다. 단지 새로운 커밋이 추가될 뿐이다. (파일을 수동으로 편집하여 다시 커밋하는 것과 마찬가지)
Revert는 바로 전 단계로만 할 수 있기 때문에 원하는 버전으로 가기 위해서 역순으로 하나씩 Revert 해야한다.
7. 브랜치
툴바에서 브랜치를 클릭하여 새 브랜치 '실험'을 만든다.
Master 브랜치에서 파일을 변경하고 커밋한다.
'실험'브랜치로 와서 파일을 변경하고 커밋한다.
각 브랜치를 왔다갔다 할 때마다 코드가 브랜치의 버전에 따라 바뀐다.
각 브랜치마다 별도로 코드를 작성할 수 있다.
브랜치를 합치고 싶으면, 기준이 될 브랜치를 선택하고 다른 브랜치 우클릭 - 현재 브랜치로 병합 클릭
두 브랜치의 같은 위치의 코드가 다르면 충돌이 발생한다. 충돌이 발생한 파일을 열었을 때
<<< HEAD 에서 ==== 사이 부분이 기준이 되는 마스터의 코드
=== 에서 >>>> 까지가 다른 브랜치의 코드이다
수동으로 직접 파일을 수정하여 충돌을 해결한 후 저장한다. Working Copy의 수정된 파일을 우클릭하여 '해결된 것으로 표시'를 클릭한다.
수동으로 하지 않으려면, Working Copy의 파일 우클릭 - Resolve Conflicts - Resolve Using 'Mine' 또는 Resolve using 'Theirs' 클릭
충돌을 최소화 하기 위해서 '실험' 브랜치에서 Master브랜치의 내용을 수시로 가져오면서 '실험'브랜치의 수정을 계속하는 것이 좋다.
8. 로컬
8.1 로컬에서 저장소 만들기
SourceTree에서 파일 - 복제/생성 클릭 (또는 탭 옆의 + 버튼을 눌러도 된다)
Create 클릭
탐색 버튼을 눌러서 새 저장소가 저장될 디렉토리를 선택한다(D:\Git)그리고 저장소가 될 새 디렉토리를 이어서 적는다(D:\Git\NewRepos). 자동으로 아래 저장소의 이름에 NewRepos가 입력된다. 저장소의 타입을 선택한다(Git). 계정에 저장소 생성하기를 클릭하면 연결된 원격 저장소에 새 저장소가 생성된다(Github 등). 생성을 클릭하면 D드라이브의 Git 디렉토리 안에 자동으로 NewRepos라는 이름의 디렉토리가 생성되며 Git저장소로 초기화된다.
생성이 완료되고 새로운 저장소인 NewRepos탭이 열린다.
참고 - 생활코딩 유튜브 https://youtu.be/XUEuYq64HKI?list=PLuHgQVnccGMCB06JE7zFIAOJtdcZBVrap