내가 마주친 Git 에러..

DaramGee·2023년 12월 11일
0

Git & GitHub

목록 보기
3/4

깃 풀 일부만 될 경우 해결(관련 링크)

https://y00n-lee.tistory.com/39

!https://velog.velcdn.com/images/jeeyeon116/post/507187d9-1e64-40e4-a14e-6d16b4d8294f/image.png

git master 삭제하기

git branch -d master 명령은 로컬 Git 저장소에서 master 브랜치를 삭제하는 과정입니다. 아래는 자세한 단계입니다:

  1. 터미널 또는 Git Bash와 같은 Git 명령을 실행할 수 있는 환경에서 작업합니다.

  2. 로컬 Git 프로젝트의 디렉토리로 이동합니다.

  3. 다음 명령을 실행하여 master 브랜치를 삭제합니다:

    git branch -d master
    

    이 명령은 현재 체크아웃된 브랜치가 아닌 다른 브랜치에서 실행되어야 합니다.

  4. 만약에 master 브랜치가 현재 체크아웃된 상태라면, 오류 메시지가 표시됩니다. 이 경우에는 다른 브랜치로 전환한 후에 삭제해야 합니다.

  5. 성공적으로 master 브랜치가 삭제되면, 해당 내용이 로컬 Git 저장소에 반영됩니다.

주의할 점은, 위 과정은 로컬 Git 저장소에서만 master 브랜치를 삭제하는 것이며, 원격 저장소에는 영향을 주지 않습니다. 원격 저장소에서도 master 브랜치를 삭제하고 싶다면, 추가적으로 git push origin :master 명령을 실행해야 합니다.

커밋을 과거로 되돌리기

  • Alice는 버튼의 색깔을 바꾸는 작업들을 커밋했으나 모든 게 잘못됐다는 것을 깨달았다.
  • 모든 버튼의 색깔을 똑같이 만들기 위해 과거 버전으로 돌아가 코드를 다시 작성하고자 한다.

우선 돌아가고 싶은 버전의 커밋 해시(21929f8)를 확인한다.

$ git reflog
28ca4ca HEAD@{0}: commit: 오른쪽 버튼 색깔을 파란색으로 변경
8eefd4a HEAD@{1}: commit: 가운데 버튼 색깔을 초록색으로 변경
21929f8 HEAD@{2}: commit: 왼쪽 버튼 색깔을 빨간색으로 변경

그리고 reset을 이용해 헤드를 특정 커밋으로 옮긴다. reset의 기본 옵션은 --mixed이며, 작업 디렉토리는 그대로 유지한 채 헤드와 인덱스를 변경한다. --hard 옵션의 경우 작업 디렉토리와 헤드, 인덱스를 모두 변경한다. 마지막으로 --soft 옵션은 헤드만 변경한다.

$ git reset --hard 21929f8

코드를 수정한 뒤, 파일을 스테이징하고 다시 커밋한다.

$ git add *
$ git commit -m "모든 버튼 색깔을 노란색으로 변경"

이 방법을 사용하면 되돌린 커밋 히스토리가 모두 사라진다. 커밋이후 --force으로 푸시하면 이미 푸시한 커밋까지 되돌릴 수도 있지만, 권장하는 방법은 아니다.

푸시한 커밋을 과거로 되돌리기

  • Alice는 버튼의 색깔을 바꾸는 작업들을 커밋, 푸시했으나 모든 게 잘못됐다는 것을 깨달았다.
  • 모든 버튼의 색깔을 똑같이 만들기 위해 과거 버전으로 돌아가 코드를 다시 작성하고자 한다.

revert 명령을 사용하면 된다. revert는 reset과 달리 커밋 히스토리를 남긴다. 협업을 하는 상황에서 이미 푸시한 커밋을 되돌리고 싶다면 reset 보다는 revert를 사용하는 것이 좋다. 먼저 돌아리고 싶은 버전의 커밋 해시들(21929f88eefd4a28ca4ca)을 확인한다.

$ git reflog
28ca4ca HEAD@{0}: commit: 오른쪽 버튼 색깔을 파란색으로 변경
8eefd4a HEAD@{1}: commit: 가운데 버튼 색깔을 초록색으로 변경
21929f8 HEAD@{2}: commit: 왼쪽 버튼 색깔을 빨간색으로 변경

그리고 되돌리고 싶은 커밋의 범위를 지정해 revert를 실행하고, 에디터에서 커밋 메시지를 작성한다. 만약 특정 하나의 커밋만 되돌리고 싶다면 커밋 해시를 하나만 입력해도 된다.

$ git revert 21929f8...28ca4ca
Revert "왼쪽 버튼 색깔을 빨간색으로 변경"
Revert "가운데 버튼 색깔을 초록색으로 변경"
Revert "오른쪽 버튼 색깔을 파란색으로 변경"

푸시하면 버튼의 색깔을 바꾼 작업들이 취소된다.

$ git push origin master

히스토리에는 세 개의 커밋이 추가된 것을 볼 수 있다.

$ git reflog
132bf27 HEAD@{0}: commit: Revert "오른쪽 버튼 색깔을 빨간색으로 변경"
b2c409f HEAD@{1}: commit: Revert "가운데 버튼 색깔을 초록색으로 변경"
4ef1104 HEAD@{2}: commit: Revert "왼쪽 버튼 색깔을 파란색으로 변경"
28ca4ca HEAD@{3}: commit: 오른쪽 버튼 색깔을 파란색으로 변경
8eefd4a HEAD@{4}: commit: 가운데 버튼 색깔을 초록색으로 변경
21929f8 HEAD@{5}: commit: 왼쪽 버튼 색깔을 빨간색으로 변경

0개의 댓글