Stable Diffusion 특정(이전) 버전 사용하기 (git)

Stable Diffusion 특정(이전) 버전 사용하기 (git)

목차

Stable Diffusion WebUI(AUTOMATIC1111 계열)에서 특정 버전이나 이전 버전을 사용하려면 git을 다룰 줄 알아야 합니다. WebUI는 git 저장소로 배포되기 때문에, 명령어 몇 개만 알면 원하는 버전으로 고정하거나 문제가 생긴 업데이트를 깔끔하게 되돌릴 수 있습니다. 이 글에서는 git이 버전 관리에서 어떤 역할을 하는지부터, 현재 버전 확인·특정 커밋/태그로 전환·이전 상태로 복구·다시 최신으로 복귀하는 방법까지 표준 사용법만으로 정리합니다.

git이 버전 관리에서 하는 역할

Stable Diffusion WebUI는 GitHub 저장소를 그대로 내려받아 설치하는 구조입니다. 즉 설치 폴더 자체가 하나의 git 저장소이며, 지금까지의 모든 변경 이력이 “커밋(commit)” 단위로 기록되어 있습니다. 각 커밋에는 고유한 해시값이 붙고, 특정 시점에는 사람이 읽기 쉬운 “태그(tag)”(예: v1.5.1)가 달리기도 합니다.

이 이력 덕분에 우리는 “지금 어떤 버전을 쓰고 있는지” 확인하고, “원하는 시점으로 이동”하며, “문제가 생기면 이전 시점으로 되돌리는” 일을 자유롭게 할 수 있습니다. 새로운 업데이트가 내 환경이나 확장(extension)과 충돌할 때, 안정적으로 동작하던 버전으로 빠르게 복귀할 수 있다는 점이 핵심 장점입니다.

먼저 설치 폴더로 이동하기

모든 git 명령은 WebUI가 설치된 폴더 안에서 실행해야 합니다. 터미널(명령 프롬프트)을 열고 설치 경로로 이동하세요. 경로는 본인 환경에 맞게 바꾸면 됩니다.

# 리눅스·macOS 예시
cd /PRODUCT/sd-151

# 윈도우 예시
cd C:stable-diffusion-webui

폴더 안에 .git 디렉터리가 있으면 git 저장소가 맞습니다. 이후의 모든 명령은 이 위치에서 실행한다고 가정합니다.

현재 버전 확인하기 (git log)

지금 어떤 커밋 위에 있는지부터 확인합니다. git log는 최신 커밋부터 이력을 보여 주며, --oneline 옵션을 붙이면 한 줄로 간결하게 표시됩니다.

# 최근 커밋을 한 줄씩 보기
git log --oneline -n 10

# 현재 HEAD가 가리키는 커밋만 보기
git log -1

맨 위에 표시되는 커밋 해시가 현재 사용 중인 버전입니다. WebUI를 실행하면 콘솔에도 버전과 커밋 해시가 함께 출력되므로 교차 확인할 수 있습니다. 아래는 실행 시 출력되는 버전 정보의 예시입니다.

Version: v1.5.1
Commit hash: 68f336bd994bed5442ad95bad6b6ad5564a5409a

특정 커밋·태그로 전환하기 (git checkout)

원하는 버전으로 이동하려면 먼저 원격 저장소의 최신 이력과 태그 정보를 받아 둡니다. 그래야 로컬에 없는 태그나 커밋으로도 이동할 수 있습니다.

# 원격의 모든 브랜치·태그 정보 가져오기 (작업 파일은 바뀌지 않음)
git fetch --all --tags

그다음 태그나 커밋 해시를 지정해 git checkout으로 이동합니다. 예를 들어 v1.5.1 태그로 고정하려면 다음과 같이 입력합니다.

# 태그로 이동
git checkout tags/v1.5.1

# 또는 커밋 해시로 직접 이동 (앞 7자리만 입력해도 됨)
git checkout 68f336bd

이때 “detached HEAD” 상태라는 안내가 나옵니다. 이는 특정 브랜치가 아니라 한 시점의 커밋에 직접 머무르고 있다는 뜻으로, 버전을 고정해 사용할 때는 정상적인 상태입니다. 다시 최신 개발선으로 돌아오면 자연스럽게 해소되므로 걱정하지 않아도 됩니다.

참고로 git checkout 실행 시 M webui-user.sh처럼 일부 파일이 수정됨(modified)으로 표시될 수 있습니다. 본인이 설정 파일을 직접 고친 경우인데, 변경 사항을 유지할지 따로 백업해 둘지 미리 정해 두는 것이 안전합니다.

업데이트로 문제가 생겼을 때 이전 버전으로 되돌리기

