일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- AI
- bias
- explained AI
- MaxPooling2D
- Convolution Neural Network
- 인공지능
- 머신러닝
- 키워드 기반 뉴스 조회
- 데이터크롤링
- Neural Network
- 모델평가
- CRISP-DM
- 크롤링
- OneHotEncoding
- kt에이블스쿨
- NewsWhale
- Pooling Layer
- fashion mnist
- 뉴스웨일
- AWS 입문자를 위한 강의
- 데이터분석
- 데이터처리
- learning_rate
- pandas
- plot_model
- CIFAR-10
- 딥러닝
- CNN 실습
- 데이터
- CNN
- Today
- Total
jjinyeok 성장일지
프로젝트 관리 도구(GIT) #2 - 2022/07/27 본문
6. 브랜치(branch)란?
메인 브랜치는 메인 브랜치대로 실험적인 작업은 작업대로 병력적으로 처리를 해야할 때가 존재한다. 그러나 계속 커밋 ID를 통해 HEAD를 이동시킬 수는 없는 노릇이다. 이때, 브랜치가 등장한다. 서로 다른 브랜치에 각각의 버전을 만들어 가며 각각의 작업을 병렬적으로 진행할 수 있다.
git branch "브랜치명" 명령어를 통해 HEAD가 있는 위치에 생성할 수 있다. 다만 이 명령어는 브랜치를 생성하는 명령어이지 브랜치로 이동하는 명령어가 아니기 때문에 git checkout "생성된 브랜치명" 명령어를 통해 브랜치 생성 후 브랜치로 이동해주어야 한다.
7. 머지(merge)란?
여러개의 브랜치를 분기시켜 놓은 후 브랜치들을 병합해야 할 때가 존재한다. 이때 git merge "병합할 브랜치명" 명령어를 통해 HEAD가 존재하는 현재 브랜치의 버전에 병합할 브랜치의 버전을 병합한다. 병합이 진행되는 과정은 다음과 같다.
이렇게 진행이 된다면 2, 3, 4에서 모두 conflict가 발생할 것이다. 왜냐하면 m2-2, 3-e3, m4-e4가 다 다르기 때문에 내용상 충돌이 일어나기 때문이다. 그러나 생각해본다면 병합 상황에서 m2-2 충돌에서는 master 브랜치에서 수정한 m2로, 3-e3 충돌에서는 exp 브랜치에서 수정한 e3로 병합되는 것이 옳을 것이다. 이때 깃은 3-way merge 방식을 제공하여 위와 같은 문제를 해결한다.
8. 3-way merge란?
깃에서는 base라는 두 브랜치의 공통의 조상을 찾게 된다. base와 병합할 두 브랜치들 즉, 3가지의 상태를 모두 비교하여 m2-2와 같은 충돌은 base에서 2였기 때문에 변경한 m2로 병합이 이루어지고, 3-e3와 같은 충돌은 base에서 3이었기 때문에 변경한 e3로 병합이 이루어지는 것이다. 그러나 master 브랜치와 exp 브랜치에서 모두 변경이 일어난 m4-e4 충돌은 어떻게 해결할 수 있을까?
9. 충돌(conflict)이란?
깃에서 충돌이란 사고가 아닌 기능이다. 깃에서는 어떤 부분에서 충돌이 났으며 각 병합할 브랜치의 마지막 커밋의 내용을 보여줌으로써 사용자에게 어떤 커밋의 내용을 선택할지를 보여준다. 사용자는 단순히 사용할 커밋의 내용을 선택하며 충돌을 해결할 수 있다.
10. 깃헙(github)이란?
깃에서 백업과 협업을 하기 위해 원격 저장소(remote repository)가 필요하다. 이때 가장 대표적인 것이 깃헙이다. 우리는 git push "원격 저장소" 명령어를 통해 현재 로컬 저장소(local repository)를 백업할 수 있다. 또한 git clone "원격 저장소" "원격 저장소를 저장할 로컬 디렉토리 위치" 명령어를 통해 다른 원격 저장소를 가져올 수 있다.
깃헙을 통해서 협업을 진행할 때, 2가지를 특히 조심해야 한다. 첫번째로는 rejection이다. 두사람이 동시에 작업을 진행할 때 rejection이 발생한다. 이것은 깃 충돌이 발생하지 않더라도 일어난다. 따라서 git pull "원격 저장소" 명령어를 통해 자주자주 병합을 해줄 필요가 있다. 두번째는 git reset "이동하려는 커밋의 ID" 명령어는 로컬 저장소에 있는 것만 해야한다는 것이다.
결국 깃헙 또한 remote tracking 브랜치라고 생각할 수 있다. 따라서 깃헙을 따로 공부하기 보단 이전의 HEAD와 브랜치를 더 알게 되면서 자연스럽게 깃헙을 이해할 수 있었다.
이번 수업을 통해 이전에 전공수업에서 배웠던 방식과 다른 방법으로 깃에 대해 공부할 수 있었다. 학교에서는 명령어 위주로 공부했고 혼자 공부했을 때는 프로젝트 위주로 공부했다면 이번 수업은 이론 위주였다. 이번 수업을 통해 단지 사용법을 넘어 깃이라는 도구를 이해할 수 있었다. 지금까지 사용했던 깃의 동작들이 이해되었고 모호했던 개념들이 정리되어 너무 값진 시간이었다.
'[KT AIVLE School]' 카테고리의 다른 글
웹크롤링 # 2 Open API - 2022/08/03~2022/08/05 (0) | 2022.08.08 |
---|---|
웹크롤링 # 1 동적 페이지 크롤링 - 2022/08/03~2022/08/05 (0) | 2022.08.07 |
Python 라이브러리 # 2 pandas - 2022/08/01~2022/08/02 (0) | 2022.08.05 |
Python 라이브러리 # 1 NumPy - 2022/08/01~2022/08/02 (0) | 2022.08.02 |
프로젝트 관리 도구(GIT) #1 - 2022/07/27 (0) | 2022.07.28 |