본문 바로가기
학부 생활 + 랩실/Git, GitHub

Git Tutorial(2) - Git / GitHub 기초(1)

by 프롭 2026. 3. 16.
저장소 만들기

깃허브에 로그인해서 들어가보면 나오는 화면은 다음과 같다. 계정을 방금 막 만들었다면 왼쪽에 저장소는 비어있을 것이다. 이제 왼쪽에 초록새 New를 눌러 새로운 저장소를 만들어주자 단순하게 test_repository 저장소를 만들어주겠다. 만들때 하단의 README를 꼭 추가해주자

 

저장소 내용 수정하기

보통 깃헙에서 만든 저장소를 '원격 저장소(Remot Repository)'라 하고 이 저장소를 PC에 내려 받아 실제 작업이 일어나는 저장소를 '로컬 저장소(Local Repository)'라 한다. 깃헙을 활요하는 흐름을 간단히 하면 다음과 같다.

  1. git clone : 원격 저장소를 복사한 로컬 저장소를 만든다.
  2. git add : 로컬 저장소에서 작업합 내용을 스테이지(stage) 한다.
  3. git commit : 스테이지한 전체 소스의 상태를 커밋(commit)으로 저장한다.
  4. git push : 커밋을 원격 저장소로 올린다.

여기서는 test_repository를 저장소 이름으로 사용하겠다.

 

  • git clone

 

git clone <repository_url> <dir_name> : repository_url

 

이 명령어로 주소의 원격 저장소를 복사한다. 기본적으로 저장소 이름과 같은 디렉토리가 생기며 뒤에 dir_name을 지정해주면 그 이름으로 디렉토리가 생긴다. 방금 만든 test_repository를 repository_test라는 이름으로 복제하고 해당 디렉토리로 이동해보자

$ cd ~/workspace
$ git clone https://github.com/<your-repository> repository_test
$ ls
$ cd repository_test
 

 

  • git config

Git에 대한 설정을 변경하는 명령어로 매우 많은 변수가 있지만 흔히 사용하는 사용자 등록 정도만 하겠다.

git config [--global] user.name <name> : 사용자 이름을 등록, --global 옵션을 쓰면 이 PC의 모든 로컬 저장소에 기본 사용자가 된다. --global을 빼면 현재 저장소에만 적용이 된다.

git config [--global] user.email <email>: 사용자의 이메일을 등록, --global의 용도는 위와 같다.

git config [--global] --list : Git의 모든 설정 정보를 조회, --global을 쓰면 --global 옵션을 주고 설정한 전역 설정 정보를 조회한다.

 

git으로 코드 변경 사항을 저장할 때 누가 변경했는지도 함께 기록해야한다. 그러니 사용자 등록을 미리 해주자.

$ git config --global user.name <name>
$ git config --global user.email <email>
 

 

  • git status

HEAD로부터 변경 사항이 있는 파일들을 상태별로 보여준다. Untracked, Not staged, Staged, Changes to be commited 등의 상태가 있다.

 

git status는 저장소의 상태를 보여주는 유용한 명령어다. 항상 저장소의 상태를 변화 시키기 전에 확인하여 전 후 상태를 확인하는 습관을 들이면 좋다.

$ cd ~/workspace/repository_test
~/workspace/repository_test$ git status
~/workspace/repository_test$ gedit anything.py
# 내용 작성 예시
if __name__ == "__main__":
    print("hello python, hi ros.")
# 저장 후 종료
~/workspace/repository_test$ git status
 

 

  • git add

지정한 파일의 최신 상태를 인덱스에 업데이트한다. Untracked나 Modified 상태의 파일을 stage하여 commit에 변경 사항이 들어갈 수 있게 준비한다.

git add <filename> : 특정 파일을 stage 한다.

git add <pattern like *.txt> : 현재 디렉토리에서 패턴과 일치하는 모든 파일을 stage 한다.

git add . or git add -A: 현재 디렉토리와 하위 디렉토리의 모든 변경된 파일들을 stage 한다.

 

새 파일은 만든 변경 사항을 stage하고 상태를 확인해 새로운 파일이 녹색으로 표시되는지 확인한다.

$ git add .
$ git status
 

 

  • git commit

현재 인덱스 상태를 저장소에 저장한다. commit을 하면 stage한 상태까지를 저장하고 hash 혹은 checksum을 부여한다.(이 둘은 비슷하게 쓰이지만 방식이 다르다. checksum이 더 정확한 용어지만 hash라고 많이들 부른다.) Hash는 코들부터 자동으로 생성되는 40자리문자로 commit의 ID 역할이다. Hash는 git log 명령어를 통해 확인 가능하며 이를 이용해 언제든 commit 전 상태로 돌아갈 수 있다.

 

git commit -m <message> : 현재 stage된 변경사항을 message, author, hash와 함께 저장한다. -m 옵션이 없으면 Git 기본 에디터가 실행되서 그곳에서 메시지를 작성하게 한다.

git commit --amend -m <message> : 직전 commit에서 빠진게 있을 때 변경 사항을 추가하고 add 한 뒤 --amend 옵션을 붙여 commit하면 직전 commit을 없애고 추가 변경 사항까지 합친 새로운 commit을 만든다.

(변경 사항이 없더라도 단순히 commit message를 다시 쓰고자 할 때도 사용된다.)

$ git commit -m 'add new file'
$ git status
 

 

  • git push

로컬 저장소의 새로운 commit을 원격 저장소로 올린다. 현재 로컬 저장소의 파일 상태나 stage 여부에 상관 없이 오직 commit에 들어간 변경 사항만 원격 저장소로 올린다.

 

git push origin main : 저장소를 clone 받으면 main라는 기본 브랜치(branch)가 선택되고 원격 저장소는 자동으로 origin이란 이름으로 저장된다. 그래서 main 브랜치에서 작업 후 commit을 원격 저장소로 업로드 할 때 이 명령어를 쓰게된다.

git push <remote_repository> <local_branch> : local_branch의 commit들을 원격 저장소의 같은 이름의 브랜치에 올린다. 예를 들어 git push origin main는 로컬 저장소의 main 브랜치에 쌓인 commit들을 원격 저장소의 main 브랜치(origin/main)에 올린다는 것이다. 원격 저장소에 local_branch가 없을 경우 GitHub에서 자동으로 같은 이름의 브랜치를 만들어준다.

 

$ git push origin main
 

 

이렇게만 살펴보면 처음 볼 때 무슨 소리하나 싶다. 이해가 바로 안 가기에 다음 장에서 그림과 함께 풀어서 설명하겠다.