스택큐힙리스트

아직 푸시되지 않은 Git 병합을 되돌리기 본문

카테고리 없음

아직 푸시되지 않은 Git 병합을 되돌리기

스택큐힙리스트 2024. 1. 11. 23:09
반응형

저는 실수로 로컬 master 브랜치에 git merge some_other_branch를 실행했습니다. 변경 내용을 원본 master에 푸시하지 않았습니다. 병합을 취소하는 방법이 무엇인가요?


병합 후 git status는 다음과 같이 나타납니다:


# 브랜치 master에서
# 'origin/master'에 대해 앞서 올린 커밋이 5개 있습니다.

이 모든 커밋을 취소하는 방법은 무엇인가요?

답변 1

git reflog를 사용하여 병합 이전의 커밋을 확인하세요 (git log보다는 git reflog가 더 좋은 옵션입니다). 그런 다음 다음 명령을 사용하여 재설정할 수 있습니다:


git reset --hard commit_sha

또 다른 방법이 있습니다:


git reset --hard HEAD~1

이렇게 하면 1개의 커밋을 되돌릴 수 있습니다.


모든 수정된 및 커밋되지 않은/스태시되지 않은 파일이 수정되지 않은 상태로 초기화됨에 유의하십시오. 변경 사항을 보존하려면 변경 사항을 스태시하거나 아래의 --merge 옵션을 참조하십시오.


@Velmont가 아래 답변에서 제안한 대로, 다음을 사용하여 직접적인 경우:


git reset --hard ORIG_HEAD

더 나은 결과를 얻을 수 있습니다. 이렇게 하면 병합이 발생하기 직전의 커밋을 가리키는 ORIG_HEAD가 유지되므로 별도로 찾을 필요가 없습니다.

더 나아가서, 불필요하게 파일을 재설정하지 않도록 하기 위해 --hard 대신에 --merge 스위치를 사용하는 것이 좋습니다:


git reset --merge ORIG_HEAD


--merge


인덱스를 재설정하고 HEAD와 <commit> 사이에 다른 파일들을 작업 트리에 업데이트하지만, 인덱스와 작업 트리 사이에서 다른 파일들을 유지합니다 (추가되지 않은 변경 사항이 있는 파일들).


답변 2

Git 병합(merge)은 여러 개발자들이 동일한 저장소(repository)에서 작업할 때 자주 사용되는 기능입니다. 그러나 때로는 병합된 변경 사항이 원하지 않는 결과를 초래할 수 있습니다. 행여나 아직 푸시(push)되지 않은 Git 병합을 취소하고자 한다면 어떻게 해야 할까요? 이에 대해 알아보겠습니다.
Git은 변경 사항을 추적하고 이전 상태로 되돌릴 수 있는 강력한 도구입니다. 따라서 푸시되지 않은 병합을 취소하려면 몇 가지 단계를 따라야 합니다.
첫 번째로 변경 사항을 복원하고자 하는 로컬 저장소에서 다음 명령어를 사용하여 Git 히스토리를 확인합니다.
```
git log
```
이 명령을 실행하면 로컬 저장소의 커밋 기록이 표시됩니다. 취소하려는 병합에 해당하는 커밋을 식별해야 합니다.
그 다음,아래의 명령을 사용하여 복원하려는 이전의 특정 커밋으로 롤백합니다.
```
git reset --hard
```
``는 이전 상태로 롤백하고자 하는 대상 커밋의 해시 값입니다. 특정 커밋의 해시 값을 복사하여 해당 명령 부분에 붙여넣기해야 합니다.
이제 로컬 저장소는 이전 상태로 롤백되었습니다. 그러나 원격 저장소와 동기화되지 않은 상태이므로, 모든 작업자들이 이 복원을 알아채지 못할 수 있습니다.
따라서 모든 작업자들이 변경 사항을 알 수 있도록 원격 저장소를 강제로 업데이트해야 합니다. 이를 위해 다음 명령어를 실행합니다.
```
git push origin +
```
``은 원격 저장소에서 취소하려는 작업이 수행된 브랜치의 이름입니다. 이 명령은 강제 푸시(force push)를 수행하여 원격 저장소와 로컬 저장소가 동기화되도록 합니다.
이제 병합을 원래 상태로 복원하였으며, 모든 작업자들이 동일한 변경 사항을 보고할 수 있게 되었습니다.
본 문서에서는 푸시되지 않은 Git 병합의 취소 방법을 간략히 소개하였습니다. 이는 개발자들이 Git을 효과적으로 활용하여 작업 흐름을 관리할 수 있도록 도와줍니다. Git을 사용함에 있어서 주의해야 할 점은 이전 상태로 롤백하면서 수정한 내용들이 모두 삭제된다는 것입니다. 따라서 복원하기 전에 커밋된 모든 변경 사항을 백업하였는지 확인하는 것이 중요합니다.
마지막으로, 적절한 키워드 사용을 통해 검색 엔진 최적화(SEO)에 신경쓴 한국어 에세이 작성을 지향했습니다.

반응형
Comments