"하위 .git 폴더 모두 제거"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 2개는 보이지 않습니다)
4번째 줄: 4번째 줄:
* 즉 해당폴더들은 별도의 git 저장소와 연동이 되는 것이다.
* 즉 해당폴더들은 별도의 git 저장소와 연동이 되는 것이다.
* 서브버전과 구분되는 특성 중의 하나인데, 의도하지 않은 submodule은 처리가 귀찮다...
* 서브버전과 구분되는 특성 중의 하나인데, 의도하지 않은 submodule은 처리가 귀찮다...
* 전체를 하나의 프로젝트로 관리하고 싶으므로 하위에 있는 .git 폴더들을 제거해보자.
* 전체를 하나의 프로젝트로 관리하고 싶다면 하위에 있는 .git 폴더들을 제거해보자.


==문제 상황==
==문제 상황==
127번째 줄: 127번째 줄:
</source>
</source>
:→ 이제 add할 때 의도한 대로 하위 폴더·파일들이 추가된다.
:→ 이제 add할 때 의도한 대로 하위 폴더·파일들이 추가된다.
==같이 보기==
* [[git status]]
* [[git add]]
* [[git rm]]
* [[.gitignore]]
* [[리눅스 find]]


==참고==
==참고==


[[분류: git]]
[[분류: git]]

2017년 4월 19일 (수) 15:31 기준 최신판

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 (Optional) 다시 git add[ | ]

  • .git 폴더를 삭제했다고 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

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

	html/
→ cached에 있으므로 삭제 후 다시 add 해야 한다.
testuser@zetawiki:/var/www$ git rm --cached laravel
error: the following file has staged content different from both the
file and the HEAD:
    laravel
(use -f to force removal)
testuser@zetawiki:/var/www$ git rm --cached laravel -f
rm 'laravel'
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/.env.example
	new file:   laravel/.gitattributes
	new file:   laravel/.gitignore
... (생략)
	new file:   laravel/server.php
	new file:   laravel/tests/ExampleTest.php
	new file:   laravel/tests/TestCase.php

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

	html/

testuser@zetawiki:/var/www$
→ 이제 add할 때 의도한 대로 하위 폴더·파일들이 추가된다.

5 같이 보기[ | ]

6 참고[ | ]

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