먼저 제일 처음 git init 명령어를 사용하면 새로운 Git repository가 만들어진다.
init 명령어를 사용해 만든 repository에서 새로운 파일을 추가한 후, git status 명령어를 사용하면 이런 화면이 나온다. 새로운 파일은 추적되지 않은 파일이라고 나타내어진다. 그 다음 git add <파일명> 명령어를 사용하면 새로운 파일이 커밋된다.
git config 명령어를 사용해 지금 이 작업을 누가 진행하는지를 알려줄 수 있다. user.name과 user.email 즉, 이름과 이메일을 입력하면 된다. (--global이란 옵션을 사용해 모두가 알 수 있게 한다.)
git commit 명령어를 실행하면 현재 버전에 대한 정보를 조회, 입력할 수 있다.
이 화면은 commit 명령어를 입력했을 시에 나타난다.
그리고 내용을 입력한 후 돌아오면 이런 화면이 나온다.
git log 명령어를 실행하면 현재 버전에 대한 간략한 정보를 볼 수 있다.
git reset 명령어를 사용하면 과거 버전으로 돌아갈 수 있다. 이때 옵션에 따라 상태가 달라지는데 --hard 옵션을 사용하면 돌아가고 싶은 버전 이후의 모든 것이 reset된다. 이 화면은 버전 2를 삭제하고 버전 1으로 돌아가는 과정이다. (중간의 git reset과 아무것도 치지 않은 것은 이 과정과 관계가 없다.)
git branch 명령어를 실행하면 현재 사용중인 branch가 무엇인지 알려준다.
새로운 branch를 만들고 싶으면 git branch <branch 이름> 명령어를 사용하면 된다.
그리고 다른 branch로 이동하고 싶을 때에는 git checkout 명령어를 사용하면 된다.
branch를 병합하고 싶으면 git merge 명령어를 사용하면 된다. exp branch를 master branch에 병합하고 싶으면 git merge <branch 이름> 명령어를 사용하면 되는데 이때 꼭 master branch로 checkout 해야한다.
git clone 명령어를 사용하면 repository를 복사할 수 있다. 예를 들어 github에 있는 git이란 repository를 복사하려면 이렇게 주소를 복사한 후,
git clone <주소> <복사할 directory> 명령어를 사용해주면 복사가 완료된다.
원격 저장소(여기선 github)를 현재 local 저장소에 추가하려면 git remote 명령어를 사용하면 됩니다. git remote add (별명) <원격 저장소 주소> 이런 식으로 사용해주는 것이 일반적입니다.
로컬 저장소에서 작업한 파일을 원격 저장소에 올리고 싶을 때에 git push 명령어를 사용한다. git push -u <원격저장소> <로컬저장소> 의 형태로 사용하면 된다. (-u는 다음에도 push를 할 때에 같은 원격 저장소에 저장한다는 뜻이다.)
명령어를 실행하면 github에 로그인을 해야하고 그 후 다시 돌아오면 이런 상태가 된다.
이번엔 원격 저장소에 있는 파일을 로컬 저장소에 불러오고 싶을 때, git pull 명령어를 사용하면 된다. 이 화면은 origin이라는 원격 저장소에서 master라는 로컬 저장소에 파일을 불러오는 화면이다. (아직 바뀐 내용이 없기 때문에 이런 화면이 뜬다.)
git tag 명령어를 사용하면 tag를 만들 수 있다. 가장 최신의 커밋에 태그를 만들고 싶으면 git tag <버전> <branch 이름> 이런 식으로 작성하면 된다.
그 후, 태그를 원격 저장소에 추가하고 싶으면 git push --tags 명령어를 사용하면 된다.
만약 새로운 branch를 만들고 그 branch를 병합하고 싶을 때에 merge와는 조금 다른 방식으로 작동하는 것이 rebase이다. 예를 들어 new라는 branch를 만들고 최신 base를 master로 변경하고 싶을 때에 new branch로 checkout한 후, git rebase master 명령어를 입력하면 다음과 같은 상태가 된다.
init | status | add | config | commit | log | reset | branch | checkout | merge | clone | remote | push | pull | tag | rebase |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O | O | O | O | O | O | O | O | O | O | O | O | O | O | O | O |