Git 시작하기
29 Jul 2019git config
OS에 맞게 Git을 설치한 후 사용환경을 설정할 때 git config
를 이용한다. 먼저 사용자 이름과 이메일 주소를 설정한다. 이 정보는 Git을 커밋할 때마다 사용되며 한 번 커밋한 후에는 변경할 수 없다.
$ git config --global user.name John Doe
$ git config --global user.email johndoe@example.com
--global
옵션을 설정하는 것은 한 번만 하면 된다. 만약 프로젝트마다 다른 이름과 이메일 주소를 사용하고 싶을 때는 이 옵션을 빼고 실행하면 된다.
Git에서 사용할 편집기도 설정할 수 있다. 보통 Vi나 Vim으로 되어 있고 emacs나 notepad 등 원하는 것으로 설정할 수 있다.
$ git config --global core.editor emacs
$ git config --global core.editor
명령어를 실행한 후 fatal: not in a git directory
에러가 뜨면 git init
명령어를 실행한 후 다시 실행하면 된다. 마지막으로 git의 설정들을 확인할 수 있다. 앞에서 설정한 사용자 이름과 이메일 외에도 여러 설정들을 볼 수 있다. 설정을 확인한 후 다시 bash로 돌아갈 때는 :q
를 입력한다.
$ git config --list
git init & git clone
Git 저장소를 만들 때는 기존 프로젝트를 git 저장소를 만들거나 서버의 저장소를 clone하는 두 가지 경우가 있다. myproject라는 디렉토리를 git 저장소로 만들고 그 안에 있는 파일을 추가하고 싶다고 가정할 때 아래와 같이 진행할 수 있다. git init
명령어로 .git 폴더를 생성하고 git add .
명령어로 폴더 내의 모든 파일을 추가한다. 그 후 git commit -m
명령어로 커밋 메세지를 함께 입력하며 커밋한다. git remote add
명령어로 remote 이름과 리모트 저장소 주소를 추가한다. remote 이름은 origin이 아닌 본인이 원하는 것으로 지정할 수 있다. 마지막으로 git push origin master
명령어로 커밋한 것을 리모트 저장소에 추가한다.
$ git init
$ git add .
$ git commit -m'first commit'
$ git remote add origin https://github.com/username/project.git
$ git push origin master
clone하는 경우 좀 더 간단하다. git clone
뒤에 리모트 저장소 주소를 써서 추가한다. 두번째 명령어를 보면 주소 뒤에 myproject가 하나 더 있는데 이런 식으로 디렉토리 이름을 설정할 수 있다.
$ git clone https://github.com/username/project2.git
$ git clone https://github.com/username/project2.git myproject
git status
git status
명령어를 사용하면 파일의 상태를 확인할 수 있다. 파일의 상태에 따라 나오는 메세지가 달라진다.
$ git status
On branch master
nothing to commit, working directory clean
현재 수정했거나 추가한 파일이 없을 때 나타나는 메세지다. 이런 상황에서 새로운 파일을 추가했을 경우 아래의 메세지가 나타난다.
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
new.txt
nothing added to commit but untracked files present (use "git add" to track)
git status
로 파일 상태를 확인은 하였지만 어떻게 할 지 모를 때 git은 친절하게 무엇을 해야할지 알려준다. 아직 추적되지 않은(untracked) 파일이 있으니 git add
로 추가하라는 뜻이다. git add new.txt
또는 git add .
로 파일을 추가한 후 상태를 확인하면 아래와 같이 나타난다.
$ git status
On branch master
Changes to be commited:
(use "git reset HEAD <file>..." to unstage)
new file: new.txt
아까는 추적되지 않았던 파일이 추가되었고 git add
를 취소하고 싶다면 git reset HEAD new.txt
를 사용할 수 있다는 메세지를 확인할 수 있다. 기존에 추적되고 있던 파일 old.txt가 있다고 했을 때, old.txt를 수정하면 아래와 같은 메세지가 뜨게 된다.
$ git status
On branch master
Changes to be commited:
(use "git reset HEAD <file>..." to unstage)
new file: new.txt
Changes not staged for commit:
(use "git add <file>..." to update in what will be committed)
(use "git checkout -- <file> ..." to discard changes in working directory)
modified: old.txt
아직 커밋하지 않았기 때문에 new.txt에 대한 메세지도 뜨고 기존에 추적되고 있었지만 변경 사항이 추가되지 않은 old.txt에 대한 메세지도 뜨고 있다. git add old.txt
로 변경 상황을 추가할 수도 있고, git checkout -- old.txt
로 변경하기 이전 상황으로 돌릴 수도 있다. git checkout --
명령어를 사용할 경우, old.txt에서 수정한 상황은 수정하기 전으로 돌아가며 git status
를 할 경우 new.txt에 대한 메세지만 보게 된다. git add
로 변경상황을 추가한 후의 메세지는 아래와 같다.
$ git status
On branch master
Changes to be commited:
(use "git reset HEAD <file>..." to unstage)
new file: new.txt
modified: old.txt
git commit
변경 사항을 모두 추가했으니 이제 커밋할 차례이다. git commit
명령어를 입력하고 나면 Vim 편집기가 나타나는데 기본적으로 알아야 할 단축키와 명령어는 3가지 이다.
i
: 편집 모드 변경esc
: 편집 모드 종료:wq
: 저장 후 편집기 종료
또는 git commit -m
명령어와 함께 바로 커밋 메세지를 작성할 수 있다. 여기에 -a
옵션을 추가하면 git add
하지 않고 변경 사항을 추가하면서 바로 커밋할 수 있다. git commit -am <commit messge>
형태로 사용하면 된다.