여러 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 설정 |
# 어떤 변경이 일어날지 미리 확인
./git_folder_consolidator.sh --dry-run ~/dev/myproject ~/Desktop/myproject# 백업을 생성하고 통합 실행
./git_folder_consolidator.sh --backup ~/dev/project ~/backup/project# 개인 GitHub으로 마이그레이션하면서 통합
./git_folder_consolidator.sh \
--backup \
--remote https://github.com/username/project.git \
~/dev/project ~/Desktop/project# 통합 후 특정 디렉토리로 이동
./git_folder_consolidator.sh \
--backup \
--output ~/workspace \
~/dev/project1 ~/dev/project2스크립트는 다음 우선순위로 최신 폴더를 결정합니다:
- 최신 커밋 날짜 (1순위)
- 총 커밋 수 (날짜가 동일한 경우)
- 추가 정보 표시: uncommitted 변경사항, stash 등
각 Git 폴더에 대해 다음 정보를 수집하고 표시합니다:
- 📅 마지막 커밋 날짜
- 📈 총 커밋 수
- 🔄 현재 브랜치
- 📝 uncommitted 변경사항 수
- 💾 stash 수
- 🌐 원격 저장소 URL
- 백업 필수: 중요한 데이터는 반드시
--backup옵션 사용 - Dry-run 먼저: 실제 실행 전
--dry-run으로 결과 미리 확인 - Git 저장소만: Git 저장소가 아닌 폴더는 자동으로 건너뜀
- 권한 확인: 폴더 삭제/이동에 필요한 권한 보유 확인
- 스크립트는 자동 merge를 수행하지 않습니다
- Unique 커밋이 발견되면 경고 메시지와 함께 수동 merge 권장
- 데이터 손실 방지를 위한 보수적 접근
chmod +x git_folder_consolidator.sh# 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 작업 변경
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
이 프로젝트는 MIT 라이센스로 배포됩니다. 자유롭게 사용, 수정, 배포할 수 있습니다.
- 이슈: GitHub Issues
- 문의: 프로젝트 GitHub 페이지
⭐ 이 프로젝트가 유용하다면 Star를 눌러주세요!