코딩을 하면서 Git을 한번쯤은 써봤거나 한번쯤은 들어봤을 거라 생각함

근데 이 개념이 뭔가 잡힐듯 말듯 branch 가 뭔데 씹덕아 소리가 나올때가 있을거임 

그래서 다른 것 보다 일단 Git이 뭘까에 대한 설명을 해줌


너가 이제 컴퓨터에서 게임을 함 싱글 게임을 하는중임 

그러면 싱글 게임을 하다가 시간이 늦어졌으니까 이제 자야지 하고 세이브를 함 

다음날 또 게임을 하고 세이브를 하고 하겠지? 근데 어느 순간 보스전을 하게 됨

그럼 보스 전에 다들 뭐함? 세이브 할거임 파일 이름은  00 보스 잡기 전 이라고 저장함 

그러다가 보스전에 죽었다 하면 아 하고 end 가 뜨고 하겠지 근데 우리는 다시 보스전을 하기전으로 돌아갈거임

세이브 파일이 있으니까

보스 전 말고 어떤 이벤트가 마음에 들어 이거 저장해뒀던거 다시 볼까? 세이브 파일 불러오기


위의 경우처럼 Git은 너가 소스코드를 작성하고 프로그램을 만드는 과정중에 어? 이쯤에서 뭔가 잘못된 거 같아

아니면 내가 예전에 어떻게 했더라 하고 과거로 돌아갈 수 있게 세이브 파일을 기록하는 거라 생각하면 됨

세이브 파일에 제목도 붙여 넣듯 Git 을 통해 push 하고 commit = 저장 하는 과정 에서 -m 이라는 옵션을 통해

메세지를 저장함 이런 이런 문제가 있었고 이렇게 해결했음 나 이때 이런 생각을 했음 이라고 저장을 할 수 있는 거지


다시 한번 쉽게 말해 소스 코드의 작성 과정을 기록 하는 도구 정도로 생각해주면 좋음


이런 Git 을 쓰다보니 사람들이 이걸 모두가 같이 사용하면 어때 라고 해서 Github와 같은 깃 저장소를 제공함

Git을 통해 혼자서 관리 하는 것 대신 여럿이서 다같이 같은 프로그램을 작성하면서 너가 이렇게 고쳤구나

나는 이렇게 고쳤어 라는 걸 서로 서로 확인하고 ok 라고 승인을 하는 과정을 직접 만나지 않고 할 수 있게 되는 거임


여기서 그러면 의문점이 들 수 있음 

어 그럼 누가 마음대로 수정하고 하면 어떻게 해?

여기에 이런 문제를 사전에 예방하는 방법 하나와 이후에 해결하는 방법이 있음

사전 예방은 바로 관리자의 승인 여부임 

Github 와 같은 깃 저장소에는 관리자가 있음 이 관리자가 누군가의 수정 파일이 업로드 된걸 확인 했을 때 승인

아니면 거절을 할 수도 있고 아니면 최초에 참여를 거부 할 수도 있음 아예 접근 권한을 안줄 수 있지

private과 같이 특정 사용자에게만 공유 하는 방식으로 말이야


그리고 이후에 해결하는 방법은 롤백임 

너가 어떤 실수를 하든 상태를 이전으로 돌릴 수 있음 어떻게 하냐고? 아까 세이브 파일 만들었잖아

그거 불러 오면 됨


그런데 이렇게 하는 것보다 조금 더 효율을 높이는 방법이 branch 임 

branch = 가지 라는 뜻인데 말 그대로 가지를 만듬 


기존의 저장 장치와 상관없는 새로운 가지를 만들어서 거기서 너가 수정을 하고 이것 저것 다 해도 

상관이 없음 어차피 가지니까 


가지의 특징이 뭐임? 잘라 내도 된다 는 거임 

크게 자랐든 작게 자랐든 필요하면 냅두고 필요 없으면 잘라도 몸통이 되는 몸체에는 영향이 없음

그런 개념처럼 branch 를 통해 소스 코드를 자유롭게 원하는 방식으로 수정함


근데 이건 실제 나무가 아닌 소스 코드를 수정하는 프로그램이잖아?

그래서 이 잘만들어진 수정_수정 본을 합치고 싶어짐


이때 나온게 merge 임 

합치겠다 라는 소리임 여기서 conflict이 생길수도 있지만 

아무튼 너가 잘 만든 수정본을 몸체와 하나 되게 만들 수 있음


대충 이정도만 알면 Git 에 대해 기본적인 개념은 아는게 아닐까