저의 경우는
AI가 소스코드를 변경하기 전에 또는 prompt 질문을 하기 전에
소스코드를 통째로 로컬에 백업합니다.
./history/ 아래에
./hisrory/r0001/
./hisrory/r0002/ ...
이런 구조로 된 디렉토리를 생성하고 개발소스들을 백업하는 스크립트를 실행해요..

윈도우즈 개발 환경이라서 ps1 파일 입니다.

# backup.ps1  
$base = "./src"  
$history = "./history"  
  
# 최신 rXXXX 폴더 찾기  
$latest = Get-ChildItem -Path $history -Directory | Where-Object { $_.Name -match '^r\d{4}$' } | Sort-Object Name -Descending | Select-Object -First 1  
if ($latest) {  
    $num = [int]($latest.Name.Substring(1)) + 1  
} else {  
    $num = 1  
}  
$next = "r{0:D4}" -f $num  
$dest = "$history/$next"  
  
# 백업 폴더 생성  
New-Item -ItemType Directory -Path "$dest" -Force | Out-Null  
New-Item -ItemType Directory -Path "$dest/css" -Force | Out-Null  
New-Item -ItemType Directory -Path "$dest/js" -Force | Out-Null  
New-Item -ItemType Directory -Path "$dest/html" -Force | Out-Null  
New-Item -ItemType Directory -Path "$dest/images" -Force | Out-Null  
New-Item -ItemType Directory -Path "$dest/doc" -Force | Out-Null  
New-Item -ItemType Directory -Path "$dest/server" -Force | Out-Null  
  
# 파일/폴더 복사  
Copy-Item "$base/SPA_index.html" "$dest/SPA_index.html"  
Copy-Item "$base/css/*" "$dest/css/" -Recurse  
Copy-Item "$base/js/*" "$dest/js/" -Recurse  
Copy-Item "$base/images/*" "$dest/images/" -Recurse  
Copy-Item "$base/doc/*" "$dest/doc/" -Recurse  
  
# 서버 파일 복사: node_modules 제외  
Copy-Item "$base/server/*" "$dest/server/" -Recurse -Exclude "node_modules"  
  
Write-Host "백업 완료: $dest"  

깃을 쓰는 것과 이 방법에 어떤 장단점이 있을까요?

깃도 동시에 사용해요..
실질적으로 개발할때 AI가 소스코드를 변경을 많이 할 수 있기 때문에..
이것을 일일이 꼼꼼하게 Check하더라도 빌드했을때 오류 또는 버그가 발생할 수 있기
때문에..

이전 코드로 rollback 할때 편해요.

깃으로 코드를 rollback할 수도 있겠지만..
전체 코드가 전체 백업 되어 있어서
빨리 찾아서 코드 변경된 거 보면서 구현하는데 도움이 되었습니다.

git subtree를 활용하시면 좋을 것 같네요.

아 이름을 헷갈렸네요 ㅎㅎ worktree가 맞습니다

답변 감사합니다!

아무런 장점이 없죠.. 저런 행위를 안하려고 나온게 버전 관리 시스템입니다.
제가 볼때는 git을 더 공부하시는게 좋아 보입니다.