본문 바로가기

공부를 합니다/깃 & 블로그 (Git & Blog)

git-tips

Git을 직접 써보면서 배워가는 Git 기능 정리

 

commit --amend (2020.08.27)


마지막 commit의 commit message 수정

git commit --amend
  • 가장 마지막으로 작성한 commit의 commit message를 수정한다
  • 명령어를 입력하면 마지막 commit 문서가 텍스트 에디터로 열리고 이를 수정하여 저장하면 된다.
git commit --amend -m "new commit message"
  • commit 할 때와 동일하게 -m 옵션을 사용하면 텍스트 에디터를 사용하지 않고 메시지를 바로 변경할 수 있다.

참고

 

config - core.quotepath (2020.08.27)


한글 파일/폴더 이름이 숫자로 깨져서 나오는 경우

git config --global core.quotepath false
  • core.quotepath는 일반적이지 않은(unusual) 문자를 backslash나 byte (0x80보다 큰 값에 대해서)를 이용해 escape 시킬지 여부를 결정하는 설정이다.
  • 이 값을 false로 지정하면 0x80보다 큰 값이 unusual 하다고 여겨지지 않으며, escape 되지 않고 그대로 출력된다.
  • 그러므로 기존(default: true)에 숫자로 escape 되던 한글 문자가 escape 되지 않고 그대로 출력된다.

참고

 

fsck (2020.08.27)


database 안의 object 간의 connectivity와 validity를 판단한다.

git fsck --full

참고

 

gitignore (2020.08.27)


  • git으로 추적할 필요가 없는 (git이 '무시'할) 파일이 존재할 때, 이를 목록화하여 일괄적으로 addcommit에서 제외할 수 있다.
  • 그 목록을 작성해놓은 놓은 파일이 .gitignore이며 프로젝트의 최상위 폴더에 만들어주면 바로 적용된다.

 

gitignore 파일 생성

vim .gitignore
  • 프로젝트의 최상위 폴더 (.git이 위치한 폴더)에 .gitignore파일을 생성한다.
  • 자신이 사용하는 텍스트 에디터(e.g., vim)를 이용해 파일을 생성한다.

 

gitignore에 파일 목록 작성

  • 제외할 특정 폴더나 파일 이름, 확장자 목록을 작성해준다.
문법 의미
filename.ext 파일 이름이 filename이고 확장자가 ext인 특정 파일을 제외
*.ext 확장자가 ext인 모든 파일을 제외
foldername/ 폴더 이름이 foldername인 폴더의 모든 파일을 제외
# 주석

 

Example

# Directories
/bin/
target/

# Compiled class file
*.class

# Log file
*.log

# Package Files 
*.jar
*.warD1
*.nar
*.ear
*.zip
*.tar.gz
*.rar

gitignore commit, push 하기

git add .
git commit -m "git ignore add"
git push
  • .gitignore 파일을 commit 한 뒤 push 하면 원격저장소에도 적용된다.
git rm -r --cached .
  • gitignore가 적용되지 않는 경우 다음과 같이 캐시를 정리해주고 다시 시도한다.

 

참고

 

index.lock (2020.08.27)


fatal: Unable to create '[repository root]/.git/index.lock': File exists

Another git process seems to be running in this repository ...
  • git add나 commit을 진행하다가 비정상적으로 git이 종료된 뒤, 다시 add나 commit을 하려고 할 때 발생하는 error message.
rm -f ./.git/index.lock
  • error message 첫 줄을 참고하여 index.lock 파일을 제거해주면 정상 작동한다.

참고

 

reset (2020.08.27)


git reset은 특정 버전으로 돌아가는 기능으로 이를 이용해 최근에 시행한 add나 commit을 취소할 수 있다.

git reset HEAD [파일 이름]
  • 현재 staging area에 존재하는 파일을 HEAD로 reset 시키면 unstaged 상태로 돌려놓는 것과 같다.
  • [파일 이름]을 별도로 적지 않으면 현재 staging area에 올라가 있는 모든 파일을 unstage 시킨다.
git reset HEAD^
  • 특정 파일을 빠뜨리거나 너무 이른 타이밍에 commit을 한 경우에도 reset을 이용해 commit을 취소할 수 있다.
  • 별도의 옵션을 적지 않으면 commit을 취소하고 commit 했던 파일을 보존하되 unstage 상태로 돌려놓는다.

참고

 

show (2020.08.27)


각 commit 정보를 보다 구체적으로 확인한다.

git show
  • 가장 최근 commit의 정보를 확인한다.
  • commit hash, commit message, 변경된 파일 목록, 변경 내용 등을 확인할 수 있다.
git show [commit hash or pointer]
  • 명령어 뒤에 특정 commit hash 값을 입력하거나 포인터 (e.g., HEAD)를 입력해서 특정 commit의 정보를 확인할 수도 있다.

참고

'공부를 합니다 > 깃 & 블로그 (Git & Blog)' 카테고리의 다른 글

생활코딩 Github  (0) 2020.06.24
[생활코딩] Github  (0) 2020.06.24
Git2 CLI_버전관리  (0) 2020.06.24
[생활코딩] Git2 - CLI  (0) 2020.05.28