+내용을 들어가기에 앞서, Git의 흐름을 파악하면 각 단계에 대한 이해가 훨씬 수월할 것 같아 설명을 추가하였습니다.
구글에 다양한 자료가 있기 때문에 하나의 자료로서 참고만 해주시면 좋을 것 같습니다. Git은 다음과 같은 흐름을 통해 소스 관리가 이루어집니다.
작업 공간 : 올리고자하는 파일이 있는 곳. 이 공간에 Git을 생성하여 형상 관리를 하게 된다.
준비 영역 : add를 통해 작업 공간에 파일들이 저장된다. 로컬 저장소에 commit 되기 전 거쳐가는 영역이지만 준비 영역을 거치지 않고 commit도 커밋도 가능하다.
로컬 저장소 : 준비 영역에 있던 파일들을 commit하게 되면 로컬 저장소로 저장되며 최종 버전이 된다.
원격 저장소 : 로컬 저장소의 파일들이 push를 통해 원격 저장소에 올라간다.
1) 올리고자 하는 폴더에서 마우스 우클릭 후 Git Bash Here 클릭한다.
2) 현재 폴더를 로컬 저장소로 지정한다.
☞ git init
해당 폴더에 .git 폴더가 생성된다. git 폴더의 역할은 각각의 파일들이 어떤 상태인지를 여러가지로 분류하여 관리한다.
3) 로컬 저장소의 현재 상태를 확인한다.
빨간 글씨체로 보여지는 파일목록은 추적되지 않은 파일들(Untracked files)이다. 추적되지 않은 파일이란, 준비 영역이나 로컬 저장소에 한번이라도 add되거나 commit되지 않은 파일을 말한다. 반대로 추적 상태인 파일들(Tracked files)은 최소한 한번은 git add 명령을 통해 준비 영역에 포함되거나 commit을 통해 로컬 저장소에 저장된 파일이다.
☞ git status
4) 작업 공간의 파일들을 준비 영역에 추가한다.
☞ git add .
*git add 입력시 왼쪽과 같이 소스가 추가되지 않는다. git add는 특정 파일만 업로드하고자 할 때 사용한다.
☞ git add "파일명"
git add . 입력 후 만약 오른쪽과 같이 에러(warning: LF will be replaced by CRLF in .project.)가 발생한다면 그것은 문서의 개행 문자를 처리하는 OS 차이 때문에 발생하는 것이다.(참고 : 유닉스에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed)인 CRLF로 이루어진다)
명령어 git config core.autocrlf true 를 입력 후 다시 add 하자.
5) 로컬 저장소에 최종 저장하는 단계이다.
☞ git commit -m "메세지"
6) 로컬 저장소와 원격 저장소를 연결시킨다.
☞ git remote add origin Git Repository 주소
*origin은 별칭
Git Repository 주소는 본인 Git 계정 접속 후 Repository 에서 Clone or download를 클릭하면 가져올 수 있다.
7) 별칭 내역을 확인한다.
origin의 별칭으로 등록된 원격 저장소를 확인할 수 있다.
☞ git remote -v
8) 로컬 저장소의 파일들을 원격 저장소로 올린다.
☞ git push origin master
push 중 아래와 같은 에러가 발생했다. 원인은 아마 원격 저장소와 로컬 저장소의 상태가 달라서 나는 오류일 것이다.
원격 저장소에는 README.md 파일이 있었기 때문인 것 같다.
그러니 pull을 먼저 해주어 둘의 상태를 같게 한 다음 push를 해준다.
☞git pull origin 브랜치명 --allow-unrelated-histories
브랜치명에는 따로 생성한 브랜치명이 없다면 master를 입력하면 된다. (Git은 기본적으로 master 브랜치가 생성된다)
☞git branch -a
원격 브랜치를 포함한 모든 브랜치 목록을 확인할 수 있다.
만약 pull을 해줬음에도 불구하고 에러가 발생한다면 임시방편으로 강제로 push를 해줄 수 있다.