[문과 코린이의 IT 기록장] Git 시간 다루기 (프로젝트의 변경사항들을 버전에 담기, commit하기, 변경사항들을 만들고 Commit하기, Git에서 과거 버전으로 돌아가는 방식, SourceTree로 진행해보기)
[ 참고 영상 ]
1. 프로젝트의 변경사항들을 버전에 담기
1) 변경사항 확인
$git status
* No commits yet : 아직 commit이 없다. (commit = version)
* Untracked files : 아직 Git의 관리에 들어간 적 없는 파일
2) 파일 하나 담기
$git add 파일명
* 변경사항은 $git status로 확인한다.
cf. 프로젝트에서 어떤 작업들을 했을 때, 이들을 한 버전에 모두 넣는 것이 아니라, 버전마다 다르게 넣고 싶을 경우가 존재할 수도 있음. 이 때 사용하는 것. (일반적으로는 모든 파일을 한번에 담는 경우가 많음)
3) 모든 파일 담기
$git add .
* 변경사항은 $git status로 확인한다.
2. commit하기 = 새로운 버전으로 만들기
$git commit
이 명령어를 사용하면, Vi 입력 모드로 진입하게 된다.
- Vi입력 모드 작업 방법
작업 | Vi 명령어 | 상세 |
입력 시작 | i | 명령어 입력 모드에서 텍스트 입력 모드로 전환 |
입력 종료 | ESC | 텍스트 입력 모드에서 명령어 입력 모드로 전환 |
저장 없이 종료 | :q | |
저장 없이 강제 종료 | :q! | 입력한 것이 있을 때 사용 |
저장하고 종료 | :wq | 입력한 것이 있을 때 사용 |
위로 스크롤 | k | git log 등에서 내역이 길 때 사용 |
아래로 스크롤 | j | git log 등에서 내역이 길 때 사용 |
a. i명령어를 사용해, commit 이름을 입력하기
b. ESC를 눌러 빠져나오기
c. :wq를 통해 저장(commit)하고 종료하기
d. git status를 사용해 제대로 commit 되었는지 확인하기
$git commit -m "FIRST COMMIT"
# 이러한 형태로도 git commit을 사용할 수 있음.
3. 변경사항들을 만들고 Commit하기
1) 변경사항 만들기
* U : 새로 만들어진 파일
* M : 수정된 파일
2) 변경사항 확인하기
* Untracked files : git이 관리해본적 없는 파일이 뜬다.
3) 변경사항 조금 더 구체적으로 확인하기
$git diff
작업 | Vi 명령어 | 상세 |
위로 스크롤 | k | git log 등에서 내역이 길 때 사용 |
아래로 스크롤 | j | git log 등에서 내역이 길 때 사용 |
끄기 | :q | :가 입력되어 있으므로 q만 눌러도 됨 |
4) 이 모든 내용들을 commit하는 방법
$git add .
# 모든 것을 버전에 넣을 준비 (모든 것을 파일에 담기)
$git status
# git status로 확인하기
$git commit -m "Replace Lions with Leopards"
$git log
# 새로운 버전이 만들어진 것을 확인하기 (두 개의 버전이 존재하는 것을 확인하기)
5) add와 commit을 한 번에 하는 방법
$git commit -am "(메시지)"
# 이는 새로 추가된(untracked) 파일이 없을 때만 가능하다.
6) commit 메세지 변경하는 방법
a. 마지막 commit 메시지 수정하기
$git commit --amend -m "바꿀 메시지"
b. 이전 commit 메시지 수정하기
$git rebase -i HEAD~3
# HEAD~3은 마지막부터 몇개의 커밋 메시지를 불러올 것인지를 결정하는 것
# 1) 이후 수정하고 싶은 Commit 내역의 pick을 reword로 바꾸기
# 2) :wq를 눌러 터미널을 종료하기
# 3) 메시지 변경 후 다시 :wq를 눌러 저장해 종료하기
4. Git에서 과거 버전으로 돌아가는 방식
a. reset : 원하는 시점으로 돌아간 뒤, 이후 내역들을 지운다. (시점을 아에 과거로 되돌리는 것)
b. revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다. (버전을 뒤로 돌아가는 내역을, 하나 더 추가한다는 것. 즉 내역을 그대로 유지함)
1) reset 사용방법
$git log
# 아래 명령어로 커밋 내역 확인하기
# 되돌아갈 시점에 대한, 커밋 해시 복사 (전체 다 할 필요 X. 앞의 몇 개만 하면 됨)
$git reset --hard (돌아갈 커밋 해시)
2) revert 사용방법
$git revert (되돌릴 커밋 해시)
# :wq로 커밋 메시지 저장 후, 확인해보면, 새로운 revert 버전이 하나 더 생김
* 만약 Second commit의 내용 중 한 부분이 수정되어 hard에 저장되었는데, Second commit으로 revert를 하게 되면?
=> 해당 수정 부분에 대한 충돌이 일어나면서 오류가 발생한다.
=> git add 또는 rm을 사용해줘야 함. (add를 사용해서, 해당 파일 내용을 담거나, 아님 rm으로 삭제를 해줘야함)
=> 이후 git revert --continue를 통해 지속해주기
[ 커밋하지 않고 revert 하기 ]
$git revert --no-commit (되돌릴 커밋 해시)
# 원하는 작업을 추가한 다음 함께 커밋한다.
# 파일을 add로 추가한 상태로만 만들어준다.
# 즉, revert하는 것 뿐만 아니라 다른 변화도 함께 묶어서 캡슐에 넣고 싶은 경우 사용한다.
[ 커밋되지 않은 것들을 모두 지우고, 마지막 commit의 상태로 돌아가고 싶을 때 ]
$git revert --hard
5. SourceTree로 진행해보기
1) commit 진행
a. 스테이지에 올리기
- add를 하는 과정과 같음
b. 커밋하기
- 커밋 버튼 누른 후, 메시지에 커밋명을 작성하면 완료
2) revert 진행
3) reset 진행
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |