[Git] 인프런 - 지옥에서 온 Git - 버전관리의 본질

June·2021년 5월 28일
0

[Git] 

목록 보기
1/12

git init

.git 디렉토리는 정보가 담겨져 있다.

git add

f1.txt라는 파일을 만들고 2를 입력해보자

vim에서는 i를 눌러서 입력모드, 입력하고 나면 esc를 눌러서 나갈 수 있다. :wq를 누르면 파일을 저장하고 나간다.

untracked라는 것은 버전관리를 하지 않고 있다는 것이다. 버전관리를 하라고 알려줘야하는데 이 명령어가 add이다.

버전 만들기 (commit)

버전은 의미있는 변화를 의미한다.

내가 만든 버전은 이 이름과 이메일을 포함하기 때문에 누가만든 것인지 알 수 있다. 이 작업은 한번만 하면 된다.

git commit을 입력하면 vim이 실행되는데 여기에는 현재 버전의 메시지를 적는 것이다. 왜 파일이 변경되었는지, 어떤 의미를 담고 있는지.

이전과 마찬가지로 i를 눌러 편집하고 esc누르고 :wq눌러서 저장한다. 버전 1이라는 의미로 1을 적었다.

git log 를 입력하면 어떤 사람이 만들었는지, 어떤 메시지가 잇는지 나온다.

f1.txt를 2로 바꿨다.

git status를 입력하니 바뀌었다고 나온다. 다시 git add를 해줘야 한다.

git stage area

f2.txt 생성

f2가 버전관리 되고 있지 않으니 버전관리를 해보자.

f1.txt와 f2.txt를 변경 시켰다.

왜 git은 add라는 과정을 가지고 있는 것일까? 커밋 시기를 놓쳐서 매우 많은 작업을 담은 커밋을 할때가 있다. add를 통해서 원하는 파일만 커밋할 수 있다.

f1.txt는 포함하고 f2.txt는 포함하지 않은 것이다.

git add f1.txt를 입력하면 f1.txt는 커밋 대기 상태에 들어가고 f2.txt는 들어가지 않는다. 이 대기 상태를 stage area라고 한다.

변경 사항 확인하기 (log & diff)

git log -p를 이용하면 커밋과 커밋사이 소스 차이를 볼 수 있다.

노란색 난수는 각각의 버전이다. 커밋 버전을 복사해서 git log "commit version"을 하면 해당 버전과 이전 버전들만 보인다.

git diff "commit version a".."commit version b"를 하면 두 버전 사이의 차이를 보여준다.

f1.txt를 4에서 5로 수정하고, git diff를 입력하면 현재 작업한 것이 무엇인지 보여준다.

과거로 돌아가기 (reset)

reset vs revert

버전 5에서 3으로 돌아가고 싶으면?

reset

git reset "돌아가고 싶은 버전" --hard
해당 버전 이후는 다 사라진 것을 볼 수 있다.

하지만 깃에서는 왠만한 정보는 삭제하지 않는다. 이후 버전이 지워진 것처럼 보이지만 남아있다. 리셋을 하는 커밋은 공유하기 전에 로컬에만 있는 버전에 대해서만 해야한다

revert

revert는 해당 버전을 취소하면서 새로운 버전을 생성하는 것이다.

0개의 댓글