본문 바로가기
Etc/Git-Github

[Git] Git 파일 관리(add, commit), Branch

by VAMOSSS 2022. 1. 9.
반응형

Git 파일 관리

워킹 디렉터리의 모든 파일은 크게 4가지 상태로 분류.

  • Untracked : git에 처음 등록되는 파일
  • Unmodified : 수정된 부분이 없는 파일
  • Modified : 수정된 파일
  • Staged : commit 될 준비가 된, stage에 올라가 있는 파일

Untracked와 Modified의 구분은 git이 이미 접근한 파일인가 아니면 서로 초면인가로 구분.
commit을 하게 되면 버전이 저장되고, commit을 하기 위해서는 staged 상태를 먼저 만들어야 한다.
staged 상태로 만드는 것을 add 라고 한다.

staged 상태에서 commit을 하게 되면 다시 Unmodified 상태가 된다.

add & commit 하면 수정된 파일의 버전을 저장한다고 생각하면 된다.

Branch

Branch는 나뭇가지를 의미한다.

Branch를 사용해서 병렬적으로 작업할 수 있고 main Branch를 건들지 않고 작업이 가능하다.

main Branch를 그대로 두고, 각자 branch에서 각자 작업하고 수정하면서 동시에 작업이 가능하다

서로 각각의 branch 과정에 개입하지 않는 commit을 가리키는 포인터로 생각하면 된다.

master(main) branch main code를 유지하면서, 다른 branch에서 main code를 수정하거나 새로운 code를 작성한다.

  • git branch  : 모든 branch 목록 나옴
  • git branch sub  : 새로운 branch 'sub' 생성
  • git branch -d sub  : 'sub' branch를 감춤 (다시 생성하면 돌아옴, 완전 삭제가 아님)
  • git branch -m <OLD_BRANCH> <NEW_BRANCH>  : Branch 이름 변경
  • git checkout sub  : 'sub' branch로 변경
  • git merge sub  : 'sub' branch의 commit을 현재 branch에 합침(merge)

※ branch 명 앞에 * 있으면 현재 작업 중인 branch

 

add, commit

  • git status  : 파일이 어떤 상태인지 확인
  • git add filename  : 해당 파일의 상태를 staged 상태로 변경
  • git add .  : 해당 폴더의 unstaged 상태를 모두 staged 상태로 변경
  • git commit -m "Message"  : Message의 내용으로 commit을 진행
  • git commit -am "Message"  : add, commit 동시에 진행 (Untracked file은 불가능)
  • git commit --amend  : 완료한 커밋을 수정 (Message 내용을 변경)

 

log

commit history 조회

  • git log  : 저장소의 커밋 히스토리를 시간순으로 보여줌
  • git log -p  : 각 커밋의 diff 결과를 보여줌
  • git log -2  : 최근 두 개의 결과만 보여줌
  • git log --oneline  : 간단하게 한 줄씩 보여줌
  • git log --oneline --branches  : 모든 branch의 commit log
  • git log --oneline --branches --graph  : commit과 branch 관계를 시각적으로 표현
  • git log --stat  : 각 커밋의 통계 정보 조회 (어떤 파일이 몇 줄 바뀌었는지)

HEAD ->              : 현재 작업 중인 Branch

Commit hash        : identifies the commit(식별자), 해쉬 코드

Authors               : 누가 (작성자)

Date                   : 언제 (날짜, 시간)

Commit message   : 무엇을 (메시지)

※ 어떤 파일인지는 알 수 없음

 

diff, checkout

  • git diff  : 수정 파일과 가장 최근 버전의 difference
  • git checkout hashcode  : 해당 버전으로 돌아감 (4자리만 입력해도 가능)
  • git checkout -  : 가장 최근 commit으로 돌아감
  • git chekout head~1   : 가장 최근 commit 한 단계 전으로 돌아감

 

reset, restore, revert

Unstaging, commit 취소(삭제)

  • git reset <filename>  : unstaging (staged -> modified)
  • git reset HEAD <filename>  : unstaging (staged -> modified)
  • git restore --staged <filename>  : unstaging (staged -> modified)
  • git reset HEAD^  : 가장 최근 commit 취소 (commit -> modified)
  • git reset HEAD~2  : 가장 최근 2개의 commit을 취소 (commit -> modified)
  • git reset --soft HEAD^  : commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존
  • git reset --hard HEAD^  : commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
  • git reset --hard <hashcode>  :  해당 commit으로 이동하고 이후 commit은 삭제
  • git revert <hashcode>  : commit을 삭제하는 것이 아니라 commit 내용을 취소한 새로운 commit revert 생성

※ < > 작성 X

 

Reference

 Git Document - Git의 기초 - 수정하고 저장소에 저장하기

 Git Document - Git의 기초 - 커밋 히스토리 조회하기

 Git Document - Git 브랜치 - 브랜치와 Merge의 기초

반응형

'Etc > Git-Github' 카테고리의 다른 글

[Git] Github push & pull  (0) 2022.01.09
[Git] Git 생성 & Github 연동  (0) 2022.01.08

댓글