하위 .git 폴더 모두 제거

Jmnote (토론 | 기여)님의 2016년 8월 8일 (월) 10:24 판 (Jmnote 사용자가 하위 .git 폴더 제거 문서를 하위 .git 폴더 모두 제거 문서로 옮겼습니다)

1 개요

하위 .git 폴더 제거
  • 하위폴더에 .git 폴더가 있으면 submodule로 인식된다.[1]
  • 즉 해당폴더들은 별도의 git 저장소와 연동이 되는 것이다.
  • 서브버전과 구분되는 특성 중의 하나인데, 의도하지 않은 submodule은 처리가 귀찮다...
  • 전체를 하나의 프로젝트로 관리하고 싶으므로 하위에 있는 .git 폴더들을 제거해보자.

2 문제 상황

testuser@zetawiki:/var/www$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	html/
	laravel/

nothing added to commit but untracked files present (use "git add" to track)
testuser@zetawiki:/var/www$ git add laravel
testuser@zetawiki:/var/www$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   laravel

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

	modified:   laravel (modified content, untracked content)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	html/
→ laravel 이하의 파일들이 주르륵 등록되어야 하는데... 뭔가 안된다. .git 폴더가 있어서 submodule로 인식된 것

3 .git 폴더 확인 및 삭제

  • 일단 .git 폴더 목록을 확인해보자
testuser@zetawiki:/var/www$ find . -name '.git'
./laravel/.git
./.git
./html/w/extensions/SimpleMathJax/.git
./html/w/extensions/AbuseFilter/.git
./html/w/extensions/AntiSpoof/.git
→ 그런데 최상위의 .git 은 삭제되면 안되니까...
testuser@zetawiki:/var/www$ find . -mindepth 2 -name '.git'
./laravel/.git
./html/w/extensions/SimpleMathJax/.git
./html/w/extensions/AbuseFilter/.git
./html/w/extensions/AntiSpoof/.git
  • 이제 삭제하자.
testuser@zetawiki:/var/www$ find . -mindepth 2 -name '.git' -prune -exec rm -rf {} +
testuser@zetawiki:/var/www$ find . -name '.git'
./.git
→ 최상위 .git 폴더를 제외하고 모두 삭제되었다.

4 참고

  1. 반대로 상위폴더는 superproject 라고 할 수 있다.
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}