티스토리 뷰

Git

Git Basics

Nyugati 2023. 11. 2. 00:02

Git Intro

로컬 디렉토리(modified files)  git add staging area(staged files)  git commit remote repo(committed files)

 

  • 깃 안의 정보들은 checksum으로 참조
  • 파일이 repo에 저장되면, repo 안에서 직접적으로 파일을 변경하는 것은 불가능
  • 깃은 working directory, staging area, repository를 모두 분리해서 관리

 

Using Git Locally

repository 생성

Creating

  1. 로컬 디렉토리를 git repository skeleton으로 변경
  2. 작업 디렉토리로 이동 → git init
    • version-controlling 시작 X
  3. 작업 디렉토리 내부에 .git 폴더 생성
    • .git 은 git repo의 skeleton 정보를 담고 있음
    • .git을 copy 함으로써 backup, clone 가능

Cloning

  1. 기존에 존재하는 git repo를 clone
  2. git clone [address]

 

Tracking new files and Recording changes

staged : Changes to be committed

unstaged(modified) : Changes not staged for commit

 

commit 시 발생하는 일

 

  • Commit object <Commit> : root tree에 대한 포인터를 포함
  • Tree<Structure> : 특정 폴더의 내용이나 파일명이 포함됨. 서브트리가 존재할 수도 있음
  • Blob<File> : 커밋된 파일의 정보를 보관. 파일 하나하나마다 생성됨

 

  • Commit object는 이전 commit의 object를 가리키는 포인터를 포함하고 있음(가장 첫 commit object 제외)

 

기본 명렁어

1) Basic

  • command는 항상 working directory대상으로 적용

git status

  • 파일이 어느 상태인지 보여줌

git add [file]

  • commit을 위해 새 파일/변경된 파일을 staging area에 올림
  • 이렇게 함으로써 version control 시작
  • staged 상태의 파일을 로컬 디렉토리에서 수정 시
    • 로컬 디렉토리, staging area 각각의 파일 내용이 달라짐
    • (로컬 디렉토리의 파일 - 수정 적용 O,  staging area 파일 - 수정 적용 X)
    • 깃은 두 파일을 분리해서 관리함
    • 로컬 디렉토리의 파일을 git add 하면 다시 하나의 파일로 인식됨

git commit, git commit -m “[message]”

  • staged → git repo로 이동
  • 기존의 staging area의 내용이 repo에 snapshot 처럼 기록되고, staging area의 내용은 모두 지워짐

git rm [file]

  • working directory에서 삭제 + 해당 변화를 staging area로 올리기(add)
  • rm [file]
    • 깃에서 modified으로 인식
    • add 명령어로 변화를 staging area로 올려야 함

git rm —cached [file]

  • staging area에서 파일을 삭제하고 working directroy에서는 삭제하지 않을 때
  • tracking 제거하는 역할
  • 파일은 untracked상태 변경

git mv [fileA] to [fileB]

  • 로컬에서 파일을 rename/moves + staging area에 변화 올리기(add)

mv [fileA] to [fileB]

  • 로컬에서만 파일 변경 적용
  • add 명령어로 변화를 staging area로 올려야 함
  • ?? : untracked

 

2) Checking the status of Git

git status

  • 파일의 현재 상태 보여줌
  • M, A : staged
  • M : modified but not staged

git diff

  • git diff : 파일의 unstaged 변화 제공
  • git diff --staged : 파일의 staged 변화 제공

git log

  • who commited
  • when the commit is made
  • commit messages
  • -p, --p 옵션 사용시 more details
  • git log --author “user name” : 개인 contribution 확인
  • 출력 포맷 설정
    • git log --pretty=oneline : 한줄표기
    • git log --pretty=format: “specifiers”
      • specifiesr 예시 : “%h: %a, %ar”
        • %h : check sum
        • %an : author name
        • %ar : author date

 

3) Undoing actions

git commit --amend (re-commit)

  • 가장 최근에 쓴 commit에다 특정 파일의 변화를 덮어쓰기(commit 합치기)

git restore --staged “staged file” (unstaging)

  • staged → modified 상태 변경
  • commit 상태만 아니면 이전의 commit 상태로 돌이키는 기능

git restore “modified_file” (unmodifying)

  • modified → unmodified(=committed)
  • 가장 최근에 commit 했던 파일 상태로 되돌리기

git reset --hard <comit checksum>

  • 이전 커밋 상태로 롤백
  • 커밋의 checksum 값을 알아야 함

 

4) Making a blacklist

.gitignore

  • 깃 레퍼지토리에 추가되지 말아야 하는 파일 정의
    •  

'Git' 카테고리의 다른 글

Git branch  (0) 2023.11.02
CMD | 깃&깃허브 사용법  (0) 2021.08.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함