.gitignore 써서 커밋 가볍게 하기

  • 깔끔하게 코드 공유하기, 숨겨야하는 파일 숨기기!

따라하기

준비물

  • 깃허브 데스크탑
  • 이클립스 (java IDE)

샘플 자바 프로젝트 만들기

  • 이런 구조의 자바 프로젝트가 있다
    .
    ├── .settings
    │ └── org.eclipse.jdt.core.prefs
    ├── bin
    │ ├── HelloWorld.class
    │ └── Tmp.class
    ├── src
    │ ├── HelloWorld.java
    │ └── Tmp.java
    ├── .gitignore
    ├── .classpath
    └── .project

  • .java 파일은 컴파일 과정을 통해 .class 파일이 된다

  • 코드를 공유할때 java파일만 있어도 충분히 공유 받은 사람이 컴파일해서 사용할 수 있다

  • .class 파일은 공유할 필요가 없는 것이다

  • .gitignore 파일이 빈파일이라고 하면 총 8개의 파일이 트랙된다

.gitignore에 *.class추가하기

.gitignore
1
*.class
  • .gitignore 에 위 내용을 추가하면
  • 이렇게 .class 파일이 빠지고 6개 파일만 트랙된다
  • 이렇게해서 내 로컬에는 남아있지만 깃에서는 무시된다

깃허브 데스크탑에서 gitignore 파일 추가하기

  • Tmp.java는 내가 혼자 막 테스트하느라 임시로 생성한 파일이라고 해보자
  • 다른사람이 봐도 아무 의미가 없는 파일이라면 .gitignore에 추가해준다
  • 깃허브 데스크탑에서 우클릭으로 무시 목록에 추가해보았다
  • 그러면 이렇게 자동으로 .gitignore이 업데이트 된다
  • 이렇게 Tmp.java가 무시되어 5개만 트랙되는 모습니다

  • 이런식으로 특정 파일을 골라서 무시할 수 있다

  • 이제 init이라는 커밋 하나를 해보겠다

이미 커밋한 파일 gitignore하기

  • HelloWolrd.java를 수정했다.
  • 근데 HelloWolrd.java도 .gitignore에 추가해야할 거 같아서 Tmp.java와 같은 방법으로 무시하기를 했는데…
  • .gitignore에 분명이 추가되었지만 여전히 트랙되고있다…
  • 이미 한번 커밋된적이 있는 파일들을 새로이 .gitignore에 추가했을때 생기는 문제다
  • 이럴 때는 터미널에 git rm -r --cached .명령을 통해 캐시를 삭제하고..
cmd
1
git rm -r --cached .
  • 깃허브 데스크탑으로 돌아와보면 이렇게 제외되있는걸 확인할 수 있다
  • 초록색 + 표시는 무시해도된다. 이미 커밋되었지만 캐시가 삭제되서 다시 나타난 거다

여기까지 커밋 내역

  • 이렇게 하나씩 수동으로 무시할 파일을 지정하는 방법이 있지만
  • 프로젝트 구조가 비슷하기 때문에 사람들이 미리 정의해둔 .gitignore을 쓰면 편리하다
  • 깃허브 데스크탑에서 로컬 저장소를 생성할때 gitignore을 설정하는데 그렇게 쓰는 방법도 있고,

여러 컴퓨터에서 hexo 블로깅하기

{username}.github.io
hexo repo

  • hexo 블로그를 운영한다면 이렇게 2가지 저장소가 있을 것이다
  • hexo repo를 깃허브에 올리고, 다른 컴퓨터에서 클론해서 받아온다
  • 그리고 hexo 디렉터리안에 .deploy_git 디렉터리를 만들고 그안에 {username}.github.io 를 클론한다

상황

  • 블로그를 찍어내는 hexo 디렉터리를 깃허브에 올렸다
  • 다른 컴퓨터에서 hexo 저장소를 클론하고 블로그 배포를 해보았는데,
  • .deploy_git 디렉터리가 아예 새로 생성되면서 chinsun9.github.io 의 커밋 내역이 싹다 날라갔다..
  • chinsun9.github.io 의 커밋 내역을 유지하면서 여러 컴퓨터에서 블로깅을 할 수 있을까?

해결

  • .deploy_git 가 있는 내용이 force push 된다
  • 당연히 새로운 컴퓨터에서는 .deploy_git를 새로생성하기때문에 커밋내역이 싹 날라가게된다
  • .deploy_git의 내용을 기존의 내용으로 채워주고
  • hexo generate하면 커밋내역도 유지되면서 변경사항이 적용된다
  • 그리고 내가 이미지를 public/images 에 저장해 두었는데, 이 디렉터리가 gitignore에 설정 되어 있어서
  • 이미지가 하나도 깃허브에 올라가지 않았었다. 그것도 모르고 클론하고 배포를 해버렸다
  • 그래서 다시 원래 작업하는 컴퓨터에서 배포하여 원상복구 시켰다
  • .gitignore도 여러컴퓨터에서 작업할 때 적절히 설정해야한다

참고