Git을 사용하기 위한 방법은 두 가지가 있습니다.
첫 번째는 커맨드를 활용하는 방법입니다. Git은 기본적으로 CLI 환경에서 커맨드를 입력하여 파일을 Push 하거나, Commit 하거나, Clone 등을 할 수 있습니다.
두 번째는 Git GUI를 활용하는 방법입니다. Git GUI를 활용하면 커맨드가 익숙하지 않은 사람들에게 UI 형식으로 Git의 명령어를 대체할 수 있도록 도와줄 수 있습니다. GUI의 종류에는 GitHub Desktop, Sourcetree, GitKraken 등이 있습니다.
"GUI 쓰면 되는데 왜 굳이 터미널에서 명령어를 입력하는 방법을 배워야 돼?" 라고 생각할 수도 있습니다.
사실 반은 맞고 반은 틀립니다. GUI가 눈에 보이니까 편한 것은 사실이지만, Git의 모든 명령어가 GUI에 포함되어 있지 않을 수도 있습니다. 즉, 내가 원하는 기능이 GUI에 없을 수도 있다는 것입니다. 그리고 익숙해진다면 명령어를 입력하는 방식이 GUI보다 빠를 수 있습니다. GUI는 Git의 기능을 수행하기 위해서 GUI 프로그램을 실행시키고 버튼을 찾아서 클릭을 해야 합니다. 하지만 커맨드 방식은 터미널에 바로 명령어만 타이핑하고 대부분 엔터만 치면 되니까 간편합니다.
CLI 방식의 Git을 활용하기 위해서는 명령어를 알아야합니다. 하지만 Git에는 명령어가 상당히 많습니다.
직접 홈페이지에 들어가보시면 사진에 보이는 것보다 더 많은 명령어가 모여있는 것을 볼 수 있습니다. 저 많은 명령어들을 다 외울 수는 없으니 자주 사용되는 명령어들만 눈에 익혀두고 필요한 명령어는 직접 찾아서 쓰는 방법이 효율적입니다.
Git에서 자주 쓰이는 명령어는 아래와 같습니다.
git 최초 설정
git config --global user.name "name" # 사용자 이름 설정
git config --global user.email "email" # 사용자 이메일 설정
git config --global init.defaultBranch main #기본 브랜치 이름을 main으로 변경
git 프로젝트 생성
git init
git 상태 출력
git status
Working Directory의 파일을 Staging Area로 이동
git add file name
git add . # 모든 파일을 Add
git add -p # hunk별로 staging 수행
Staging Area의 파일을 Repository로 이동<
git commit
git commit -m "commit message" # 커밋 메시지와 함께 커밋
git commit -am "commit message" # 새로 추가된 파일이 없을때만 사용 가능, 커밋 메시지와 함께 커밋
원격 저장소와 연결하기
git remote add origin <remote repository address>
원격 저장소에 commit 반영하기
git push
git push -u origin <branch name> # 현재 브랜치를 원격의 브랜치와 연결
원격 저장소에서 commit 가져오기
git pull
원하는 시점으로 돌아간 뒤 이후 내역 삭제
git reset --hard # commit 내역과 변경 내역 모두 삭제
git reset --mixed # commit 내역은 사라지지만, 변경 내역을 stagine area에 남겨둠
git reset --soft # commit 내역은 사라지지만, 변경 내역을 working directory에 남겨둠
git reset --hard <commit hash> # commit hash를 입력하면 해당 커밋을 reset, 없다면 마지막 커밋을 reset
원하는 시점으로 돌아간 뒤 해당 커밋을 거꾸로 실행
git revert <commit hash>
git revert --no-commit <commit hash> # 커밋하지 않고 revert
브랜치 생성
git branch <branch name>
브랜치 목록 확인
git branch
브랜치 이동
git switch <branch name>
브랜치 삭제
git branch -d <branch name>
브랜치 이름 변경
git branch -m <current branch name> <new branch name>
다른 브랜치의 내용을 내 브랜치로 가져와서 병합
git merge <branch name>
내 브랜치의 내용을 다른 브랜치에 이어 붙이기
git rebase <branch name>
원격 저장소 프로젝트 복제
git clone <remote repository address>
원격의 변경사항 확인
git fetch
HEAD 이동
git checkout HEAD<^> # ^의 갯수만큼 HEAD를 뒤로 이동
git checkout <commit hash> # 현재 커밋에서 해당 커밋으로 HEAD 이동
git checkout <tag name> # 원하는 태그로 체크아웃
기존 변경된 작업들 보관하기
git stash
git stash -p # 원하는 작업만 stash
git stash -m "commit message" # 메시지와 함께 stash
git stash pop # stash 해놓은 작업을 다시 적용
git stash drop #: 마지막 stash 삭제
커밋 메시지 변경하기
git commit --amend
git commit --amend -m 'commit message'
변경된 파일 복구하기
git restroe <file name>
git restore . # 모든 파일 변경상태 복구
git restore --staged <file name> # 변경상태를 staging area에서 working directory로 돌려놓음(add 취소)
git restore --source=<commit hash> # 파일을 특정 커밋의 상태로 돌려놓음
커밋에 태그 달기
git tag <tag name>
git tag <tag name> <commit hash> -m <commit message> # 원하는 커밋에 메시지와 함께 태그 달기