Potato

Git undoing

사전 준비

  1. Github에 원격 Repository를 생성한다.
  2. git clone 을 통해 Local Repository로 복사한다.

Git의 파일 관리 구분 2가지

  1. Untracked
    • git이 추적하지 않는 파일
    • 윈도우 기준으로 폴더 내부에 .git 폴더가 존재하면 자동으로 추적된다.
    • .gitignore 파일을 통해 폴더나 파일을 Untracked 상태로 만들 수 있다.

  1. Tracked
    • git이 변화를 감지하고 있는 상태
    • Tracked 상태는 아래 3가지로 나눌 수 있다.
      1. Unmodified
        • 수정하지 않은 파일 ( == 최신 파일 )
        • Local Git 에 올라간 파일과 비교하였을 때, 수정되지 않은 상태
      2. Modified ( vscode에선 Changes 로 표현 )
        • 수정한 파일
      3. Staged ( vscdoe에선 Staged Changes)
        • commit을 하기 위해 기다리는 상태
        • 이 영역을 Staging Area 라고 부름
    • 명령어 처리 : Local Git Repository
    # 터미널 창에서 진행
    
    현재 디렉토리를 Git 작업 디렉토리로 초기화        : $ git init
    Unmodified 상태를 Modified 상태로 변경하려면     : 파일 수정
    Modified 상태를 Staged 상태로 변경하려면         : $ git add
    Staged 상태를 Local Repository로 올리려면       : $ git commit
    현재 Git 파일 상태를 확인 하려면                 : $ git status
    Git 작업 내역 확인                              : $ git log
      - Commit id, 작성자, 날짜, commit message 확인 가능
      - 종료 명령어 : q
    • 명령어 정리 : Remote Git Repository

1. 최초 작업 시 
    Local Repo 에서 Remote Repo로 올리려면      : $ git remote add
    Remote Repo 에서 Local Repo로 올리려면      : $ git clone


2. 진행 중일 때
    Local Repo 에서 Remote Repo로 보내려면      : $ git push
    Remote Repo 에서 Local Repo로 가져오려면    : $ git pull

 

Working Directory 작업 단계 되돌리기

git restore ( 직전 작업 취소하기 )

  • Working Directory에서 수정한 파일을 수정 전(직전 커밋)으로 되돌리기
  • 이미 버전 관리가 되고 있는 파일만 되돌리기 가능
  • git restore를 통해 되돌리면, 해당 내용을 복원할 수 없으니 주의!
  • $ git restore <파일 이름>
  • [참고] git 2.23.0버전 이전에는 $ git checkout -- <파일 이름>

Staging Area ( 작업 단계 되돌리기 )

  • Staged 상태의 파일을 Modified 상태로 되돌리기 ( add 취소 )
  • root-commit 여부에 따라 두 가지로 나뉨
    • root-commit : 이전에 commit을 한 적이 있는 파일이면 True
    • root-commit이 없는 경우 : $ git rm --cached <파일 이름>
    • root-commit이 있는 경우 : $ git restore --staged <파일 이름>

Repository 작업 취소

  • Commit을 완료한 파일을 Staging Area로 되돌리기 ( commit 취소 )
  • 명령어 : $ git commit --amend
  • Staging Area에 다른 파일이 올라와 있는가에 따라서 두 가지로 나뉨
    • Staging Area에 새로 올라온 내용이 있다면 : 직전 Commit 의 메세지만 수정
    • Staging Area에 새로 올라온 내용이 있다면 : 직전 Commit을 덮어쓰기
      • 이 때, Staging Area의 모든 내용이 Commit에 포함 된다.
  • Commit 메세지 수정을 위해 Vim 편집기가 열림
    • 입력 모드(i) : 문서 편집 가능
    • 명령 모드(esc)
      • 명령 모드는 : 과 함께 사용한다.
      • 저장 후 종료 :wq
      • 강제 종료 :q!
        • 리눅스에서 특정 동작을 강제로 수행하게 하는 것 : !

'Git' 카테고리의 다른 글

Git Advanced ( branch란, branch 사용법 )  (0) 2022.10.28
Git Advanced ( Git reset & revert 사용법)  (0) 2022.10.28

+ Recent posts