지난번에 Git의 영역들 (Working Tree, Staging Area, Local/Remote Repository) 에 대해 알아봤습니다. 이번에는 이들을 어떻게 활용하는지, 또 이와 관련한 명령어들은 어떤것들이 있는지에 대해 알아봅시다.
지난번 포스팅이 궁금하시다면,
https://velog.io/@msung99/git-add 를 참고하시면 되겠습니다.
또한 지난번 포스팅 내용으로 충분히 이해할 수 있다고 느끼는 부분들은 생략 또는 간단히 설명하는 방식으로 진행하겠습니다.
예를들어 cal.py 라는 파일을 작업했다고 가정해봅시다.
git add cal.py
git add .
git restore cal.py
git checkout cal.py
위에서 git add 를 통해 Staging Area 에 올렸다면, 반대로 Staging Area 에 올린 내용을 다시 Working Area 로 복귀시킬 수 있습니다.
staging area 에 존재하는 파일도 옮겨다닐 수가 있습니다.
staging area 에서 버전 생성을 위해 local repository 로 이동할 수도 있으며, 반대로 staging area 에 있던 내용들을 다시 working directory 로 복귀시킬 수도 있습니다.
git commit -m "커밋메시지"
staging area 에 있는 내용들을 local repository 로 이동시킴으로써 새로운 커밋(commit) 을 만들 수 있습니다. 커밋이란 곧 새로운 버전(version) 을 의미합니다.
1) git restore --staged cal.py
2) git reset cal.py
3) git reset HEAD (모든 staged 파일을 unstaged 로 바꾼다)
unstaged status 로 변경시킨다는 것은, working directory 로 복귀시킨다는 것을 의미합니다.
만일 본인이 원하지 않던 파일까지 실수로 stage area 로 올린경우, 다시 working directory 로 복귀시키기 위해 위 명령어들을 사용하면 좋겠죠~?
커밋메시지를 통해 비로소 생성된 새로운 commit 은 히스토리의 한 부분을 차지하게 됩니다.
우리는 로컬 레포지토리 상에서 원하는 커밋 히스토리로 되돌아가는 것도 가능할 만큼 git 을 사용하면 코드 관리가 아주 편리해지게 되었습니다!
git remote add origin "원격 레포지토리 주소"
git push origin main (main 브렌치에 push)
원하는 원격 레포지토리에 로컬 레포지토리 상에 존재하는 커밋 내역을 올려두고 싶은경우, 당연히 원격 레포지토리의 주소를 알아야 커밋을 올릴 수 있겠죠~?
따라서 원격 레포지토리에 push 하기전에 주소를 등록해야 합니다.
그러고 나서 원격 레포지토리의 main 브렌치에 push 가 비로소 가능해집니다!
git reset --hard 해시코드값
git reset HEAD^
git revert 해시코드값
(ex. version5 커밋에서 git reset --hard version2 를 하면 version5, version4, version3 을 삭제시키고 version2 로 돌아간다.)
git reset HEAD^ : 가장 최근 커밋을 삭제시키고 바로 직전의 커밋으로 되돌아감
git revert 해시코드값 : 커밋을 삭제시키는 것이 아닌, 예전 버전의 커밋에 대해 새로운 복사본 커밋을 생성하면서 커밋을 되돌아가는 느낌으로 복귀한다.
(revert 개념은 아래 블로깅 내용을 참고하시면 좋을듯합니다. 처음 git 을 접하시는 분들은 내용을 이해하기 다소 어려울 수 있습니다.)
https://velog.io/@janeljs/git-4
아래 명령어들은 절대 모르시면 정말 중요한 명령어들이니, 꼭 기억해두시면 좋을듯합니다!
- git status : 현재 레포지토리 상에서 파일의 변화 상태를 보여줌(status 상태)
- git log : 현 브렌치에 대한 커밋 히스토리를 보여줌
- git diff : 파일의 어떤 내용이 변경되었는지 차이점을 비교할 수 있다.
git status 예시
git log 예시