add
,commit
을 이용하여 변경사항 관리
git
은 프로젝트의 변경사항들을 파일 즉 하나의 공간에 넣어 전송한다.
이 때 하나 혹은 모든파일을 담아 전송할 수 있다.
변경사항을 확인해보면 다음과 같다.
현재 3개의 파일이 Untracked files
로 나타난다.
Untracked files
는 추적하지 않는(Untracked
) 즉 파일로 git
의 관리에 들어간 적 없는 파일을 의미한다.
다음 파일들을 전송하기 위해 버전에 담는다. 이 때 하나 혹은 모든 파일을 담을 수 있다.
git add 파일명
git add .
파일들을 전부 버전에 담으면 전송할(commit
) 준비가 완료된다.
commit
은 버전에 담은 파일을 전송한다.
이 때 커밋 메세지 또한 함께 전송하여 각각의 commit을 구분할 수 있다.
git commit -m "FIRST COMMIT"
위에서 버전에 담은 파일들을 commit
하면 다음과 같다.
만약 새로 추가된(untracked
) 파일이 없을 때는 add
와 commit
을 한번에 수행할 수 있다.
git commit -am "(메시지)"
commit
이 후 git log
를 사용하면 최신순으로 commit history
를 확인할 수 있다.
git log
Reset
,Revert
를 이용하여 과거의 프로젝트로 이동
git
에서는 Reset
, Revert
를 이용하여 과거의 시점으로 이동한다.
reset
: 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다.
revert
: 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.
git log
, 소스트리(GUI)
를 사용해 현재 commit
상태를 확인해보면 다음과 같다.
총 5가지의 commit
이 발생하였고 각각의 commit
은 고유한 커밋 해시를 가지고 있다.
이 때 reset
을 사용하여 1단계 전인 Add team Cheetas
단계로 이동해보겠다.
reset
은 다음과 같은 방법으로 사용한다.
git reset --hard (돌아갈 커밋 해시)
위의 코드를 입력하고 소스트리(GUI)
를 확인해보면 바로 전 commit단계인 Add team Cheetas
단계로 이동한 것을 확인할 수 있다.
또한 reset
뒤에 커밋 해시가 없으면 마지막 커밋을 가리키기 때문에 reset
을 하기 전 시점으로 복원할수도 있다.
git reset --hard
reset
은 내가 돌아갈 지점의 커밋 해쉬를 입력했지만 revert
는 취소할 커밋 해쉬를 입력한다.
git revert (되돌릴 커밋 해시)
현재 commit
상태를 확인해보면 다음과 같다.
여기서 revert
를 사용해 2단계 전 Add George to Tigers
의 커밋 해쉬를 입력한다.
git revert 9370f7292ca61d53cc40b95cb240ad1898c5bd47
실행결과를 확인해보면 revert
는 reset
과 다른 2가지 차이점이 발생한다.
Add George to Tigers
의 커밋의 단계를 반대로 수행하는 새로운 commit
이 생성된것을 확인할 수 있다.
reset
은 되돌아가는 시점 이후의 commit
을 모두 삭제하지만 revert
는 삭제하지 않는다.
다음 명령어를 사용하면 revert
를 한뒤 commit
을 사용자가 수동적으로 할 수 있다.
git revert --no-commit (되돌릴 커밋 해시)
또한 revert
전 단계 시점 으로 되돌아가고 싶다면 앞서 배운 reset
을 활용할 수 있다.
git reset --hard