기타

[Git] Git뽀개기

김한토 2024. 7. 26. 18:56
반응형

버전관리시스템?

=> 버전 관리 시스템(Version Control System, VCS)파일의 변경 이력을 관리하고 여러 사람이 동시에 작업할 수 있게 해주는 소프트웨어 도구

 

버전관리시스템을 왜 써야할까?

 

여기 개발자 A B가 동시에 같은 파일을 수정하고 있다고 가정하자.

 

 VCS를 사용하지 않았을 때 다양한 문제가 발생할 수 있다.

1.    각자 다른 기능을 추가하고 파일을 병합하는 과정에서 오류가 발생한다.

2.    누가 어떤 변경을 했는지 기록하지 않아 에러를 추적하기 어렵다.

3.    해결과정에서 예기치 못하게 중요한 코드를 삭제했지만 복구할 방법이 없다.

4.    코드를 날리면 개발자들의 불필요한 재작업이 필요하다.

 

이러한 문제들을 예방하고 원활한 협업을 위해서는 VCS를 사용해야 한다..!

 


구체적인 예시를 들어 이해해보자

개발자 A와 B가 협업하여 TodoList를 개발하려고 한다.

 

#첫번째 상황.

개발자 A가 기본 TodoList 기능을 구현한다.

 

 

개발자 A는 코드를 작성한 후, 변경사항이 있을 때마다 Git에 커밋을 한다.

그리고 추후에 과거의 변경 전 버전을 확인해야 할 일이 있을 때, Head를 바꿔 언제든지 특정 버전으로 되돌아갈 수 있다.

 

#두번째 상황.

개발자 B가 새로운 기능을 추가하려고 한다.

 

 

 

이때 개발자 B는 새로운 브랜치를 생성하고 그 브랜치에서 작업을 진행한다.

개발자 B는 안전하게 새로운 기능을 개발한 후, 완료되면 메인 브랜치에 병합을 진행한다.

이때 문제가 발생하였을 경우에는 해당 브랜치를 삭제하기만 하면 기존 코드로 돌아갈 수 있기 때문에 문제상황에 대처하기 원활하다. 

 

#세번째 상황

서버 오류로 인해 코드가 손상되었다.

 

 

개발자 AB가 주기적으로 원격 저장소에 코드를 푸시하여 백업하였기 때문에

원격 저장소에서 코드를 복제하거나 최신 상태로 복구할 수 있다.


Git 주요 개념 및 구조

  • 저장소(Repository): 프로젝트 파일들이 저장되는 공간입니다. 로컬 저장소와 원격 저장소가 있음
  • 커밋(Commit): 변경 사항을 저장소에 기록하는 작업
  • 푸쉬(push) : 로컬 저장소의 변경 사항을 원격 저장소에 업로드하는 작업
  • 패치(fetch) : 원격 저장소의 소스를 로컬 저장소로 받아오는 작업
  • 머지(merge) : 로컬 저장소의 변경 사항들을 워킹 디렉토리에 반영
  • 브랜치(branch) : 독립적으로 작업을 하기 위해 여러 개발자들이 동시에 작업을 진행할 수 있게 해주는 기능 
  • 풀(pull) : 원격 저장소의 변경 사항을 로컬 저장소로 가져오는 작업

충돌 

 

충돌 원인

 

 

1. 동시 작업 :

여러 사람이 동시에 같은 파일을 수정하는 경우 충돌이 발생할 수 있다.

예를 들어, A 개발자가 파일 A를 수정하고 있는 동안 B 개발자도 파일 A를 수정하여 푸시하면 충돌이 발생합니다.

 

2. 병합 시 충돌 :

서로 다른 브랜치에서 동일한 파일의 동일한 부분을 수정한 경우 병합 시 충돌이 발생할 수 있다.

예를 들어, 메인 브랜치에서 파일 A의 특정 부분을 수정하고, 개발 브랜치에서도 동일한 부분을 수정한 경우 병합 시 충돌이 발생한다.

 

충돌 방지하기

 

1. 작업 전 최신 코드 가져오기

: 마스터로 머지를 하기 전에 마스터 브랜치에서 내가 작업하는 동안 다른 팀원이 한 작업물이 있을 수 있으니 패치를 통해 업데이트를 한다.

 

2. 정기적으로 병합하기

: 작은 단위로 충돌이 일어나므로 충돌 부분을 직접 확인하고 수정할 수 있다. 작은 단위로 병합하는 것을 습관화하자

 

 

 

소스트리에서 브랜치 만들고 마스터로 머지하는 법을 알고싶다면 밑에 글을 참고하자.

 

https://hantoluvcoding.tistory.com/46

 

[Git] 소스트리 왕초보 가이드 (feat. 안드로이드 스튜디오)

1. 작업할 branch 만들기상단 메뉴바에서 브랜치 클릭 후, test/work/hanto 이런식으로 이름 만들어서 작업하기 테스트 안에 work안에 hanto 브랜치가 생성 됨. 2. 해당 branch로 더블 클릭하여 check-out 한

hantoluvcoding.tistory.com

 

 

반응형