Git의 설정에서 pull.rebase와 pull.ff 옵션은 git pull 명령의 동작을 어떻게 변경할지를 제어합니다. 기본적으로 git pull은 원격 저장소에서 변경 사항을 가져온 후(git fetch를 수행), 현재 브랜치와 원격 브랜치를 병합(git merge)합니다. 그러나 이 동작은 이러한 설정에 따라 변경될 수 있습니다.
git config pull.rebase false: 이것은 Git의 기본 동작으로, 원격 저장소에서 변경 사항을 가져온 후에 현재 브랜치를 원격 브랜치로 병합합니다. 병합 충돌이 발생할 경우, 병합 충돌을 수동으로 해결해야 합니다.
git config pull.rebase true: 이 설정을 사용하면 git pull은 원격 저장소에서 변경 사항을 가져온 후(git fetch를 수행), 현재 브랜치의 커밋을 원격 브랜치 위로 재배치(git rebase)합니다. 이로 인해 선형적인 커밋 이력을 유지할 수 있지만, 복잡한 상황에서는 원치 않은 결과를 초래할 수 있습니다.
git config pull.ff only: 이 설정을 사용하면 git pull은 "fast-forward" 병합만 수행하도록 제한됩니다. "fast-forward" 병합이란, 현재 브랜치가 가리키는 커밋이 원격 브랜치의 커밋에 대한 직접적인 조상일 때만 가능합니다. 이렇게 설정하면, 커밋 이력이 강제로 변경되는 것을 방지할 수 있습니다. "fast-forward"가 아닌 병합이 필요한 상황에서는 git pull이 실패하며, 이 경우 별도의 git merge나 git rebase 명령을 수동으로 수행해야 합니다.