예제를 통해 실제 Git 명령어를 사용해보도록 하겠습니다.
1. git 설치
IDE를 통해 쉽게 작업할 수 있지만 터미널상에서 명령어를 통해 커밋을 하겠습니다. 우선은 원격 컴퓨터에 로그인하고 git를 설치합니다.
커밋에 정보를 남기기 위해 config에 name과 mail을 입력합니다. email은 github에 입력된 email을 입력해야 잔디가 심어집니다.
$ git config --global user.name [userName]
$ git config --global user.email [userEmail] |
2. 커밋(commit) 생성
우선 로컬 저장소를 생성해보도록 하겠습니다. 작업 트리를 생성하고 이동합니다.
$ mkdir -p ~/git/example && cd ~/git/example |
로컬 저장소는 init 명령어를 통해 생성할 수 있습니다.
로컬 저장소가 생성되면 .git 폴더가 생성됩니다. 이제 임의의 파일을 하나 생성하고 임의의 내용을 작성합니다.
$ touch test.txt && echo "임의의 내용 작성 1" > test.txt |
커밋을 생성하기 위해서는 add 명령어를 통해 인덱스에 파일을 등록해야 합니다.
인덱스에 등록된 파일을 확인하려면 status 명령어를 사용합니다.
이제 commit 명령어를 통해 변경 상태를 기록합니다. 이때 -m 옵션을 통해 커밋 메시지를 작성해야만 합니다.
$ git commit -m "test.txt 파일 생성" |
커밋 로그를 확인하고 싶다면 log 명령어를 입력해보세요.
스테이징과 커밋을 한번에 해결하려면 commit 명령어에 -am 옵션을 주면 됩니다.
$ git commit -am "test.txt 파일 생성" |
3. 푸시(push)와 풀(pull)
이번에는 방금 생성한 로컬 저장소를 원격 저장소에 push 해보겠습니다. 그전에 ssh 인증키를 만들어서 github에 등록합시다.
$ ssh-keygen -t ed25519 -C "이메일 주소" |
passphrase를 입력하라고 뜨면 암호를 입력해주거나 그냥 엔터를 눌러주시면 됩니다.
인증키가 생생되면 다음 명령어로 개인키를 확인합니다.
$ cat ~/.ssh/id_ed25519.pub |
터미널에 뜬 개인키를 복사하고 github에서 Settings > SSH and GPG keys > New SSH Key로 이동하여 개인키를 등록해줍니다.
이제 github에 접속하여 원격 저장소를 하나 생성합니다.
저장소 주소를 복사한 후 remote add명령어를 통해 원격 저장소를 추가해줄 수 있습니다.
$ git remote add origin git@github.com:[userName]/[repository].git |
원격 저장소가 추가되었는지 확인하기 위해서는 remote 명령어에 -v 옵션을 주면 됩니다.
이제 push 명령어를 통해 로컬 저장소의 변경 내역을 원격 저장소에 반영하도록 하겠습니다.
github의 원격 저장소에 접속하면 test.txt 파일이 저장된 것을 확인할 수 있습니다.
이번에는 원격 저장소를 clone을 통해 복사하여 example2 작업 트리에 로컬 저장소를 만들어보겠습니다. 우선 example2 작업 트리를 만들고 해당 폴더로 이동합니다.
$ mkdir -p ~/git/example2 && cd ~/git/example2 |
clone 명령어를 통해 원격 저장소를 복사합니다.
$ git clone git@github.com:[userName]/[repository].git . |
test.txt 파일을 수정해봅시다.
$ echo "내용 추가" >> test.txt |
test.txt 파일을 스테이징 하여 커밋하고 원격 저장소에 푸시해줍시다.
$ git commit -am "내용 추가"
$ git push origin main |
example 작업트리로 이동하여 test.txt 파일의 내용을 확인합시다.
$ cd ~/git/example && cat test.txt |
아직 원격 저장소와 동기화되지 않았습니다. pull 명령어로 원격 저장소의 커밋 내역을 로컬 저장소에 합치고 test.txt 내용을 확인하면 동기화가 된 것을 알 수 있습니다.
$ git pull origin main && cat test.txt |
|