[프로젝트 시작하기 전 봐야하는 git 컨닝노트]

2022. 10. 15. 01:18Study/Git

    실제로 프로젝트를 진행하며 도움되었던 git 명령어와 제가 사용한 상황에 대해 정리해보려고 합니다.

     

    Git 영역

    1. Working Directory : 로컬 폴더
    2. Staging 영역 : 수정된 코드 올리기
    3. Repository : 원격 저장소

    리포지토리 복제하기 git clone

    🔔 필요한 상황

    • 원격 리포지토리에 로컬 커밋을 올리기 위해 연결해야 할 때 
    git clone [url]

    리포지토리와 로컬 폴더 연결하기 git remote

    🔔 필요한 상황 

    • 원격 리포지토리에 로컬 커밋을 올리기 위해 연결해야 할 때 

    Github 리포지토리 <url>를 <name> 이름으로 원격 저장소로 등록한다. 

    git remote add [name] [url]
    
    // 깃허브 주소를 origin이라는 이름으로 다루겠다는 뜻
    git add origin https://github.com/dorrion/Ajou-Psychology-Brochure.git
    
    // SSH 주소값으로도 가능하다
    git remote add origin git@github.com:dorrion/Ajou-Psychology-Brochure.git
    
    
    // 연결되었는지 확인하기
    git remote // 위에서 연결한 [name]이 나옵니다
    git remote -v // 위에서 연결한 [name]과 [url]을 볼 수 있습니다.

    깃허브 리포지토리에서 Code를 클릭하면 각 주소를 볼 수 있다.

    로컬 저장소에서 Staging 영역으로 추가하기 git add

    // 파일의 상태를 확인합니다
    git status 
    
    // 로컬 저장소에서 수정된 파일이 모두 스테이징 영역으로 추가됩니다.
    git add . 
    git add -A
    
    // 변경사항을 하나씩 확인하면서 add하거나 제외할 수 있습니다.
    git add -p

    git status

    • 현재 파일의 상태를 알 수 있다.
    • 현재 브랜치는 master이다.
    • Changes not staged for commit: 이 영역은 아직 워킹 디렉토리에 있는 변경 내용을 보여줍니다.

    (왼) VS코드의 소스제어탭 (오) VS코드 터미널에 git status 입력

    로컬 저장소에서 변경사항 기록하기 git commit

    🔔 필요한 상황

    • 변경사항을 저장할 때
    • 커밋 컨벤션을 통해 팀 간의 커밋 규칙을 통일 할 수 있음.
    git commit -m "커밋 메시지"

    로컬 폴더에서 remote 저장소 (리포지토리)에 커밋 올리기 git push

    🔔 필요한 상황

    • 원격 리포지토리에 로컬 커밋을 올릴 때 
    git push [name] [branch name]
    
    // origin이라는 이름으로 연결한 리포지토리의 master 브랜치에 커밋을 push합니다
    git push origin master

    작업을 분리하는 git branch

    🔔 필요한 상황

    • 각각의 작업을 분리해서 진행할 때
    • 저희는 master, release, develop, feat으로 브랜치를 나누었고, 이슈 생성 후 feat/이슈번호-이름으로 각 브랜치를 만들어 작업하였습니다
    git branch // 브랜치 목록
    
    git branch <브랜치 이름> // 로컬에서 브랜치 만들기
    
    git checkout <브랜치 이름> // 다른 브랜치로 이동하기
    
    git checkout -b <브랜치 이름> // branch + checkout : 브랜치를 만들고 전환하기
    
    git branch -d <브랜치 이름> // 브랜치 삭제하기

    커밋을 되돌리는 git reset

    🔔 필요한 상황

    • 커밋을 미리 해버렸을 때 : 직전에 푸시한 커밋을 되돌릴 때

    git reset은 커밋을 흔적도 없이 제거해버리기 때문에 특히 다른 팀원 충돌 도와줄 때는 익숙하게 알고 있는 git reset HEAD^ 제외하고는 3번 이상 고민하고 찾아보고 썼고, 저는 revert를 주로 사용하였습니다.

    git log // 이력을 확인합니다
    
    git reset HEAD^ // 내가 원하는 가장 최근 커밋을 취소하고 스테이지도 취소한다
    
    --soft // 최근 커밋 하기 전
    --mixed // 최근 커밋 하기 전 + 스테이징 하기 전(default)
    --hard // 최근 커밋 하기 전 + 스테이징 하기 전 + 파일 수정하기 전 => 복구 불가능, 위험

    커밋을 되돌리고 이력을 남기는 git revert

    🔔 필요한 상황

    • 특정 커밋 되돌리면서 되돌린 이력 남기기
    git log // 커밋 히스토리 조회
    
    // 다음처럼 나오게 된다. - 출처 : https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%BB%A4%EB%B0%8B-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%EC%A1%B0%ED%9A%8C%ED%95%98%EA%B8%B0
    $ git log
    commit ca82a6dff817ec66f44342007202690a93763949
    Author: Scott Chacon <schacon@gee-mail.com>
    Date:   Mon Mar 17 21:52:11 2008 -0700
    
        changed the version number
    
    // commit 뒤의 값을 hash 값이라고 한다.
    // revert 후 자동으로 커밋에 추가하게 되는데, 막고 싶다면 --no-commit 옵션을 붙이면 됩니다
    
    git revert [되돌리고 싶은 commit hash값]

     

    원격 리포지토리의 변경사항을 받아오는 git pull

    🔔 필요한 상황

    • 원격 리포지토리의 브랜치의 변경사항을 내 로컬 브랜치에 동기화 시킬 때
    git pull <remote> <브랜치 이름>
    git pull origin develop // 예시

    로컬 작업 내용을 저장하는 git stash

    🔔 필요한 상황

    • 로컬 폴더에서 작업한 내용을 푸시 안한 상태에서 pull을 받고 싶을 때

    pull 하기 전에 git stash 한 후, git pull -> git stash pop을 하는 등으로 이용했다.

    // 스택에 진행 중인 작업을 쌓아놓는다
    git stash
    git stash save
    
    // 목록 확인
    git stash list
    
    // stash 적용
    git stash apply
    git stash apply [stash 이름]
    
    // stash 제거
    git stash drop
    
    // 적용과 동시에 제거
    git stash pop

    참고 자료

    맨 위로
    // //