본문 바로가기
Utility

Git이 뭐Git래

by songmoro 2024. 4. 30.
728x90

Git 기초 강의: 깃이 뭐길래

Git에 대한 기초를 위한 자료로 레포지터리, 커밋, 브랜치에 대해 간단하게 다루는 글 입니다.

 

 

 

시작

우리는 지금 부산에 있습니다!

자가용을 끌고 서울에 놀려가려고 해요.

 

하지만, 유감스럽게도 길을 아는 사람이 한 명도 없고, 휴대폰은 꺼져있으며, 가진 거라곤 지도 한 장 뿐이에요.

그래도 뭐 어쩌겠어요. 가야지.

 

 


Git은 버전 관리 시스템의 하나로 현재 저장소(repositories)에 현재 프로젝트의 상태를 저장하고, 필요에 따라 원하는 버전으로 돌아가거나, 저장한 상태를 삭제, 새로운 분기 생산 등 여러 사람과 함께 프로젝트를 관리할 때 효율적으로 관리할 수 있도록 해주는 도구입니다.

 

기존 저장소를 복사해오는 git clone 혹은 새로운 프로젝트를 설정하는 git init을 통해 시작할 수 있습니다.

 

 

 

Add, Commit, Status, Reset, Revert

한 시간이 지났을 무렵, 우리는 지금 대구를 지나고 있습니다.

옆에 수성못이 보이네요.

계속 가봅시다.

 

신나게 노래를 부르다가 정신을 차려보니, 왜인지 모르겠지만 옆에 바다가 있고 바다 위로 손이 튀어나와 있어요.

아무래도 포항으로 와버린 것 같네요….

 

이대로 가다간 서울이 아니라 울릉도에 도착해버릴 것 같네요.

다행히 새로운 지역에 도착할 때 마다 지도에 기록해서, 무사히 대구까지 되돌아 올 수 있었습니다.

 

 


git add <파일 이름>을 통해서 저장소에 저장할 파일을 지정할 수 있습니다.

git add를 통해 추가한 파일은 staging area에 stage 되고, 스테이지된 파일들은 git commit -m “<변경사항>”을 사용해서 변경 사항을 저장소에 반영합니다.

(커밋되지 않은 변경 사항은 저장되지 않습니다.)

 

git status는 현재 프로젝트의 상태가 마지막으로 커밋한 버전과 어떤 차이가 있는지를 나타내며, 추가, 삭제, 수정된 파일을 출력합니다.

 

만약, 현재 상태에서 이전에 커밋한 버전으로 돌아가기 위해선, git reset과 git revert를 사용할 수 있습니다.

git reset은 특정 버전까지 되돌아간 후 이후의 커밋을 제거하고, git revert는 특정 버전의 변경 사항을 없었던 걸로 되돌린 후 새로운 커밋을 생성합니다.

 

reset은 지정한 커밋 이후의 기록을 지우지만, revert는 커밋한 기록을 지우지 않는 다는 차이점이 있습니다.

 

 

 

Branch, Checkout, Merge

길을 잘못 들어 속초에 가서 바다도 보고, 공원을 탈출한 티라노 사우루스한테 습격도 당했지만 우여곡절 끝에 서울에 도착했습니다!

 

 


branch(가지)는 현재 저장소와 다른 방향의 작업을 할 때 유용합니다.

예를 들어, 타이머 프로그램이 있다고 할 때 사용자가 타이머를 수행한 이력을 보여주는 기능(새로운 기능)을 추가하거나, 타이머 애니메이션이 동작하지 않는 버그를 수정하는 것(기존의 기능 수정) 처럼요.

 

새로운 브랜치를 생성하면 기존의 브랜치와 분리해 여러 명이 각각의 기능에 대해 작업할 수도 있고, 작업이 완료된 브랜치를 merge(병합) 할 수 있습니다.

물론, 기능이 필요 없어졌다거나 등의 이유로 브랜치를 삭제하는 것도 가능합니다.

 

git checkout -b <브랜치 이름>은 새로운 브랜치를 생성하고, git branch -d <브랜치 이름>은 기존의 브랜치를 삭제합니다.

 

git checkout <브랜치 이름>을 사용하면 현재 브랜치에서 다른 브랜치로 이동이 가능하며, git merge <브랜치 이름>을 사용하면 현재 브랜치에 <브랜치 이름>의 작업을 병합합니다.

 

브랜치를 머지 할 때 현재 브랜치와 병합할 브랜치의 파일에서 동일한 부분의 작업이 이루어졌다면 conflict(충돌)이 발생할 수 있으며, 작업 내역 중 하나를 선택하거나 작업한 부분을 다시 수정하거나 하는 식으로 충돌을 해결할 수 있습니다.

 

하지만, 이 과정은 브랜치 사이의 변화가 작을 수록 해결하기 쉬우므로 기능에 대한 작업이 끝나면 브랜치를 머지하고, 필요에 따라 새로운 브랜치를 생성하는 걸 권장합니다.

(1. 5년 전에 만든 브랜치에 머지하는 것, 2. 이틀 전에 만든 브랜치에 머지하는 것 중 2번이 충돌을 해결하기 더 쉬운 것을 예를 들 수 있습니다.)

728x90

'Utility' 카테고리의 다른 글

macOS 리눅스 ssh 연결  (0) 2024.07.21
macOS Linux 설치 방법  (0) 2024.07.21
Swift 패키지 설치  (0) 2023.12.02
XCode Simulator를 위한 팁  (0) 2023.08.28
iTerm2 Glassmorphism  (1) 2023.08.09