Skip to content

esyeon88/git-folder-consolidator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Git Folder Consolidator

여러 Git 폴더를 비교하여 가장 최신 버전을 찾고 자동으로 통합하는 Bash 스크립트입니다.

✨ 주요 기능

  • 🔍 지능적 분석: 커밋 날짜와 커밋 수를 기준으로 가장 최신 폴더 자동 식별
  • 📊 상세한 Git 정보: 브랜치, 커밋, uncommitted 변경사항, stash 등 종합 분석
  • 🛡️ 안전한 통합: 백업 생성 옵션과 dry-run 모드로 안전한 작업 보장
  • 🌐 원격 저장소 관리: 새로운 원격 저장소 URL 자동 설정
  • 📁 유연한 출력: 원하는 위치로 결과 폴더 이동 가능
  • 🎨 직관적 인터페이스: 색상 코딩된 로그와 명확한 진행 상황 표시

🚀 빠른 시작

설치

# 저장소 클론
git clone https://github.com/esyeon88/git-folder-consolidator.git
cd git-folder-consolidator

# 실행 권한 부여
chmod +x git_folder_consolidator.sh

# 전역 설치 (선택사항)
mkdir -p ~/bin
cp git_folder_consolidator.sh ~/bin/
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

기본 사용법

# 기본 통합 (dry-run 권장)
./git_folder_consolidator.sh --dry-run --backup ~/dev/project1 ~/Desktop/project1

# 실제 통합 실행
./git_folder_consolidator.sh --backup ~/dev/project1 ~/Desktop/project1

📋 사용법

명령어 구조

./git_folder_consolidator.sh [옵션] <폴더1> <폴더2> [폴더3] ...

옵션

옵션 단축형 설명
--help -h 도움말 표시
--dry-run -d 실제 변경 없이 시뮬레이션 실행
--backup -b 통합 전 백업 생성
--output DIR -o 결과 폴더를 지정된 디렉토리로 이동
--remote URL -r 새로운 원격 저장소 URL 설정

💡 사용 예시

1. 안전한 분석 (권장 첫 단계)

# 어떤 변경이 일어날지 미리 확인
./git_folder_consolidator.sh --dry-run ~/dev/myproject ~/Desktop/myproject

2. 백업과 함께 통합

# 백업을 생성하고 통합 실행
./git_folder_consolidator.sh --backup ~/dev/project ~/backup/project

3. 원격 저장소 변경과 함께 통합

# 개인 GitHub으로 마이그레이션하면서 통합
./git_folder_consolidator.sh \
  --backup \
  --remote https://github.com/username/project.git \
  ~/dev/project ~/Desktop/project

4. 출력 디렉토리 지정

# 통합 후 특정 디렉토리로 이동
./git_folder_consolidator.sh \
  --backup \
  --output ~/workspace \
  ~/dev/project1 ~/dev/project2

🔍 분석 기준

스크립트는 다음 우선순위로 최신 폴더를 결정합니다:

  1. 최신 커밋 날짜 (1순위)
  2. 총 커밋 수 (날짜가 동일한 경우)
  3. 추가 정보 표시: uncommitted 변경사항, stash 등

📊 분석 정보

각 Git 폴더에 대해 다음 정보를 수집하고 표시합니다:

  • 📅 마지막 커밋 날짜
  • 📈 총 커밋 수
  • 🔄 현재 브랜치
  • 📝 uncommitted 변경사항 수
  • 💾 stash 수
  • 🌐 원격 저장소 URL

⚠️ 주의사항

필수 확인사항

  1. 백업 필수: 중요한 데이터는 반드시 --backup 옵션 사용
  2. Dry-run 먼저: 실제 실행 전 --dry-run으로 결과 미리 확인
  3. Git 저장소만: Git 저장소가 아닌 폴더는 자동으로 건너뜀
  4. 권한 확인: 폴더 삭제/이동에 필요한 권한 보유 확인

충돌 처리

  • 스크립트는 자동 merge를 수행하지 않습니다
  • Unique 커밋이 발견되면 경고 메시지와 함께 수동 merge 권장
  • 데이터 손실 방지를 위한 보수적 접근

🔧 문제 해결

권한 오류

chmod +x git_folder_consolidator.sh

macOS 날짜 파싱 오류

# GNU coreutils 설치 (필요시)
brew install coreutils

경로 관련 문제

# 절대 경로 사용 권장
./git_folder_consolidator.sh --dry-run /full/path/to/folder1 /full/path/to/folder2

📋 실행 예시

$ ./git_folder_consolidator.sh --dry-run ~/dev/myapp ~/Desktop/myapp

[INFO] Git Folder Consolidator Started
[INFO] Folders to analyze: ~/dev/myapp ~/Desktop/myapp
[INFO] Analyzing 2 folders...

[INFO] Analyzing: ~/dev/myapp
  └ Last commit: 2024-08-19 15:30:45 +0900
  └ Total commits: 145
  └ Uncommitted changes: 0
  └ Stashes: 0

[INFO] Analyzing: ~/Desktop/myapp
  └ Last commit: 2024-10-07 14:22:15 +0900
  └ Total commits: 167
  └ Uncommitted changes: 5
  └ Stashes: 1

[SUCCESS] Most recent folder identified: ~/Desktop/myapp
[INFO] DRY RUN - No changes will be made
[INFO] Would consolidate to: ~/Desktop/myapp
[INFO] Would remove: ~/dev/myapp

🛠️ 커스터마이징

핵심 함수들을 수정하여 동작을 커스터마이징할 수 있습니다:

  • find_most_recent_folder: 최신 폴더 선택 기준 변경
  • create_backup: 백업 방식 및 위치 변경
  • consolidate_folders: 통합 로직 및 Git 작업 변경

🤝 기여하기

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 라이센스

이 프로젝트는 MIT 라이센스로 배포됩니다. 자유롭게 사용, 수정, 배포할 수 있습니다.

📞 지원


⭐ 이 프로젝트가 유용하다면 Star를 눌러주세요!

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages