git push -f

1
git push -f

git push -f

  • -f, --force옵션은 푸쉬하는데 원격 저장소를 아예 덮어쓰는 옵션이다
  • 따라서 이미 원격 저장소에 올렸는데 커밋을 수정한 경우에 사용할 수 있다

바로 직전 커밋 취소

1
2
3
4
5
git reset --soft "HEAD^"

또는

git reset --soft HEAD~1
  • 이렇게하면 파일 상태는 그대로 이며 직전 커밋내역만 없어진다
  • 나는 빠진 파일을 추가하거나 커밋 메시지를 다시 작성할 때 쓴다

more?

.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을 설정하는데 그렇게 쓰는 방법도 있고,

git 카테고리 생성

  • git, github 공부한 내용 올리기