Let's Run Jinyeah

Git reset & checkout & ignore 본문

Programming/Git&Github

Git reset & checkout & ignore

jinyeah 2020. 2. 3. 02:58

git pull을 하려니 local repository에 변경사항이 있어서 pull할 수 없다는 에러가 뜬다...

하지만 변경사항은 구체적으로 떠오르지 않는다...

변경사항을 확인했는데 굳이 add나 commit을 하고 싶지 않다...

 

1. local repository의 변경된 파일 확인

git status
  • Changes to be committed - Staging Area에 있고 commit만 하면 되는 상태
  • Changes not staged for commit - Working Directory에서 modify되었으나 add되지 않은 상태
  • Untracked - Git이 track하지 않는 changes

Git과 Github 구조

2. 특정 파일의 변경된 내용 확인

git diff <file-name>
git log -p <file-name>

3. add되지 않은 working directory의 수정 사항 취소

git checkout <file-name>

4. git add 취소 - 파일을 Unstaged 상태로 변경

git reset HEAD  //add한 파일 전체를 취소
git reset HEAD <file-name>  //특정 파일 취소

* HEAD란? 현재 브랜치 마지막 커밋을 가리킨다

4. git 가장 최근 commit 취소

# commit만 취소하고, 수정사항은 staged 상태 유지
git reset --soft HEAD^
git revert <SHA-of-commit>

# commit 취소하고 수정사항은 unstaged 상태로 변경
git reset --mixed HEAD^ 
git reset HEAD^

# commit 취소하고 수정사항을 워킹디렉토리에서 삭제
git reset --hard HEAD^ 

5. Untracked 상태 파일 처리

1) Git이 track하도록 등록

git add . # stage all files changed
git add -u . # only stage tracked file

※ git add는 앞에서 언급한 working directory의 수정사항을 staging area에 올릴 때도 사용되고 git이 track하도록 등록할때도 쓰인다.

 

2) Git repository에는 존재하지만 Git이 track하지 않도록 ignore 설정

  1. Git repository(local repository)에 .gitignore 파일을 생성한다.
  2. .gitignore파일을 열고 그 안에 무시할 파일이나 디렉토리 이름을 적는다.
    • 현재디렉토리에 있는 TODO파일 무시 - /TODO
    • build디렉토리에 있는 모든 파일 무시 - build/
    • data디렉토리에 있는 jpg 파일 무시 - data/*.jpg
  3. 원격저장소에 반영
# push해도 github에 gitignore이 반영이 안되는 경우
git rm -r --cached .
git add. 
git commit -m "커밋메세지"
git push origin {브랜치명}

 

 

 

 

 

 

 

 

 

 

Comments