Land of Joe

pull.ff=only & pull.rebase true로 인한 pull 방해 본문

🔗 git (github)

pull.ff=only & pull.rebase true로 인한 pull 방해

Arendt 2024. 6. 12. 17:56

 

 

배경: 원격과 로컬이 각자 서로 다른 커밋을 가지고 있을 때

 

1차 문제상황: git pull origin (원격브랜치명)을 했을 때에 아래와 같은 오류가 뜬다

hint: Diverging branches can't be fast-forwarded, you need to either:
hint:
hint: git merge --no-ff
hint:
hint: or:
hint:
hint: git rebase
hint:
hint: Disable this message with "git config advice.diverging false"
fatal: Not possible to fast-forward, aborting.

해설 > 서로 갈라진 두 브랜치에서는 fast-forward가 불가능하다

 

해결방법: fast-forward에 상관없이 merge 해버린다

git merge --no-ff (원격저장소명/브랜치명)

해설 > fast-forward에 상관없이 merge 해버린다

변화 > 로컬 코드 상에 충돌이 발생할 수 있고, merge된 내용이 전부 반영되어 선택할 수 있게 한다. 

        > 원하는 코드를 선택 후 add, commit, push 하면 해결 완! (그러나..)

 

위 해결방안의 한계: 매번 git merge --no-ff를 하기 귀찮다.!

 

그렇다면 위 상황이 벌어지게 된 근본 원인을 찾아보자.

왜 pull을 하려는데 fast-forward(이하 ff)가 되어야하는 걸까?

"Not possible to fast-forward, aborting."로 보아 ff를 해야만 할 수밖에 없는 상황에 있었을까?

 

pull.ff에 관한 git 기본 설정이 무엇이 있나 알아보기 위해 

git config --list | grep (pull.ff)을 해본 결과 

 

pull.ff=only라고 설정해놓은 것이 있음을 발견했고

이를 삭제하기 위해

git config --unset pull.ff 를 진행하였다. 

 

마찬가지로

 

'pull을 할 때 항상 rebase 된다'는 설정의

git config pull.rebase true 로 인해 

 

 

 

git config pull.rebase false

 

 


새롭게 알게된 깃 명령어 >>  

 

git reflog 

 

git remote -v: 현재 로컬 저장소와 연결되어 있는 원격 저장소의 주소를 알려준다.

 

 

git config --list: 깃 기본 설정 내역 확인

git config --list | grep (키워드): 깃 기본 설정 내역 중 (키워드)를 포함하고 있는 것 출력

 

https://seosh817.tistory.com/297

 

[Git] git reflog를 이용하여 git reset --hard로 지워진 커밋 복구하기

Git reflog란? git reflog는 로컬 저장소에서 HEAD의 업데이트를 기록을 출력합니다. 업데이트의 내용은 저장소 디렉토리의 .git/logs/refs/heads/. 혹은 .git/logs/HEAD에 기록되며 git reflog는 이 내용을 출력합니

seosh817.tistory.com

 

'🔗 git (github)' 카테고리의 다른 글

git 충돌 시  (0) 2023.09.07
Git branch 관련 아카이브  (0) 2023.07.27
[git] 좋은 commit message 작성법  (0) 2023.03.31