[문제해결] Git - 다른 브랜치에서 작업했을때

JooSehyun·2024년 4월 23일
0

문제해결

목록 보기
14/15
post-thumbnail

[문제해결] Git - 다른 브랜치에서 작업했을때


나의 브랜치에서 작업을 해야하는데 여러 브랜치에서 머지 작업을 하고나서 내 브랜치checkout 하지 못했고 다른 브랜치에서 작업한 것을 git stash 해서 갖고와야했다.


  1. 일단 해당 브랜치에서 git log로 확인
commit 번호 (HEAD -> dev, origin/jaiden_01, origin/dev, jaiden_01)
Author: shjoo
Date:   Tue Apr 23 14:10:11 2024 +0900

    [kds] 콘솔로그 정리2

commit 번호
Merge: 91dafcc 0b5bcd8
Author: shjoo
Date:   Tue Apr 23 13:33:46 2024 +0900

    Merge branch 'dev' of https://깃주소 jaiden_01

commit 91dafcc17656297d52922bf2fdc52f743b74c275
Author: shjoo
Date:   Tue Apr 23 13:32:35 2024 +0900

    [kds] 콘솔로그 정리1

나는 [kds] 콘솔로그 정리2 의 커밋을 갖고와서 원상복구를 시키고 싶었다.


  1. dev(잘못한 브랜치)에서 변경사항 스태시에 저장하기 : git stash

이 명령은 현재 dev 브랜치에서의 변경사항을 스태시에 임시로 저장한다.


  1. dev 브랜치를 이전 상태로 되돌리기: git reset --hard HEAD^

이 명령은 dev 브랜치를 이전 커밋으로 되돌린다.

commit 번호 (HEAD -> dev, origin/jaiden_01, origin/dev, jaiden_01)
Author: shjoo
Date:   Tue Apr 23 14:10:11 2024 +0900

    [kds] 콘솔로그 정리2

나는 저 커밋으로 되돌리기 위해 해당 커밋 번호 를 넣어준다.


git reset --hard 번호

🕵️git reset 명령어의 옵션들에 대한 특징

  • --soft :
    이 옵션을 사용하면 작업 디렉토리와 인덱스는 해당 커밋의 상태로 변경된다. 하지만 변경사항은 그대로 남아 있다.
    이전의 변경사항을 취소하고, 해당 커밋 이후의 변경사항을 다시 커밋할 수 있도록 준비된 상태로 남는다.

  • --mixed (기본 옵션) :
    이 옵션을 사용하면 작업 디렉토리는 해당 커밋의 상태로 변경되지만, 인덱스는 초기화된다. 따라서 변경사항은 취소되지만, 변경된 파일은 스테이징 영역에 남아 있다.
    변경사항을 취소하고 새로운 변경사항을 스테이징 영역에 추가하여 커밋할 수 있다.

  • --hard :
    이 옵션을 사용하면 작업 디렉토리와 인덱스는 해당 커밋의 상태로 완전히 초기화된다. 즉, 이전의 변경사항은 모두 삭제된다.
    변경사항을 완전히 취소하고 해당 커밋 이후의 상태로 돌아간다. 주의해서 사용해야 하며, 변경사항이 영구적으로 삭제된다.
    이러한 옵션들을 사용하여 git reset 명령어를 사용할 때, 작업하고자 하는 변경사항의 상태에 따라 적절한 옵션을 선택하여 사용해야 한다.


  1. 원래 작업하려던 브랜치로 체크아웃 : git checkout 브랜치

  1. 스태시에 저장된 변경사항 가져오기 : git stash pop

이 명령을 실행하면 스태시에 저장된 변경사항이 현재 브랜치에 적용된다. 이때 스태시는 자동으로 삭제된다.


🕵️git stash 명령어의 옵션들에 대한 특징

  • pop :
    git stash pop 명령어는 가장 최근의 스태시를 스택에서 꺼내와서 적용한다.
    스태시를 적용한 후에는 해당 스태시가 스택에서 삭제된다.

  • apply :
    git stash apply 명령어는 가장 최근의 스태시를 스택에서 꺼내와서 적용한다.
    pop과 달리 스태시를 적용한 후에도 해당 스태시는 스택에 남아 있다.
    따라서 apply를 사용하면 스태시를 적용하면서도 해당 스태시를 나중에 다시 사용할 수 있다.

  • clear :
    git stash clear 명령어는 현재 저장된 모든 스태시를 삭제한다.
    이 명령을 실행하면 스태시 스택이 비워진다.

  • drop :
    git stash drop 명령어는 가장 최근의 스태시를 스택에서 삭제한다.
    스태시를 삭제하면서 해당 변경사항은 영구적으로 삭제된다.
    이렇게 서브커맨드를 사용하여 스태시를 다룰 수 있다. 선택할 서브커맨드는 스태시를 어떻게 다루고자 하는지에 따라 달라진다.


  1. 변경된 내용들을 확인하고 커밋, 푸시 한다.

0개의 댓글