개발자라면 누구나 쓰게 되는 버전 관리 시스템 git. 왜 이렇게 익숙해지지 않는지 모르겠다. Git 관련된 명령어도 좀 쭉 정리를 해보고 싶은데, 매일 구글링에 허덕이며 겨우겨우 다른 프로젝트 개발을 하는 입장에서 다른 사람한테 쉽게 설명할만큼 이해가 깊지도 않고 시간도 없어서 여의치가 않다.
이게 여러 사람이랑 프로젝트를 하면 브랜치도 만들었다가 합쳤다가 다양하게 사용법을 익힐 수 있을지 모르겠는데, 방구석 취미 프로그래머로서는 뭐 대단한 기능을 만드는것도 없고 귀찮아서 한 브랜치에서 쭉 개발을 하게 되니 매일 git push, git pull 만 하게 된다. 그러다 보니 아주 가끔 하게 되는 일들이 기억이 안나서 매번 검색하기가 불편하다. 일단 오늘은 새로 저장소를 만들고 처음 프로젝트 세팅을 하는 방법을 정리해본다.
새 repository 만들고 push 하기
가장 기본인데 프로젝트 처음에 딱 한번 하고 그후로는 할 일이 없으니 매번 잊어버린다.
#1. 우선 commit 하는 사용자 정보를 설정해준다.
$ git config --global user.name "Windybay"
$ git config --global user.email windybay@windybay.net
이제 commit 할때마다 위의 정보로 commit 이 되게 된다.
#2. 프로젝트의 root 디렉토리로 이동해서 초기화를 해준다.
$ cd project_root
~/project_root$ git init
~/project_root(master)$
초기화가 정상적으로 되면 branch 이름이 경로에 보이게 되는데, 처음에는 (master) 라고 나온다. 나중에 브랜치를 만들고 바꾸게 되면 괄호 안의 내용이 바뀔때도 있다.
#3. 미리 .gitignore 파일을 작성해서 업로드 시에 제외할 파일과 폴더를 설정
.gitignore (이름이 없고 확장자가 gitignore 이다) 파일은 프로젝트의 root 폴더에 작성해서 저장해주면 된다. 이 안에는 데이터베이스 파일이나 임시로 생성되는 캐시 파일, 기타 프로젝트에 필요 없지만 자동으로 생성되는 파일 등을 적어 놓으면 git 이 알아서 해당 파일들을 추적에서 제외해준다.
* 그런데 이미 한번 push를 해 버린 파일이나 디렉토리는 단순히 .gitignore에 추가로 적어준다고 해서 지워지지 않는다. 이 때는 추가 작업이 필요하다 (다음 포스트에 정리)
#4. git 에서 추적할 파일을 전부 staging 해준다.
~/project_root(master)$ git add .
추가할 파일 이름을 지정해줄 수도 있지만 최초 프로젝트 업로드시에는 모든 파일을 올릴 것이므로 add . 을 해 주면 된다. add 한칸 띄고 마침표.
#5. 최초의 커밋을 작성
~/project_root(master)$ git commit -m "First commit"
git commit 에 -m 옵션을 달면 커밋 설명을 한번에 같이 저장할수 있다.
보통 최초의 커밋은 first commit 또는 initial commit 등으로 지정하면 된다.
#6. github remote 저장소 (repository) 를 지정
github.com 에 계정을 만들고 저장소를 미리 만들어야 한다. 저장소 만드는 방법은 직관적이므로 생략.
~/project_root(master)$ git remote add origin https://github.com/아이디/저장소이름.git
https:// 다음에 나오는 원격 저장소를 origin 이라는 이름으로 업로드할 위치로 지정해 주겠다는 의미이다. 꼭 origin 으로 하지 않아도 되는것 같지만 업계의 관행이므로 특별한 이유가 없다면 바꾸지 않아도 될듯.
#7. 지정된 저장소에 push
~/project_root(master)$ git push -u origin master
~/project_root(master)$ git push
git push 는 로컬의 코드를 원격 저장소에 업로드하는 명령이다.
최초에는 -u 플래그를 붙여서 올려줘야 한다고 한다. 이 -u 를 설정해줘야 git pull 명령을 할 때 따로 어느 브랜치에서 pull 해 올지 설정을 해 주지 않아도 된다고 하는데..
최초에 -u를 붙여주면 그 후에는 커밋 후 git push 만 해 줘도 잘 올라간다.
#8. 서버에서 다운로드받기
~/project_root$ git clone https://github.com/아이디/저장소이름.git
~/project_root(master)$ git pull
처음 프로젝트를 다운받을때는 git clone 을 하면 원격 저장소에 있는 모든 파일을 다운받고 브랜치 및 commit 정보를 다 가져온다. 이후에는 git pull 을 통해 변경사항만 반영하는 것이 가능해진다.
다음 포스트에 몇가지 삽질 해결용 명령어도 정리해보겠다.