ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • git 명령어 archive
    카테고리 없음 2021. 9. 5. 17:59

    terminology

    - Remote Repository(원격 저장소) : 원격 서버에서 관리되는 저장소. 다수의 사람이 공유하고 사용하는 레포다.

    - Local Repository(로컬 저장소) : 내 맥북 저장소

    - Index : 변경 사항이 로컬 저장소에 저장 (commit) 되기 전에 임시로 기록되는 공간. 이 공간에 기록하는 행위를 Staging이라고 한다.

    - Commit : 프로젝트의 변경된 이력(Staged)을 로컬 저장소 에 저장하는 행위

    - Branch : 애플리케이션 업데이트 구현, 버그 수정 등 작업 변경사항을 하기 위한 단위

    - Checkout : 여러 개의 commit 혹은 Branch의 commit 사이를 이동하는 행위. 특정 시점으로 돌아가기

    - Merge : 변경 사항이 적용된 다른 Branch 를 현재 Branch에 병합하는 행위

    - Conflict : 코드 Merge 시에 상충하는 상황이 발생하는 경우

    - Clone : 원격 저장소로부터 특정 프로젝트를 로컬 저장소에 다운로드하기

    - Pull : 원격 저장소로부터 변경된 내역을 로컬 저장소에 반영하기

    - Push : 로컬 저장소에 수정된 내역을 원격 저장소로 반영하기 

     

    1. 초기화

    - init : 현재 디렉토리를 git repo로 초기화. 로컬 repo로 관리된다.

    • .git 경로가 생성되고 하위에 index, object 등이 존재함
    # git init
    mkdir -p /home/ubuntu/work/git
    cd /home/ubuntu/work/git
    git init
    
    tree .git

    - clone : 원격 저장소 내용을 로컬 저장소로 다운로드

     

    2. staging

    - add : 저장 대상 파일들을 인덱스에 스테이징

    • 빈 디렉토리는 추가 안됨
    • 모든 unstage된 파일을 추가하는 옵션 -A는 주의해서 사용하기 !!
    • .gitignore 파일로 add하지 않을 파일 명시 가능

    - reset : 스테이징 파일들 -> 언스테이징 하기 

    - status : 현재 경로의 스테이징 상태 출력

    - diff : 스테이징 된 파일에 따라 발생하는 이전 상태와의 차이 출력

    - commit : 스테이징(add) 된 내역 스냅샷으로 저장하기

    • 스테이징 된 내역 없다면 커밋되지 않습니다
    # git add (-A, --all) [file]
    touch README.md
    git add README.md
    git status
    
    # git reset [file]
    git reset README.md
    
    # git status (-s, --short)
    git status -s
    
    # git diff (--name-only)
    echo "hello lgde" >> README.md
    git add README.md
    git commit -am "commit 문구"
    
    # git commit -m "descriptive message"
    git status -s
    git add README.md
    git status -s
    git commit -m "commit 문구"
    git status -s
    # --> " M": 수정된 파일, "M ": 스테이징된 파일, 커밋된 파일은 status에서 보이지 않음

    3. 브랜치

    - branch : 로컬 브랜치 목록을 출력, 생성, 삭제 작업을 수행(-r: 리모트, -a: 전체)

    # git branch (-r, --remotes | -a, --all)
    git branch -a
    
    # git branch [create-branch]
    git branch lgde/2021
    git branch -a
    
    # git branch (-d, --delete) [delete-branch]
    git branch -d ldge/2021
    
    git branch -a

    - checkout : 해당 브랜치로 이동

    • 존재하는 브랜치로만 체크아웃이 됨
    • -b 옵션 : 브랜치 생성하면서 이동, 이미 존재하는 경우 해당 옵션 쓰면 오류남

    - merge : 대상 브랜치와 병합하기, 대상 브랜치는 영향이 없고, 현재 브랜치가 변경됩니다.

    - log : 커밋 메시지를 브랜치 히스토리 별로 확인하기

     

    4. situations

    - 실수로 삭제된 파일 복구하기

    • -- 키워드와 함께 복구할 대상을 지정하면 stage/commit 외의 수정 사항을 되돌립니다.
    • -- : 이 키워드 이후에 나오는 항목을 파일명으로 인식한다.
      • checkout <path> 는 매칭되는 파일들을 저장되어있는 상테로 restore
      • checkout <branch> 는 지정한 브랜치로 HEAD를 이동하라는 의미
    git checkout -- . # 수정한 내역 버리고 마지막 커밋 시점으로 롤백
    git status -sb
    ls -al
    
    # commit 이전 삭제한 파일 복구하기
    # HEAD : 가장 최근 commit -> commit 후에는 해당 commit이 HEAD가 된다
    git checkout HEAD {filename}
    git status -sb

    - 브랜치 꼬였을 경우

    git reflog
    # clone한 시점의 HEAD 번호로 리셋 후, 일부 수정된 사항은 checkout 하면 정리할 수 있음
    git reset HEAD@{number}
    git checkout -- .

    - pull 해온 파일들 수정 후에 또 pull 하려고 할 때 수정 파일들 오류 목록으로 뜨면서 "Please commit your changes or stash them before you merge" 뱉을때

    git stash
    git pull
    # 또는 수정파일 직접 백업, 삭제 후 git pull

     

    #홈주제 #생활정보 #생정꿀팁

    댓글

Designed by Tistory.