본문 바로가기

git & github/git & github 기초

[git & github 기초] 5. 브런치, 커밋 삭제

1. 커밋을 삭제하는 방법

 

삭제할 브런치 생성

 

 

파일생성 ( 상황을 위해 세팅하는 과정 )

staging area에 file1.txt 파일 추가

 

 

삭제하는 과정 파악하기 위해 임의로 여러 커밋들을 등록

 

세번쨰 커밋

 

파일 2개 추가

 

 

 

세팅 완료! log 확인

 

 

앞서 만든 파일들은 모두 커밋했으므로 추적이 가능!

 

# 삭제하는 방법은?

 

첫번째 방법 : 파일 직접 삭제

 

직접삭제 => 스테이징 영역으로 이동 => 취소상태로 변경

 

두번쨰 방법 : 명령어입력

git rm file2.txt

근데 삭제가 되지 않았다! 이유는 현재 위치가 git-basics이므로 찾지 못함! 경로를 잘 알려줘야함

 

위치 이동후 명령어 실행

 

차이점이 있다! 첫번째 방식으로 진행할 경우 스테이징 영역에 수정사항을 추가해야한다. (빨간색은 삭제된 상태)

이제 이 상황을 커밋하면 수정사항이 반영됨! 즉, rm같은 명령은 스테이징에서 커밋하는 단계를 스킵해준다.

 

 

 

근데 생각해보니 잘못 삭제해서 다시 복구하고 싶은 경우 복구가 가능할까?

 

2. 삭제한 커밋 복구하는 방법

명령어 : git reset --hard HEAD~1 ( 최근 삭제한 1개의 커밋을 복구 ) ~2,~3 도 가능

명령어 입력과 동시에 file2, 3가 복구된 것을 확인할 수 있다.

 

# reset 명령어는 브런치에 올라간 커밋을 되돌리는 것이므로 커밋을 삭제할 때 사용할 수도 있다. ( 생성 전으로 되돌리는 효과 = 삭제 )

 

 

3. Branch를 삭제하는 방법

명령어 : git branch -D "브런치명"

 

현재 작업중인 브런치 확인

 

현재 작업중인 브런치는 삭제할 수 없는 것 같다.

 

현재 작업중이 브런치가 아닌 feature를 삭제했더니 브런치가 정상적으로 삭제된 것을 볼 수 있다.

 

3.1 staging area에 추가되지 않은 사항 삭제하는 방법

 

수정사항 저장

 

명령어 git checkout -- .

 

실제로 사용할 상황은 파일 수정한 뒤 스테이징 영역에 올리지 않은 상태의 파일 즉, 트랙 파일이 아닌 파일을 되돌릴 때 사용하고 git status명령을 통해 파일이 트랙파일인지 아닌지 알 수 있다.

 

3.2 staging area에 추가 된 경우 브런치 삭제하는 방법

 

step 1. git add . 으로 file1.txt 파일을 트랙파일로 만듬

step 2. git reset file1.txt 명령은 file1.txt파일을 staging area에서 벗어나게함 즉, 트랙파일이 아닌 상태로 만듬

 

나머지 과정은 2.1과 동일 " git checkout -- ."입력 시 제일 최근 커밋으로 되돌아감= 스테이징 되지 않은 수정사항을 되돌림

수정사항이 되돌아간 것을 확인할 수 있다. ( 커밋할 거 없는거 status로 확인 )