● 어떤 문제인가
이상적인 브랜치 구조에서는 최상위인 Main, 거기사 바로 아래인 Develop 브랜치가 있고 이 Develop에서 각자 작업을 위한 브랜치로 나눠서 작업을 한다. 그리고 내가 있는 팀에서도 이 구조를 따르고 있다.
어느 날, 팀원이 올린 작업을 받기 위해 Develop 브랜치를 내가 작업하는 브랜치로 병합하려고 했다. 병합전, Develop브랜치를 Fetch하여 최신화 하고 병합 명령을 내렸더니 오류가 발생하면서 병합에 실패했다.
오류 메세지 (토큰 및 Git 주소 검열됨)
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks merge Develop
Updating 35cc14b..fb08bdc
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
Downloading Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset (18 KB)
bash: line 1: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Password for 'https://ghp_********************@github.com': No such file or directory
Error downloading object: Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset (3d2f530): Smudge error: Error downloading Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset (3d2f530f3bb87b80b9479226a21dd18b2e6ad3b081390e14988668445ff7c67f): batch response: Git credentials for https://ghp_********************@github.com/*****/*****.git not found.
Errors logged to ' D:\Projects\Unreal_Projects\.git\lfs\logs\20260122T172603.3897015.log'.
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset: smudge filter lfs failed
● 결론을 먼저 말하자면
메세지가 내포하는 의미는 여러가지 일 수도 있지만, 일단 이 문제의 원인은 LFS를 통해서 파일을 로컬 저장소에 제대로 받지 못해서였다. Fetch를 통해 Develop브랜치에 파일 데이터를 받아두긴 했는데 그 내용이 잘못된 모양이다.

터미널을 열어서 git lfs pull 명령어를 사용해 강제로 LFS 파일을 받게 했다. 이 조치를 취한 후 다시 병합을 시도하니 병합이 잘 됐다.
● 여기까지 도달하는데 시도한 조치 모음
결국 해결했으니 큰 의미는 없지만, 적어도 내가 시도해본 여러가지 방법은 추후 다른 문제가 생겼을 때 도움이 될 것 같아서 기록한다.
- 토큰 재발행 및 SourceTree에 저장된 비밀번호 정보 삭제
예전에 적은 글에 있는 내용대로 토큰을 만들 때 이미 사용중인 토큰이 있다면 그 토큰을 다시 생성하거나 삭제할 수 있다. 나는 원래 쓰던 토큰의 기간이 만료되어(보안적인 이유로 무기한 토큰을 생성하지 않음) 새로 토큰을 발행했고 그것을 소스 트리의 원격 주소에 집어넣었다. 그리고 이렇게 하니 소스트리에서 비밀번호를 입력하라는 화면이 떴었다. 나는 그냥 예사로 넘기고 비밀번호 입력란을 비우고 저장했는데 그게 문제라고 생각했다. 그래서 토큰을 새로 발급 받았고 원래 토큰의 비밀번호를 제거하려고 했다.

PC의 Appdata폴더에서 \Local\Atlassian\SourceTree경로로 찾아가면 SourceTree에서 쓰는 파일이 여러 개 있는데 그 중 passwd파일을 삭제하고 SourceTree를 다시 실행하고 뭔가를 하려고 하면 다시 비밀번호를 묻는 화면이 뜬다.
그런데 이는 해결 방법이 아니었다. 무슨 짓을 해도 똑같이 에러가 발생했다. 괜히 토큰만 귀찮게 재발행한 꼴이다.
- 토큰을 재발행한 김에 토큰 인증 방식을 변경하기
토큰을 재발행해고 생각한 것이 있는데, 매 번 새 로컬 저장소를 만들 때마다 원격 주소에 일일이 토큰을 넣는게 귀찮았다. 그래서 이왕 토큰을 다시 발급했으니 다른 방법을 써보려고 했다.

일단 원격 주소에서 토큰을 지우고 일반적인 git 주소로 만들었다.

화면 상단의 '도구'를 누르고 '옵션'을 눌러 옵션화면을 연다. 거기서 '인증'을 찾아 기존에 등록한 계정 정보를 삭제하고 새 계정을 추가를 하면 호스팅 계정 편집 화면이 뜨는데, 호스팅 서비스야 당연히 GitHub로 하지만 인증 방식을 Personal Access Token으로 한다. 여기서 토큰 새로고침 버튼을 누르면 로그인 화면이 열린다.

사용자 이름은 GitHub의 이름을 입력하고 암호에 토큰을 입력하면 된다.
이 방법이 어느정도 먹히긴 했다. 내가 작정한 코드 및 추가한 파일을 원격 저장소에 Push하는데에는 문제가 없었다. 그런데 여전히 병합은 되지 않았다. 지금 와서 생각해보면 인증 정보는 정상이니 주고 받는것 자체는 문제가 없지만 결국 제대로 받지 못한 LFS 파일이 원인이었기 때문에 인증과는 무관한 일이었다.
- SourceTree가 가진 인증 정보와 Git이 가진 인증 정보가 꼬인 경우
터미널을 열어서 git lfs pull 명령어를 사용했을 때 만약 에러가 발생한다면 git config --global credential.helper wincred 명령어를 입력하고 다시 시도해야 한다. 이러면 LFS 파일을 받기 전 로그인 정보가 뜰 수도 있는데 이는 Git에 저장된 인증 정보가 사라졌으니 다시 입력해야 하는 상황이다.
아무리 SourceTree에 인증 정보를 저장했다고 해도 결국은 Git이 가진 인증 정보를 가지고 원격과 통신하는데, 여기서 SourceTree가 가진 인증 정보와 Git이 가진 인증 정보가 불일치하면 에러가 발생하여 제대로된 파일 주고 받기가 안된다.
뭐 일단 앞서 적었듯 인증과는 무관한 문제였으니 나에겐 이 현상이 발생하지 않았지만, 후에 이런 일이 생길 때를 대비해 잘 기억해놔야겠다.
'기타 학습, 과제' 카테고리의 다른 글
| 소울라이크 팀 프로젝트 Desecration : 설계 (2) (1) | 2026.02.03 |
|---|---|
| 소울라이크 팀 프로젝트 Desecration : 설계 (1) (1) | 2026.02.02 |
| 내일배움캠프 CH3 KPT회고 (0) | 2025.11.12 |
| Git LFS로 작업을 공유할 때 주의 사항 (0) | 2025.10.22 |
| GitHub 이용시 대용량 파일을 공유해야 한다면 (1) | 2025.09.26 |