WebUI는 보통 git pull로 최신 변경을 받아 업데이트합니다. 그런데 업데이트 직후 오류가 나거나 확장이 동작하지 않는 경우가 있습니다. 이럴 때는 잘 동작하던 이전 커밋으로 되돌리는 것이 가장 빠른 해결책입니다.

먼저 git log --oneline으로 되돌아갈 시점의 커밋 해시를 찾은 뒤, 그 해시로 git checkout 하면 됩니다.

# 1) 안정적으로 쓰던 시점의 커밋 해시 확인
git log --oneline -n 20

# 2) 해당 커밋으로 이동
git checkout <커밋해시>

이렇게 하면 코드가 그 시점 상태로 복원됩니다. 단, 코드만 되돌아갈 뿐 파이썬 가상환경(venv)에 이미 설치된 패키지까지 자동으로 맞춰지지는 않습니다. 버전 차이가 클 때는 의존성 문제가 남을 수 있으니, 필요하면 가상환경을 다시 만들어 깨끗한 상태에서 실행하는 편이 안정적입니다.

다시 최신 버전으로 복귀하기

특정 버전 검증이 끝났다면 다시 최신 개발선으로 돌아올 수 있습니다. detached HEAD 상태에서 원래 브랜치로 전환한 뒤 최신 변경을 받으면 됩니다. AUTOMATIC1111 WebUI는 주로 master 브랜치를 사용합니다(저장소에 따라 main일 수 있습니다).

# 원래 브랜치로 복귀
git checkout master

# 최신 변경 받아오기
git pull

현재 어떤 브랜치가 있는지 헷갈린다면 git branch -a로 로컬·원격 브랜치 목록을 확인할 수 있습니다. 브랜치 이름만 정확히 맞추면 최신 상태로의 복귀는 어렵지 않습니다.

확장(extension)과의 버전 충돌 주의

버전을 옮길 때 가장 흔한 문제는 확장과의 호환성입니다. 확장은 WebUI의 특정 버전을 전제로 만들어지는 경우가 많아, WebUI만 이전 버전으로 되돌리면 최신 확장이 동작하지 않거나 그 반대가 되기도 합니다. 다음을 기억해 두면 충돌을 줄일 수 있습니다.

  • WebUI 버전을 고정했다면, 확장도 그 시점과 호환되는 버전으로 맞춰 두는 것이 안전합니다.
  • 확장 역시 git 저장소(extensions 폴더 안)이므로, 동일한 방식으로 특정 커밋에 고정하거나 되돌릴 수 있습니다.
  • 문제가 의심되면 확장을 일시적으로 비활성화한 채 실행해 원인이 본체인지 확장인지 먼저 분리해 보세요.
  • 버전을 바꾸기 전에 현재 잘 동작하는 커밋 해시를 메모해 두면, 언제든 그 시점으로 복귀할 수 있습니다.

자주 묻는 질문(FAQ)

detached HEAD 상태인데 괜찮은가요?

네, 괜찮습니다. 특정 커밋이나 태그로 checkout 하면 자연스럽게 나타나는 상태로, 버전을 고정해 쓰는 경우라면 그대로 사용해도 됩니다. 최신 개발선으로 돌아가고 싶을 때 git checkout master처럼 브랜치로 전환하면 해소됩니다.

이전 버전으로 되돌렸더니 오류가 계속 나요.

코드만 되돌아가고 가상환경의 패키지는 이전 설치 상태가 남아 있어 충돌하는 경우가 많습니다. 가상환경(venv) 폴더를 다시 생성해 깨끗한 상태에서 실행하면 대부분 해결됩니다. 확장 호환성도 함께 확인해 보세요.

어떤 태그가 있는지 어떻게 확인하나요?

git fetch --all --tags로 태그 정보를 받은 뒤 git tag 명령을 실행하면 사용 가능한 태그 목록을 볼 수 있습니다. 목록에서 원하는 태그를 골라 git checkout tags/<태그명>으로 이동하면 됩니다.

정리

Stable Diffusion WebUI는 git 저장소이기 때문에 git log로 현재 버전을 확인하고, git fetchgit checkout으로 원하는 커밋이나 태그에 자유롭게 머무를 수 있습니다. 업데이트가 말썽이면 안정적이던 커밋으로 되돌리고, 검증이 끝나면 브랜치로 복귀해 최신 상태로 돌아오면 됩니다. 버전을 바꾸기 전 현재 커밋 해시를 메모하고 확장 호환성을 함께 점검하는 습관만 들이면, 언제든 안전하게 버전을 오가며 작업할 수 있습니다.

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요