git 기본 명령어 사용하기


이번 포스팅에서는 기본적인 git 명령어에 대해 다뤄보려고 한다. 그 전에 먼저 git을 설치해야 하는데

https://git-scm.com/downloads로 들어가서 각 환경에 맞는 버전을 설치하면 된다. 필자의 경우 Window 버전용을 설치했다. 설치 과정은 검색하면 많이 나오니 설치했다고 가정하고 Github 계정도 만들어져 있다고 가정하고 시작하겠다.

먼저 Github의 repository(원격 저장소)에 올릴 파일을 저장할 로컬 저장소로 간다. 필자의 경우 바탕화면의 pooh_git/POOH 폴더를 지정했다.

여기서 마우스 오른쪽 클릭을 하면 ‘Git Bash here’이 있다. 이를 클릭하면

현재 경로와 함께 CLI(Command Line Interface) 창이 나온다. git –version 명령어를 통해 설치된 git의 버전도 확인할 수 있다.

그럼 이제 본격적으로 로컬 저장소에서 Github(원격 저장소)로 파일을 업로드해보자.

가장 먼저 해야할 것은 Github 사이트에 등록된 username과 e-mail 주소를 입력하는 것이다. 이는 git commit 시마다 사용해야 하는 정보이기 때문에 초기에 설정해놓아야 한다. 그렇다고 매번 할 필요는 없고 처음 설정할 때 한번만 해주면 된다.

잘 설정되었는지 확인하려면 git config –list로 user.name과 user.email 부분을 보면 된다.

이제 현재 로컬 저장소(~/Desktop/pooh_git/POOH)를 git 로컬 저장소로 등록할 차례이다.

$ git init

로컬 저장소를 git 로컬 저장소로 초기화해주는 명령어다. 저장소(repository)나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더일 뿐이다. git init을 먼저 입력해야 추가적인 git 명령어들을 적용할 수 있다. 그 다음 줄에 (master)가 나왔는데 이는 git init이 잘 적용됐다는 뜻이다.

$ echo “hello, pooh!!” > pooh.txt ~ $ ls

리눅스에서 ‘hello, pooh!!’라는 내용이 담긴 pooh.txt 파일을 만드는 과정과 같다. ls로 파일이 잘 만들어졌는지 확인한다.

$ git status

git 저장소 상태를 체크하는 명령어다. 어떤 파일이 저장소(repository) 안에 있는지, commit이 필요한 변경사항이 있는지, 현재 저장소의 어떤 branch에서 작업하고 있는지 등을 볼 수 있다. 밑을 보면 pooh.txt가 Untracked files라고 나와 있는데, 이는 추적되지 않은 파일, 즉, git에서 아직 관리할 대상이 아니라는 의미이다. 이를 tracked 상태로 바꾸어 git이 관리하는 대상에 포함되도록 해줘야 한다. 그래서 그 밑을 보면 use “git add” to track, 즉, track상태로 바꾸기 위해 “git add” 명령어를 사용하라고 나와있다.

$ git add [파일]

이 명령어는 commit 하기 전에 index에 등록해주는(인덱싱해주는) 명령어이다. 쉽게 말해, commit 하기 전 준비 과정이며 git이 해당 파일들을 지켜보게 해주는 거라고 생각하면 된다. 정확히는 git의 저장소 “스냅샷”에 포함시키는 것이다. [파일] 부분에 .을 입력하면($ git add . ) 현재 폴더의 모든 파일을 인덱싱한다는 의미이다.

(참고 : 밑을 보면 “LF will be replaced by CRLF”라는 경고창이 떠 있다. 이는 Unix 운영체제에서는 파일의 끝을 LF로 대체하고 Windows 운영체제에서는 CRLF로 대체한다는 의미이다. 즉, 단순한 경고창일 뿐 잘 처리가 된 것이다.)

$ git commit -m “pooh.txt commit”

