최근에 회사에서 fetch된 데이터를 pull로 가지고 오려고 하였으나 현재 사용 중인 데이터와 commit 이력이 꼬여 에러가 발생했습니다.
fatal: 정방향이 불가능하므로, 중지합니다.
우선 해당 에러의 원인은 remote 저장소가 local 저장소보다 앞서 있고 merge할 게 있을 때 데이터 충돌로 인하여 에러를 발생하는 것입니다.
제가 진행한 방식은 다음과 같습니다.
git add .
git commit -m "rebase a data"
git pull --rebase
지금까지의 변경 사항을 데이터를 commit하고 이전의 데이터를 pull --rebase로 변경 사항을 가져와 commit이력 사항을 재배치하였습니다. 상황에 따라 git pull --rebase만 처리하여 가져올 수 있습니다.
git pull 과 git pull --rebase의 차이점
우선 git pull과 git pull --rebase는 둘 다 원격 저장소에 변경 사항을 가져와 로컬 저장소와 병합하는 명령어입니다.
git pull부터 설명하자면 두 가지 작업을 수행합니다.
- git fetch : 원격 저장소에서 변경 사항을 가져와 로컬 브랜치의 원격 추적 브랜치를 업데이트합니다.
- git merge : 가져온 변경 사항을 현재 작업 중인 로컬 브랜치에 병합합니다. 그리고 병합 commit을 생성합니다.
두과정을 통하여 로컬 브랜치가 자동으로 병합됩니다.
git pull --rebase명령은 한가지 차이점이 있습니다.
- git rebase: 가져온 변경 사항을 현재 작업 중인 로컬 브랜치의 변경 사항과 재배치합니다. 이것은 새로운 커밋을 생성하지 않고 변경 사항을 이전 커밋의 뒤에 붙입니다.
두 명령어의 차이점은 commit 이력을 전부 관리할지 아니면 선형적으로 관리할지에 대한 차이가 있습니다. 이력 관리에 따라 사용하면 됩니다. 저는 수정 이력을 간단하게 정리하고 싶어 git pull --rebase를 통해 정리 및 관리하였습니다.
'컴퓨터 > git' 카테고리의 다른 글
git (5) - 임시로 이력을 저장하자 (stash) (0) | 2024.08.05 |
---|---|
git (4) - commit 혹은 push된 내용을 되돌려 보자(reset, revert) (0) | 2024.07.11 |
git (3) - branch와 merge에 대하여 알아보자 (1) | 2023.12.30 |
git (1) - 깃허브에 데이터를 업로드, 다운로드하자 (초보자 ver) (0) | 2022.12.12 |