사실 저번 포스팅에 깃을 다 끝내고 싶었지만 체력 부족으로 1,2 나누었다 ㅜㅠㅜ
저번 포스팅 마지막은 Branch를 만들어서 만약 실험에 성공했다면, 이것을 메인에 어떻게 올려야 하는가?로 끝이 났다. 정답은 바로 병합!
[KT AIVLE] 1주차 - Git① #2
오늘(8/9)이 정말 에이블스쿨 교육 시작날! Git에 대해 생활코드의 이고잉님이 강의해 주셨다. Github는 자주 다뤄봤지만, Git에 대해서는 잘 모르는 나.. 강의 중 생소한 내용이 많았다.(이론적인 것
jxxngho.tistory.com
1. 병합
병합의 주체인 main을 checkout한 후 피병합 주체인 exp1에서
'Merge into current branch'를 해주면 병합이 된다!
이 경우 main의 부모는 v2와 exp1 모두가 된다. 그리고 head는 main을 따라간다.
병합이 완료되면 exp1가 필요가 더이상 없으니 삭제를 해도 된다.
(꼭 그래야 하는건 아니지만? 깔끔하게 하기 위해서 권장!)
여기서 이런 의문이 생길것이다!!
안생기면 말고 ..
"서로 다른 Branch가 같은 파일의 같은 부분을 수정했다면? 병합할 때 어떻게 될까??"
Git은 "양쪽에서 수정해서 어떻게 해야 할지 모르겠어요! 너가 결정해!"라고 말한다.
아래 그림은 main에서 8번째줄을 m4로 바꾸고 exp3에서는 e4로 바꾸고 merge한 경우이다.
이렇게 하니 Error : Unable to Merge Branch가 발생!
충돌된 부분은 바꾼 후에 병합 완료를 누른다.
즉. Git은 친절하게 충돌된 부분을 알려주기만 하고 사용자는 그 부분만 수정하면 된다.
2. Github
이렇게 작업한 파일들을 원격으로 저장하는 곳이 Github이다.
깃허브에 레포지토리를 만든 후에 지역 저장소와 원격 저장소를 연결해주기 위해
주소를
'원격 추가'에 추가해주면 된다.
저렇게 긴 링크를 외우고 있을 수는 없으니 간단한 별명을 붙여주는 것이 좋다.
그리고 컴퓨터에 있는 자료들을 push를 통해서 깃허브로 보낸다.
이러면 깃 그래프에 origin이 추가된다. 이 origin은 중요한 역할을 한다.
그것은 지역 저장소에 어디까지 저장했는지 동기화해두지 않으면 push할 때마다 컴퓨터에 있는 모든 자료를 올린다. 이를 방지하기 위한 동기점 역할을 한다.
깃허브에 지역 저장소의 파일이 올라간 모습 !
3. 원격저장소와 지역저장소
지역저장소에 커밋을 하면
main은 origin/main보다 한 칸 앞서 나온다. 이는 지역저장소에는 저장되었는데 아직 원격저장소에는 올라오지 않았다는 뜻이다.
변경 내용 동기화 버튼을 누르면
main과 origin/main이 하나가 된다. 이는 원격저장소와 지역저장소가 동기점이 같다는 뜻 !
원격저장소도 살펴보면 푸쉬가 잘 되어있다.
4. Clone
이제 원격저장소에 있는 파일을 지역저장소로 가져와보자
리포지토리 복제 버튼을 누르고 복사한 주소를 입력하면 원격저장소에 있는 파일들이 지역저장소로 복제가 된다!!
5. Pull
협업을 하다보면 누군가 레포지토리에 푸쉬를 했지만 나의 원격저장소에는 그 내용이 반영안됐을 수도 있다.
이걸 모르는 상태에서 내가 커밋을 하고 푸쉬를 해버리면 깃은 '충돌을 나기 때문에' 최신 상태를 가져오라고 한다.
이 때 사용하는 명령어가 Pull이다. Pull은 fetch+merge를 합친 것이다
fetch는 지역저장소에는 없지만 원격저장소에 있는 내용들이 내려온다.
그리고 merge를 하면 fetch한 내용과 지역저장소에 있는 내용들을 합쳐 새로운 내용이 나온다.
(fetch 사용시에는 절대 충돌이 생기지 않음!)
이고잉님이 꼭 기억하라고 한 말 : "작업하기 전에 Pull하고 작업한 후에 commit하고 push한 뒤에 퇴근하자!"
이렇게 첫 section이 끝이 나고 셀프테스트도 쳤다 ,, 하루동안 에이블러로써 살아본 소감으로는 매우 허리가 아프고, 한 번 멍때리면 수업 내용을 놓친다는 느낌을 받았다,, 6개월 여정을 잘 마무리해 보자,,화이팅!
'교육 > KT 에이블스쿨' 카테고리의 다른 글
[KT AIVLE] 분류모델 성능평가지표 (0) | 2023.12.13 |
---|---|
[KT AIVLE] 회귀모델 성능평가지표 (0) | 2023.12.13 |
[KT AIVLE] 1주차 - Python 프로그래밍 & 라이브러리 #4 (0) | 2023.08.20 |
[KT AIVLE] 1주차 - Git① #2 (0) | 2023.08.16 |
[KT AIVLE] 오프닝데이 후기 #1 (0) | 2023.08.08 |