.gitignore로 로컬에 파일을 남기면서 git에 올리지 않는 방법

5308 단어 GitHubCakePHPGit

이 기사에 대하여



.gitignore가 어떻게 움직이는지, 또 무엇인가를 실제의 Before, After의 상태를 캡쳐 해 설명해 갑니다.

동기 부여


.gitignore 를 사용하지 않으면 다음과 같은 일이 발생할 수 있습니다.
- Git 초보자가 여러 명으로 하나의 앱을 개발할 때 개별적으로 매번 바뀌는 설정 파일을 가진 탓으로 병합할 때 Conflict가 일어난다
- Github의 무료 계정을 사용하는 경우 모든 파일이 공개되므로 서버 정보를 작성한 파일도 Github에서 공개됩니다.
그런 때에, 이 .gitignore 가 소중하다는 것을 깨달았으므로 정리하려고 생각했습니다 (지금까지는 누군가가 .gitignore 를 항상 만들고 있었으므로 특히 의식하고 있지 않았습니다..).

절차



단순히 루트 디렉토리 아래에 .gitignore 라는 파일을 만들고 Github 에 넣지 않거나 git 로 추적하지 않으려는 파일을 지정합니다. 그 전에 파일을 이미 푸시 한 경우 git rm -r --cached ファイル名라는 명령을 사용하여 git에서 지정된 파일을 제외합니다.

구현



CakePHP 기반 앱의 temp/cache 폴더를 제외합니다.

현재 상태




확실히 cache 가 Github에서 확인할 수 있습니다 (본래라면 아웃..).

Step1 : git rm -r --cached 파일 이름으로 git에서 지정된 파일 제외



다음은 실제 실행 결과입니다.
git status 를 보면, 제대로 untrack 된 것처럼 쓰여져 있습니다.


Step2 : .gitignore를 루트 디렉토리 아래에 만들고이 temp / cache를 무시하도록 다음과 같이 설명



이하, 실제의 실행 동작입니다.

내 경우에는 이미 .gitignore를 만들었지만 실행하는 명령은 기본적으로 동일합니다. 동영상에 있듯이 마지막으로 변경한 내용을 commit 합시다.

Step3: git push에서 Github에 반영



Push합니다. 다음은 실제 실행 결과입니다.


구현 후



tmp/cache 폴더가 Github에서 사라졌는지 확인할 수 있습니다.

한편 로컬에서 폴더를 보면 tmp/cache 폴더가 사라지지 않았는지 확인할 수 있습니다. 즉 서버 정보를 올린 파일 등은 로컬에만 보관할 수 있습니다.


추가



@htsign 님으로부터 지적이 있었습니다만, git rm -r --cached ファイル名 그럼, 최신의 커밋으로부터 밖에 파일이 삭제되지 않습니다. 그래서 다음과 같이 과거의 커밋 이력을 보면 삭제한 파일이 보통으로 존재하게 됩니다.

이 파일 정보를 표시하고 싶지 않은 경우, git filter-branch 등의 커멘드로 과거 히스토리로부터도 파일을 삭제할 필요가 있습니다.
Git 리포지토리에 있는 파일을 기록별로 지우는 방법? 을 참고로, 실제로 지워 봅니다.
다음은 실제 실행 결과입니다.


그런 다음 git gc --aggressive --prune=now 에서 리포지토리를 최적화합니다.


이대로 Push하면 커밋 정보에 충돌이 있는 탓인지 거절됩니다.

git push -f 에서 강제로 푸시합니다.

잘 작동했습니다.
※팀에서 개발을 실시하는 경우, 이러한 강제적인 Push를 실시할까는, 신중하게 검토합시다.

마지막으로



이상, .gitignore 의 움직임에 대해 정리했습니다.

참고:



htps : // m / y_ 미노와 / ms / 3d8513dc31c1b378 0d
htps : // m / go _ st r / ms / 6 / 39d3 / b16 8094496c
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 6403601 / 프 rg g-f-f-ro-m-t-re-po-u-d-una b-o-c-re-w-w 쿠 p

좋은 웹페이지 즐겨찾기