개발 공부/GIT

버전 관리의 본질 (지옥에서 온 Git - 생활 코딩)

공부하는개발자_ 2023. 5. 5. 20:45

GIT = Version Control System (버전 관리 시스템)
버전 관리 시스템이란 무엇인가?

파일 이름을 여러가지로 바꾸는 것
파일 이름을 더럽히지 않는 버전 관리를 할 수 있다.
파일 이름의 변경사항들은 컴퓨터가 관리하게 한다.

효용 3가지 요소 : Back up , Recovery, Collaboration
종류 : CVS/ SVN/ GIT
본질적인 요소 : 변경사항을 관리 한다.

codeonweb 서비스에서 git을 설치하지 않고도 바로 실습 할 수 있다.

적당한 디렉토리에 프로젝트 폴더를 만들라. 프로젝트에 사용될 파일들을 만들어 놓은 폴더

pwd 명령을 입력하면 현재 디렉토리를 알려줌

버전 관리를 하려고하는 디렉토리를 Git에 알려줘야함.

프로젝트를 진행할 폴더로 가서 

작업을 시작할때 Clone, init
git init : 현재 디렉토리에 작업을 진행하겠다는 것을 Git에 알리는 기능 (초기화)

ls -al 현재 디렉토리의 파일 목록을 보여줌
생성된 정보가 .git 디렉토리에 저장되기 때문에 삭제하면 안 됨. 

vim을 통해 파일을 생성할 수 있음

~~~ 입력이 불가한 상태이므로 i를 눌러 입력모드로 전환하여 파일에 내용을 입력해야 함
필요한 내용을 입력한 후 esc를 누르면 입력을 종료할 수 있음

 입력할 수 없는 상태로 변경 됨.

: 콜론 입력 후 저장하고 싶을땐 w 종료하고 싶으면 q  
두 가지 동시에 입력가능

"cat 파일명" 을 입력하면 내용을 볼 수 있다

git status 을 입력하면 untracked files라고 파일명이 뜨게되는데 버전 관리를 시작하라고 명령하기 전에 git은 파일 내용을 무시한다. 
git add  파일명 : 버전관리 하라는 명령. 관리해야 될 파일을 명확하게 알려주는 것. tracking 시작
git add 파일 입력 후 다시 git status를 입력하면 파일이 new file로 바뀐 것을 확인 할 수 있다.

git config --global user.name 닉네임

시작 전에 내가 만든 파일임을 명시하기 위한 작업
git config --global user.email 이메일주소
이름과 email을 입력하면 다른 사람이 누가 작업했는지 알 수 있게 된다. 시작 전 딱 1번만 입력하면 됨.
git commit 
입력하기 위해선 i를 누르면 insert가 되면서 입력을 할 수 있게 됨.
현재 버전의 메세지를 입력하면 된다.

이 변화가 어떤 변화를 담고 있는지, 이 파일들이 왜 변경되었는지 이유를 적어주면 된다.
마무리할때 마지막칸에 :wq 하면 버전이 생성된다!

git log 
버전이 잘 만들어졌는지 확인할 때
버전을 작성한사람과 언제 만들었는지 확인 됨.

git log에서 나가고 싶을땐 q를 누르면 나가게 됨.

 

git에서 새로운 파일이 생겼을때 그 파일에 대한 버전관리를 명령할때도 add를 쓴다.
이미 버전관리가 되고 있는 파일이 수정되어 버전을 생성할때도add를 또 해줘야 한다.

수정을 원할 땐 git add 후 git commit을 하면됨.


그렇다면 git은 왜 commit전에 add를 하는가?
commit의 시기를 놓쳤을때 add라는 과정을 통해 commit하고자 하는 파일만 commit하게 할 수 있다.
add 한 f1.txt 파일은 commit이 되고 add하지 않은 f2.txt 파일은 commit이 되지 않는다.
(f1.txt는 add했기때문에 commit대기 상태이며, f2.txt는 commit 대기 상태에 들어가 있지 않은 상태)
add한 파일만이 commit되기 때문에 이 상황에서 git commit을 하면 f1.txt는 새로운 버전에 포함되지만, 
f2.txt는 포함되지 않게 된다. 선택적으로 파일을 commit할 수 있다는 것.

commit 대기 상태 : stage area 라고 하는데,
add한 f1.txt는 stage에 올라가게 되며 stage는 commit 대기하고 있는 파일들만 올라가게 된다.
commit이 된 결과물이 저장되는 곳이 repository

효용 
1. 차이점을 알 수 있고, 과저 어느 시점의 내용을 알 수 있다.
2. 과거로 돌아갈 수 있다.


1-1) git log -p
각 commit상의 차이점을 확인할 수 있다.

 

commit메세지4와 이전commit메세지3 사이의 차이점이 무엇인지 보여줌.

버전4에서 f1.txt의 내용의미 

버전3에서 f1.txt의 내용의미


1-2) git log 고유번호
아래 노란색 하이라이트 한부분이 각 commit의 고유번호이고, 고유번호를 복사해서 git log 고유번호를 입력하면 
커밋입력한 부분의 이전의 내용만 볼 수 있다.

 

1-3 ) git diff 고유번호 .. 고유번호

commit과 commit사이의 소스 코드 차이점을 확인하고 싶을 때 사용.
작업하다가 commit하기 전에 코드들의 차이점을 통해 작업한 내용이 문제 있는지 없는지 review할 수 있는 기회를 제공함.

 

commit을 취소하는 명령: reset , revert

2-1) git reset 고유번호 --hard
reset하고 싶은 시점의 고유번호를 복사한다.
다른사람과 협업할때 업데이트 하고 나서는 reset을 하면 안 된다!! 

2-2) git revert 

git commit --help를 입력하면 commit에 대한 메뉴얼 나옴

git commit -a 입력하면 자동으로 파일을 스테이지에 올려준다. add없이 commit가능
메세지 작성할 수 있는 화면으로 넘어감
주의할 점은, 한번도 add하지 않은 파일은 자동으로 add되지 않는다
git commit -am 에디터를 띄우지 않고 현 화면에서 commit하는 방법

 

'개발 공부 > GIT' 카테고리의 다른 글

웹 프로젝트 git 사용 필기  (0) 2023.07.31
git으로 협업하기  (0) 2023.07.26
git의 혁신 branch (지옥에서 온 Git - 생활 코딩)  (0) 2023.05.07