Git CLI 명령어 정리

Jaewon·2021년 4월 14일

Git

목록 보기
2/2

git clone

  • git clone 레포지토리 주소 : 해당 레포지토리를 로컬 저장소로 가져온다.

git add

파일을 stage에 올린다.

  • git add . : 점은 현재 폴더, 현재 폴더에 있는 모든 파일을 올린다.
  • git add 파일명 : 해당 파일만 올린다.

git commit

  • git commit -m 이름 : 해당 이름의 커밋을 생성한다.
  • git commit --amend : 가장 마지막 커밋을 수정한다.
    git commit --amend -m 이름 : 해당 이름으로 커밋 이름을 수정한다.
    git commit --amend --no-edit : 커밋 이름은 그대로 두고 stage에 있는 파일을 커밋에 추가한다.

git log

커밋 이력을 보여준다.

  • HEAD -> main : 로컬 저장소 커밋 위치, main 브랜치
  • origin/main, origin/HEAD : 원격 저장소 커밋 위치, main 브랜치

원격 저장소의 커밋을 최신으로 업데이트 하려면 아래 명령어를 사용한다.

git push

  • git push origin 브랜치명 : 해당 브랜치로 커밋을 업로드한다.

git checkout

  • git checkout 커밋 ID : 해당 커밋으로 HEAD를 이동시킨다.

현재 시점으로 HEAD를 다시 옮기려면 git checkout main 명령어를 사용한다.

branch

HEAD를 이동시켜 아무 원하는 커밋 지점에서 브랜치를 만들 수 있다.

  • git checkout -b 브랜치명 또는 git switch -c 브랜치명 : 새로운 브랜치를 만든다.
  • git checkout 브랜치명 또는 git switch 브랜치명 : 해당 브랜치명으로 이동한다.
  • git branch : 브랜치 목록을 확인한다.
  • git branch -d 브랜치명 : 해당 브랜치를 삭제한다.
  • git push --set-upstream origin 브랜치명 : 해당 브랜치를 원격 저장소에 업로드한다.

git reset

해당 커밋을 삭제한다.

  • git reset --hard HEAD~
    --hard 옵션은 커밋을 삭제하고 그 커밋의 변경 이력도 다 날려버린다.
    여기서 물결 표시는 현재 HEAD에서 얼마나 먼 커밋으로 돌아갈지를 나타낸다.
    HEAD 대신 커밋 ID를 적어도 된다.

커밋을 삭제하면 로컬 저장소에선 삭제되었지만 원격 저장소에선 아직 그 커밋이 남아있다. 따라서 이 상태로 원격 저장소에 push 하게 되면 충돌이 발생한다. 로컬 저장소에서 해당 커밋이 사라짐으로써 원격 저장소와 커밋 히스토리가 불일치 하기 때문이다.
따라서 git push origin 브랜치명 --force 명령어를 사용한다. 히스토리를 무시하고 현재 변경 사항을 강제로 덮어씌운다고 생각하면 된다. 만약 삭제한 커밋을 되돌리고 싶으면 원격 저장소에서 커밋을 다시 가져오면 된다. git pull origin 브랜치명 입력

  • git reset HEAD~
    옵션을 적지 않으면 mixed reset이라고 부른다.
    mixed reset은 커밋 삭제 후 그 커밋의 변경 이력들은 유지한 채 unstage 영역으로 옮겨준다.

  • git reset --soft HEAD~
    stage 영역으로 옮겨준다는 것 이외에 mixed와 동일하다.

git revert

해당 커밋 전의 변경내역으로 되돌아간다.

  • git revert 커밋 ID 또는 git revert HEAD~

reset 과 revert 둘 다 과거로 되돌아간다는 점에선 같다.
하지만 reset은 커밋을 삭제하고, revert는 커밋을 삭제하지 않는다.
따라서 원격 저장소에 이미 올라간 커밋이라면 되도록이면 reset을 쓰지말고 (나 혼자 쓰는 브랜치면 상관없다. 하지만 동료와 같이 쓰는 브랜치라면 고친 이력이 남는 revert가 낫지 않을까) revert로 내역을 되돌린 뒤 되돌린 상태의 새로운 커밋을 push하자.

Fork한 저장소와 원본 저장소 동기화
https://dev-yakuza.posstree.com/ko/git/sync-fork-repository/

0개의 댓글