본문 바로가기
Language/Git

git 명령어 정리

by mansoorrr 2024. 3. 13.

[커밋]

  • git commit: commit
    • git commit --amend: 커밋 수정
  • git log: commit로그확인(제일 위에 나타나는것이 가장 최근에 커밋한 것)
  • git revert [커밋명]: 특정 커밋 삭제(되돌리기)

 

[브랜치]

  • git branch: 브랜치 확인(현재 브랜치에는 *표시 있음)
  • git branch [브랜치명]: 브랜치 생성
    • ex2) git branch -f main HEAD~3: main브랜치를 HEAD브랜치에서 3칸 전으로 이동(상대참조~)
  • git checkout [브랜치명]: 브랜치 선택
    • ex1) git checkout main^: 메인 위에있는 부모로 Head분리(용어>이동하기>상대참조^)
    • ex2) git checkout HEAD~4: HEAD를 커밋 4개 전으로 이동(용어>이동하기>상대참조~)
  • git merge [브랜치명]: 현재 브랜치쪽으로 다른 브랜치 합치기
  • git rebase [고정브랜치명][옮길브랜치명]옮길브랜치고정브랜치 밑으로 옮기기(순서정렬)
    • git rebase -i HEAD~4: HEAD에서 네번째 위의 커밋 밑에있는 커밋들을 수정하여 복사(용어>이동하기>인터렉티브리베이스)

 

[용어]

  • HEAD
    • 현재 체크아웃된 커밋(현재 작업중인 커밋), 항상 가장 최근 커밋을 나타냄
    • 현재 브랜치에 속해있음
    • git checkout [커밋명]: 커밋에서 Head분리
  • 되돌리기
    • git reset [브랜치명]
      • 예전의 커밋을 가리키도록 이동시킴(커밋하지 않은것처럼 브랜치 옮김)
      • 히스토리를 고치는 것이기 때문에 다른사람이 작업하는 리모트브랜치에서는 쓸 수 없음
      • ex) git reset HEAD^: HEAD 위의 상태로 되돌림
    • git revert [브랜치명]
      • 되돌린 내용을 다른 사람과 공유하기 위해 사용
      • 되돌리려고한 커밋아래 새로운 커밋이 생기는 구조
      • ex) git revert HEAD: HEAD밑에 새로운 커밋 만들기
  • 이동하기
    • 상대참조: 주로 브랜치를 특정 위치로 이동하고자 할때 사용
      • Git에서 이리저리 이동할때 해시값이 필요
      • 원래 해시값은 매우 길어 고유값임을 보여줄 수 있을 만큼만 명시하면 됨
      • ^: 한번에 한 커밋 위로 움직임
        • ex) git checkout main^: main 위에있는 부모로 Head분리
        • 분리한 Head를 가지고도 checkout Head^ 가능
      • ~<num>: 한번에 여러 커밋 위로
        • ex1) git checkout HEAD~4: HEAD를 커밋 4개 전으로 이동
        • ex2) git branch -f main HEAD~3: main브랜치를 HEAD브랜치에서 3칸 전으로 이동
    • cherry-pick: 작업을 적재적소에 배치하기(복사 붙여넣기의 개념)
      • git cherry-pick <Commit1> <Commit2>....: 현재 브랜치 밑으로 Commit1Commit2를 복사 붙여넣기
    • 인터렉티브 리베이스: 작업하던 커밋을 모를때 파일 내용 확인하여 변경 추가 등을 수행할 수 있게함
      • git rebase -i HEAD~4: HEAD에서 네번째 위의 커밋 밑에있는 커밋들을 수정하여 복사
      • 수정방법에는 pick, edit, omit, squash 등이 있다.
  • 태그
    • git tag [태그이름] [커밋명]: 커밋태그 달기
    • git describe <ref>: tag에서 현재 얼마나 떨어져 있는가를 나타내 줌
      • <ref>: 커밋을 의미하는 어떤 것이건 상관 없음 
      • 반환값: <tag>_<nomCommits>_g<hash>
        • <tag>: 태그명
        • <numCommits>: 태그가 몇 커밋 떨어져 있는지 나타냄
        • <hash>: 커밋의 해시

[옵션]

  • -f: 강제실행
  • -i: 인터렉티브 리베이스(복사될 커밋들을 보여주는 vim띄우고 커밋 구분을 위한 해시들과 메세지 보여줌)
  • --amend: 커밋 수정

'Language > Git' 카테고리의 다른 글

port 22: Connection timed out  (0) 2024.04.08
freeze and install  (0) 2024.04.07
원격 저장소와 로컬저장소 연결  (1) 2024.04.07