지옥에서 온 관리자 git #2

Kyubo Sim·2025년 3월 27일
0

이번 강의는 깃의 비전관리에 대해서 다룬다.

깃에게 특정 디렉토리를 버전관리하도록 시키는 방법
해당 디렉토리로 이동한뒤

git init

을 입력한다.
그러면 .git 디렉토리가 생기게 되고 버전 정보들이 이 디렉토리 안에 있는 파일들에 저장되게 된다. 이 .git 디렉토리를 지우면 우리가 관리하던 버전 관리 정보들은 모두 사라지게 되니 주의하자.

  • Working tree
    파일을 수정하는 곳(ex:10개의 파일이 있다)
  • Staging Area
    새로운 버전을 만드려고 타겟 삼고 있는 파일들이 올라오는 장소 혹은 그 파일들(ex:10개의 파일중 2개)
  • Repository
    버전이 저장되는 곳(.git이라는 디렉토리)

깃은 Staging Area 위에 있는 파일들만 모아서 하나의 버전으로 만들어서 Repository에 넣는다.


cat이라는 명령어는 파일의 내용을 출력해주는 명령어

git status : working tree status
git add : add to staging area
git commit : create version -> repository로 보낸다.
git log : show versions

Untracked 되어 있는 파일들은 깃은 없는 셈 치고 관리를 하지 않는다.

깃의 자세한 명령어들을 알고 싶을때는 구글링을 해보자
ex) git log에서 버전별로 어떤 파일들을 관리하는지 궁금하다면 구글에 git log files list를 쳐본다.
git log --stat : 버전별로 어떤 파일들을 관리하는지 보여준다
git diff : Show changes 마지막 버전과 working tree 사이의 차이점을 보여준다. 버전을 만들기 전에 최종 검토 가능
git reset --hard : 현제 파일들을 마지막 버전의 상태로 되돌린다.
git log -p : 각 버전별로 이전 버전에 비해서 무엇이 달라졌는지 보여준다.


정확한 설명은 아니지만 추후에 배우기로 하고 우선 master브랜치를 가장 최신 버전이라고 생각해보자. 만약 위 상황에서 이전에 만들었던 버전으로 돌아가고 싶다면 어떻게 해야하는가?
Header가 이전의 버전을 가르키게 해야한다.

git cheackout [커밋 아이디 값] : 해당 아이디의 커밋 버전으로 돌아간다.

git cheackout master : 가장 최근의 상태를 불러온다.

git add . , git add src : 현제 디렉토링 아래의 모든 파일을 add 한다, src 디렉토리 아래의 모든 파일을 add 한다.
git commit -am "" : add와 commit을 동시에 한다. (Untracked 파일들은 add 해주지 않는다.)
git commit : 기본 에디터가 쓰고 그 에디터에 커밋 메시지를 직접 작성할 수 있다. 여러줄의 커밋 메세지를 만들고자 할 때 유용하다.

change git default text editor 검색
git config --global core.editor "[에디터이름]" : 깃이 기본적으로 쓰고 있는 디폴트 에디터를 바꾼다.

버전 삭제

위 상태에서 메세지 3을 지우고 메세지 2가 되고 싶다면 메세지 2로 리셋을 해야한다.
git reset --hard [아이디] : 아이디의 버전으로 리셋한다.

git reset --help : 다양한 모드들에 대한 설명이 나온다. hard가 아닌 soft나 mixed를 쓰면 최신 버전을 지우면서 내가 현제 작업중인 상태는 리셋하지 않을 수 있다.

만약 협업 중에는 다른 사람과 공유된 버전에 대해서는 리셋하면 안된다. 공유 되기 전 단계인 저번에 대해서만 리셋 해야한다.

R4를 삭제하고 R3가 되고 싶다면 reset을 쓰면 된다.
하지만 R4를 삭제 하지 않고 그냥 버전을 바로 이전 버전으로 되돌아가고 싶다면
git revert [현제 사용하는 버전의 아이디] : 바로 이전의 버전으로 파일들을 되돌린 새로운 버전을 만든다.


R4는 남아 있지만 R4에서 일어난 변화들이 취소된(즉 R3와 똑같은 상태인) 새로운 ㄲRevert "R4" 버전이 생긴다.

한 단계식 이전 버전으로 돌아가기 때문에 한참 전 버전으로 돌아가려면 하나씩 일일히 돌아가야한다.

버전관리의 핵심은 비교이다.
.gitignore에 무시하고 싶은 파일의 이름을 적으면 해당 파일들은 버전관리를 해주지 않는다.
branch는 우리의 저장소가 평행 우주처럼 여러 상황이 공존할 수 있게 해준다.

커밋 아이디 대신에 tag를 이용할 수 도 있다.

backup은 매우 중요하다.

배운 깃 명령어들 정리


git init
git status : working tree status
git add : add to staging area
git commit : create version -> repository로 보낸다.
git log : show versions
git log --stat : 버전별로 어떤 파일들을 관리하는지 보여준다
git diff : Show changes 마지막 버전과 working tree 사이의 차이점을 보여준다. 버전을 만들기 전에 최종 검토 가능
git reset --hard : 현제 파일들을 마지막 버전의 상태로 되돌린다.
git log -p : 각 버전별로 이전 버전에 비해서 무엇이 달라졌는지 보여준다.
git cheackout [커밋 아이디 값] : 해당 아이디의 커밋 버전으로 돌아간다.
git cheackout master : 가장 최근의 상태를 불러온다.
git add . , git add src : 현제 디렉토링 아래의 모든 파일을 add 한다, src 디렉토리 아래의 모든 파일을 add 한다.
git commit -am "" : add와 commit을 동시에 한다. (Untracked 파일들은 add 해주지 않는다.)
git commit : 기본 에디터가 쓰고 그 에디터에 커밋 메시지를 직접 작성할 수 있다. 여러줄의 커밋 메세지를 만들고자 할 때 유용하다.
git config --global core.editor "[에디터이름]" : 깃이 기본적으로 쓰고 있는 디폴트 에디터를 바꾼다.
git reset --hard [아이디] : 아이디의 버전으로 리셋한다.
git reset --help : 다양한 모드들에 대한 설명이 나온다. hard가 아닌 soft나 mixed를 쓰면 최신 버전을 지우면서 내가 현제 작업중인 상태는 리셋하지 않을 수 있다.
git revert [현제 사용하는 버전의 아이디] : 바로 이전의 버전으로 파일들을 되돌린 새로운 버전을 만든다.

profile
나의 정리 공간

0개의 댓글