git add로 git이 해당 파일들을 지켜보게 했다면 이제는 git commit으로 git이 버전관리를 하도록 해줘야 한다. 그리고 어떤 변경사항(새 파일 업로드, 수정 등)이 있을 때 이 명령어로 변경사항을 저장한다. 좀 더 자세히 말하면, git add 명령어를 통해 저장소 “스냅샷”에 포함시켰다면 이제는 git commit으로 저장소의 “스냅샷”을 찍는 것이라고 생각하면 된다. 하지만 그렇다고 원격 저장소인 Github에 반영되는 것은 아니다. 현재는 로컬 저장소에만 저장되는 상태이다. 보통은 “git commit -m “[Message]” 형식으로 사용하는데, “[Message]” 부분은 이따가 어떻게 보여지는지 뒤에 나온다.

이제 remote 저장소(원격 저장소)를 만들 차례이다. 위에서 말했지만 필자는 Github에 원격 저장소를 두려고 한다. 그럼 Github에다가 원격 저장소를 만들자.

Repository를 클릭한다.

New 버튼을 눌러 원격(remote) 저장소를 만든다.

필자는 원격 저장소와 로컬 저장소의 이름을 같게 했다. 다르게 해도 전혀 상관없다. 또한 모두가 볼 수 있게 Public으로 했다. 그 밑의 “Initialize this repository with a README”는 체크하면 저장소가 생성됨과 동시에 README 파일이 생기게 되고 체크하지 않으면 그냥 빈 저장소가 생긴다. 필자는 일단 체크하지 않았다. 왜냐하면 다음 포스팅에서 체크할 것이기 때문이다. 일단 지금은 그냥 넘어가자. 그 다음 Create repository 버튼을 누르면

다음과 같은 화면이 나온다. POOH라는 이름의 저장소가 생성된 것인데 중간에 나와있는 주소가 원격 저장소 URL이다(또는 위의 URL에 .git을 붙여주면 된다). 이 원격 저장소도 로컬 저장소처럼 git이 관리할 수 있도록 git에게 원격 저장소가 어디인지 알려줘야 한다. 이 때 사용하는 것이 git remote add 명령어이다.

$ git remote add [단축이름] [원격 저장소 URL]

git이 관리할 수 있도록 git에게 원격 저장소의 위치를 알려주는 명령어로 [단축이름]은 원격 저장소의 닉네임이라고 생각하면 된다. [원격 저장소 URL] 부분에는 URL만 넣으면 안되고 마지막에 .git을 붙여줘야 한다. 아까처럼 주소에 .git이 나와있다면 그대로 입력하면 되지만 URL창에 나와있는 주소로 git remote add하려는 경우는 반드시 끝 부분에 .git을 붙여줘야 한다.

$ git remote

등록된 원격 저장소를 확인하는 명령어이다. -v 옵션을 주면 로컬 저장소가 알고 있는 원격 저장소(POOH)에 대한 모든 항목을 보여준다. 2개가 리스트 된 것은 정보를 원격 저장소에 push하고 fetch 할 수 있다는 것을 뜻한다.

$ git push -u [원격 저장소 닉네임] [브랜치]

로컬 저장소에서 작업한 다음 변경 사항을 원격 저장소에 적용해주는 명령어다. 필자가 입력한 명령어를 해석해보면 원격저장소에 master라는 branch를 생성하고 변경 사항을 push한다는 뜻이다. -u 옵션은 생략해도 되는데, -u 옵션을 사용할 경우 이후에는 git push만으로 전체 입력 효과가 발생한다고 한다(즉, 옵션을 기억함). [원격 저장소 닉네임]은 아까 git remote add의 [단축이름]과 같다.

push가 잘 적용됐는지 원격 저장소로 가보면

pooh.txt가 원격 저장소에 업로드 된 것을 확인할 수 있다. 아까 git commit -m “pooh.txt commit”의 ‘pooh.txt commit’이 바로 해당 파일의 설명 부분인 것을 알 수 있다.




참고 사이트 :

  • http://slowalk.tistory.com/2470
  • http://emflant.tistory.com/123
  • http://freeprog.tistory.com/72
  • https://nolboo.kim/blog/2013/10/06/github-for-beginner/
  • http://paphopu.tistory.com/13

이전글: vi(m) 편집기로 여러 줄 삭제 및 커서 이동 다음글: git push error - failed to push some refs to '원격 저장소 URL'