inblog logo
|
LifeLog, DevLog
    Git

    Git 정리 - 1

    KYJTHEYJ's avatar
    KYJTHEYJ
    Dec 01, 2025
    Git 정리 - 1
    Contents
    Git 용어 정리 및 해설Git 명령어 (CLI 환경)git add [files]git statusgit commitgit diff [commit1 commit2]git loggit reset <--강도> <커밋>, restore <파일> , revert <커밋>git cherry-pick [특정 커밋]git remote, clonepull, merge, push, origin 키워드에 관하여Linux 명령어 정리 및 해설

    Git 용어 정리 및 해설

    • Working Tree

      • 워킹 디렉토리, 스테이징 에이리어, 로컬 레포지토리 (깃 디렉토리)
        3개 영역을 아우르는 것을 지칭

    • commit의 저장은 hash로 이루어짐

      • 아래 snapshot의 사진의 98ca9.. 34ac2.. f30ab.. 들

    • Head

      • 현 작업의 위치, 커밋이 변경될 때마다 자신의 최신 값을 가리키고 있음
        (포인터로 가장 최신 커밋 이력을 보고 있음)

        • snapshot

          • 특정 시점의 프로젝트 소스코드의 특정 버전을 말함

          Git 명령어 (CLI 환경)

          git add [files]

          • 명시한 파일을 스테이징

          git status

          • 현재 사용 중인 브랜치와 추적하는 파일 상태를 확인

          git commit

          • 추적하는 파일들의 변경이력을 저장하는 작업

            • 위와 같은 형태로 아무 후속 키워드 없이 Commit 시 해당 화면 출력

            • 추가로 이제 커밋 메시지에 대한 것을 서술 후 :wq로 커밋 처리

              <제목(50자 이내)>
              
              <본문(선택 사항)>
              - 변경한 이유, 변경한 내용, 주요 변경점
              - 한 줄에 72자 이내로 작성
              
              <꼬리말(선택 사항)>
              - 이슈 트래커 ID
              - BREAKING CHANGE: 주요 변경사항 설명
          • git commit -m [message]

            • 위와 같이 짧게 메세지 작성하여 가능

          git diff [commit1 commit2]

          • 현재 변경사항을 비교하여 출력
            커밋 옵션 두개 명시할 경우 서로간 비교하여 출력

          git log

          • 깃의 커밋 내역들에 대한 상세한 정보를 보여줌
            (작성자~메세지~일자 등 여러가지)

          git reset <--강도> <커밋>
          , restore <파일> , revert <커밋>

          reset 의 강도에 관해

          • soft → 커밋 기록 되돌림, 작업 디렉토리에 파일은 그대로 유지함
            커밋된 내용은 되돌리나 작업 중인 상태는 변하지 않음
            즉, 스테이징에 파일은 그대로 남음
            (커밋 메세지를 다시 작성하고 싶을 때)

          • mixed → 커밋 기록과 스테이징을 되돌리고
            작업 디렉토리에 파일은 그대로 유지함
            즉, 스테이징 파일은 해제되어 다시 수정되야할 상태로 돌아감
            (커밋 내리고 해당 변경사항을 스테이지에 내렸으니 다시 add 필요)

          • hard → 커밋 기록, 스테이징, 작업 디렉토리 전부 되돌림
            즉, 모든 변경사항의 삭제가 이루어짐

          restore

          • 과거 커밋에 영향을 주지 않고 커밋으로 작업이 저장 전의 스테이지 단계로 작업을 취소 할 때 사용함

          • git restore <file> → 수정 중인 파일을 복원

            • 과거에 커밋되어 저장된 상태로 파일을 복원함

          • git restore --staged <파일> → 스테이징 해제

            • 스테이징 영역에 추가된 파일을 스테이징 해제함
              스테이징된 파일을 작업 중 상태로 되돌림 → 내용을 되돌리는 게 아님!
              (정말 쉽게 말해 작업 변경 내역에 올라오지 않게 내리는 것임)

          • 이 모든 것들은 커밋 이력을 조정하여~의 대한 복구가 아니라
            현재 작업 중인 파일을 커밋 이력에 해당하게 해당 파일을 복원하는 것

          revert

          • 기존 커밋을 취소하지만 커밋 기록을 보존하며 새로운 커밋을 생성하게 함
            안전하게 변경 사항을 과거로 되돌릴 때 사용함

          • git revert <커밋> → 특정 커밋을 취소
            커밋의 변경 사항을 취소하고, 이 취소 작업을 새 커밋으로 저장하게함

          • git revert -n <커밋> → 커밋을 취소하고 새로 커밋을 생성하지 않음
            커밋을 취소하지 않고, 취소된 변경 사항을 작업 디렉토리에 반영

          • 직전의 커밋을 지정하는 키워드 → HEAD~
            ex) git revert HEAD~

          • 실제 시나리오 예시
            abcabe (HEAD) fix: 기능 A 버그 수정! (허나 버그가 나옴)
            abcabd feat: 기능 B 추가
            abcabc feat: 기능 A 추가

            • 이럴 경우에 우선 push 여부를 보아야함

            • 아직 push 전일 경우 → reset soft로 작업자가 진행하여 재수정 커밋

            • push 후일 경우 → revert abcabe로 취소 커밋 생성 후 우선 Push

            • 그냥 작업 중인데 이상하게 전체가 꼬였을 경우 → restore 이후 작업

          git cherry-pick [특정 커밋]

          • 특정 브랜치의 커밋 내역을 복사해옴

            • 복사된 커밋은 원래 브랜치와 완전한 별개의 기록으로 가져옴

            • 커밋의 추적이 어려움

            • 정말 긴급한 상황에 사용

          git remote, clone

          • 원격 저장소를 가져오기 → git clone <url>

          • 레포지토리 연결하기 → git remote

            • 완전한 새 프로젝트를 시작해서 git init 이후에 연결시
              git remote add <url>

            • 원격 저장소가 이미 있는데 주소를 바꿀 때

              (remote -v 를 했는데 이미 있는 경우)
              → git remote set-url <url>

          pull, merge, push, origin 키워드에 관하여

          • git pull [원격 git 별명] [레포지토리 이름]

            • 원격 → 로컬

          • git merge [레포지토리]

            • 원격 ←→ 원격, 로컬 ←→ 로컬

          • git push [원격 git 별명] [레포지토리 이름]

            • 로컬 → 원격

          • origin? → 초기 아무 별명을 지정하지 않고 url 지정시 origin으로
            원격 git 의 별명으로 저장됨

            git clone https://github.com/user/repo.git -> origin으로
            
            git clone -o github https://github.com/user/repo.git
            -> origin에서 github로 지정됨
            
            -- 실제 네이밍은 아래처럼 사용함
            git remote add github-work https://github.com/company/repo.git
            
            git remote add github-personal https://github.com/me/repo.git
            
            git remote add gitlab-backup https://gitlab.com/backup/repo.git
            

    Linux 명령어 정리 및 해설

    • touch

      • touch <파일명.확장자> → 파일 생성

    • cp

      • cp <복사할 파일 이름> <복사할 위치>

    • less

      • cat 처럼 파일 내용을 보여주는데, 한번에 보여지는 만큼만 출력

    • head ←→ tail

      • head [-n 원하는 줄 수] 파일의 앞부분만 지정한 만큼 보여주는 것

      • tail은 뒷부분

    • vim, nano

      • 둘 다 텍스트 편집기로 vim의 사용이 더 흔한 것으로 암

      • vim [file] 로 로드 후 단축키

        • a,A → 커서 후, 커서 전 입력 명령어

        • :set number → 줄 번호 나오게하기

        • G → 자료 맨 끝으로 이동
          gg → 자료 맨 앞으로 이동

        • 이동은 화살표 or hljk (좌상하우) (Visual Block 등에서 사용)

        • ctrl + v (Mac), shift + v (Window) → 블록 단위 선택
          (하단에 --VISUAL BLOCK-- 모드 나옴)

          • 마우스로 지정 후 d → 선택 범위 지움

        • dd → 커서 위치의 줄 삭제

        • u → 작업 취소

        • ctrl + r → 작업 다시 실행

    • df

      • 사용 중인 디스크 경로, 경로별 용량 파악에 사용 (byte 단위)

      • -h 옵션을 통해 GB 단위로 보여줄 수 있음

    • du

      • 개별 경로에서 사용 중인 용량을 보여줌 (byte 단위)

      • -sh 추가 옵션을 통해 용량을 표기 (M, G 같은 단위를 붙여서 보여줌)

    • whoami

      • 현재 터미널을 사용하는 유저 정보를 보여줌

    • grep

      • 입력으로 출력된 콘솔 내용에서 특정 문자열을 찾기 위해 사용

      • grep “<찾으려는 문자열>” [<문자열 검색할 파일 또는 명령어>]

      • ps aux | grep [프로세스 이름] 같이 조합해서 사용

    Share article
    Contents
    Git 용어 정리 및 해설Git 명령어 (CLI 환경)git add [files]git statusgit commitgit diff [commit1 commit2]git loggit reset <--강도> <커밋>, restore <파일> , revert <커밋>git cherry-pick [특정 커밋]git remote, clonepull, merge, push, origin 키워드에 관하여Linux 명령어 정리 및 해설

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog