버전관리(Git)의 이해

Seung jun Cha·2023년 6월 17일
0
  • 파일의 변화를 기록 (변경점 관리)
    • 복구, 특정 시점의 파일을 가져온다.
    • 수정된 내용을 비교 가능하다.
    • 스냅샷 방식을 사용해서 수정된 부분을 찾아 해당 부분만 저장한다.
    • 추적이 가능하다
  1. git init 경로명 : 지역 저장소 생성, 경로명을 입력하지 않으면 현재 폴더에서 초기화된다.
git branch : 현재 브랜치 목록
git branch 브랜치이름 : 브랜치 생성
git branch -D 브랜치이름 : 브랜치 삭제
  1. git reset Head^: 커밋한 내용을 다른사람과 공유했다만 절대 커밋을 취소해서는 안된다.
  2. git config : 깃 설정
git config (--global) user.name "사용자 이름"
git config (--global) user.email : "이메일 주소"
---> 로컬 저장소(글로벌 사용자)의 사용자 등록
git config --global color.ui auto : 깃 상태를 컬러로 보기

git config --unset 이메일주소 : 설정된 환경파일을 삭제
  1. git commit --amend : 바로 이전의 커밋을 수정한다
1. git commit -m "some files commit"
2. git add forgotten file
3. git commit --amend : forgotten file이 추가로 commit되고 
커밋메시지도 수정할 수 있다.
  1. git log : 깃 변경이력 확인
git log -oneline  : 해시태그와 커밋메시지를 한줄의 로그로 보여준다
  1. git revert : 이전 커밋과 반대의 내용을 커밋으로 추가하여 이전 커밋 내용을 되돌린다. 과거의 커밋 이력이 유지되며 다른 사람과 공유한 브랜치는 절대 하지 않는다.
  2. git status : 깃 상태 확인
  3. git cherry-pick 커밋 체크섬 : 다른 브랜치의 특정커밋을 현재 작업 브랜치로 가져온다
  4. git merge --abort : 진행중인 병합 중단하기, 병합 이전으로 돌아간다.
  • Head : 마지막 커밋 또는 현재 작업중인 커밋을 나타내는 포인터로 마지막 커밋 ID를 가리킨다, 브랜치가 이동하면 Head 포인터도 함께 이동한다. 즉 각 브랜치마다 서로 다른 Head 포인터를 가지고 있다.
    단 checkout을 사용하여 헤드를 분리할 수 있다.
  • checkout : 작업할 브랜치 또는 헤드의 위치를 변경한다. 브랜치와 분리되어 원하는 헤드의 위치에서 작업을 할 수 있다.

  • 상대참조 연산자
    • ^ : 부모 커밋을 나타내는 기호로 헤드 포인터를 이동한다
    git checkout main^ : 1단계 부모커밋으로 이동
    git checkout main^^ :2단계 부모커밋으로 이동
    • ~ : 주어진 숫자만큼 상위 커밋으로 헤드 포인터 이동
    git checkout main~1 : 1단계 부모커밋으로 이동
    git checkout main~3 : 3단계 부모커밋으로 이동
    git checkout -  : 이전 브랜치로 이동
    git checkout -b 브랜치이름 : 브랜치 생성과 해당 브랜치로 체크아웃 동시에
    git switch -c 브랜치이름 : 브랜치 생성과 해당 브랜치로 체크아웃 동시에

  • 분리된 헤드를 다시 원래대로 돌리고 싶다면
git switch -        최근에 헤드가 붙어있던 브랜치로 헤드가 이동한다
  • working : 작업을 하는 공간
  • satge영역 : tracked파일을 임시로 저장하는 공간으로 코드가아닌 추적파일의 상태를 기록한다. 파일의 변화이력이 있으면 unstage상태가 된다 따라서 수정된 파일은 스테이지 영역에서 잠시 제외되고 스테이지 영역에 재등록해야한다.
  • repository : 실제로 저장하는 공간
  • untracked 상태 : 워킹 디렉토리에서 새로 생성된 파일인데 git에 의해 추적되지 않는 상태, git add로 tracked 상태로 변경한다.
  • (un)modified : tracked파일이 수정되면 modified상태가 된다
  1. 워킹 디렉토리에서 파일(class 등) 생성
  2. 파일에서 코드 작성
  3. 추적관리 하기 위해 스테이지 영역에 등록(git add로 untracked -> tracked 상태가 되면서 스테이지 영역에 등록됨), 등록되면 git status에 new file로 표시됨
  4. 커밋 (HEAD와 스테이지 영역간의 차이를 비교하여 새로운 객체를 생성하고 그 객체를 저장소에 기록, 그리고 스테이지 영역 초기화)
  5. 코드 수정(unstage상태로 변경, modified 상태)
  6. 스테이지에 재등록
  7. 커밋
  • 스테이지 영역에 등록된 파일 등록취소
git rm --cached 파일이름 : 커밋을 안했을때
git reset HEAD 파일이름 : 커밋을 한 파일일 때
  • 파일이름을 변경할 때
git mv 파일이름 새파일이름
  • 수정한 파일을 커밋 전 마지막 내용으로 되돌릴 때??
git checkout -- 수정파일이름
  • 깃 커밋
git commit -a : 커밋을 하기전에 자동으로 모든 파일을 등록하는 과정을 수행
git commit -m "커밋메시지"

git commit -am "커밋메시지" : 파일을 스테이지 영역으로 등록하고 커밋메시지 등록

0개의 댓글