Git
git revert
: 해당 커밋을 취소하고 기존 변경사항을 유지하는 커밋을 새로 생성한다.
git reset
: 해당 커밋으로 돌아가며 해당 커밋보다 최신의 커밋은 로그상에서 삭제한다.
git branch
: 작업공간
. 같은 디렉토리에서 동시에 여러개의 작업 공간을 가질 수 있으며 나중에 합칠수도 있다.
git commit


touch one
ls
git status
git add .
git commit -m 'v1'
git log --graph
- 위의 명령어를 이용해
one
파일을 추가해 준 후 첫번째 커밋을 해준다.
- 완료한 후 로그를 보면 위 사진처럼 나온다.

touch two
git add .
git commit -m 'v2'
git log --graph
- 같은 방식으로
two
라는 이름을 가진 파일을 생성 후 2번째 커밋을 해준다.
- 같은 방식으로
three'
라는 이름을 가진 파일을 생성 후 v3
이라는 이름으로 커밋해준다.
git revert


- 3번째 커밋까지 진행한 후 최종 디렉토리와 로그의 상태는 위와 같다.
git revert {commit_id}
commit_id
를 취소하며 + 기존에 변경사항을 유지하는 커밋을 새로 만든다.
- 예를 들어 2번째 커밋으로
revert
한다면 2번째 커밋내용을 취소하고 기존 변경사항을 추가하는 새로운 커밋을 만든다.
- ▼예시▼

git log --graph
ls
git revert {commit_id}
- 처음엔
v1
v2
v3
세개의 커밋이 존재했으며 ls
명령어를 통해 one
two
three
세개의 파일이 존재함을 확인할 수 있었다.
git revert {v2_commit_id}
명령어를 사용해준다.

- 위와 같은 화면이 나오는데
wq
명령어로 저장확인을 해주면 v2
커밋을 취소하고 기존 변경사항을 반영한 상태인 one
three
파일만 존재함을 확인할 수 있다.

- 마지막으로 로그 확인을 통해 새로운 커밋이 생겼음을 확인할 수 있다.
git reset

git reset {commit_id}
는 해당 커밋보다 최신의 커밋들을 다 지우고 해당 커밋으로 이동한다.
v3
커밋을 예로들면 git log
명령어를 통해 v3
커밋의 아이디를 복사한 후 git reset {v3_commit_id} --hard
명령어를 사용해 주면 된다.
- 위의 로그에서
v3
커밋보다 최신 커밋인 Revert "v2"
커밋은 지워지게 된다.

git log --graph
git reset {v3_commit_id} --hard

git log --graph
git log --graph
명령어를 통해 4번째 커밋이 사라졌음을 확인할 수 있다.
- 최종적으로 남은 파일은
v3
커밋으로 돌아갔으므로 one
two
three
세개의 파일이 존재한다.
git branch
git branch
: 브랜치 목록 나열.
git branch {branch_name}
: 현재 브랜치를 기준으로 새로운 브랜치 생성.
git checkout {branch_name}
: 해당 브랜치로 작업공간 변경.

- 위의 사진에서
ls
명령어를 통해 one
two
three
파일 세개가 존재한다.
branch
를 통해 다른 작업공간을 가질 수 있다.
git branch

- 명령어를 입력하면 위의 화면이 나온다,
main
브랜치만 존재함을 알 수 있다.
git branch
명령어는 현재 branch
의 목록들을 나열해준다.
git branch second

git beranch second
명령어를 입력하면 second
라는 이름을 가진 branch
를 하나 생성한다.


- 생성 후
git checkout second
명령어로 second
라는 이름을 가진 브랜치로 이동이 가능하다.
- 이동 후
ls
명령어를 통해 현재 디렉토리의 파일들을 나열하면 main
브랜치와 같다는걸 확인할 수 있다.
main
브랜치와 second
브랜치의 파일들은 현재 같은 상태다.
second
브랜치의 파일을 수정, 삭제, 추가해도 main
브랜치에 영향이 가지 않는다.
- 반대로
main
브랜치의 파일을 수정, 삭제, 추가해도 second
브랜치에 영향이 가지 않는다.
q
를 입력하면 나올 수 있다.