[Git] -3장

cse 23·2023년 3월 22일
0

3.깃과 브랜치

1)
브랜치(branch): 버전 관리 시스템에서 나무가 가지에서 새 줄기를 뻗듯이 여러갈래로 퍼지는 데이터흐름을 가리키는 말로 사용

브랜치가 필요한 이유: 수정한 내용이 의도치 않게 바뀌거나 사라지는 것을 방지하기 위해서 필요하다.

main(master) 브랜치: 이름만 서로 다를 뿐, 깃을 사용할때 기본이 되는 브랜치라는 개념은 같다.

분기(branch):새 브랜치를 만들면 기존 파일은 main브랜치에 그대로 유지하면서 새 브랜치에서 기존파일 내용을 수정하거나 새로운 기능을 추가할수 있다.

병합(merge): 분기했던 브랜치를 main브랜치에 합치는것

2)

git branch:새 브런치 만들고 확인하는 명령
git switch: 브랜치 전환하기

3)브랜치 정보 확인하기

전환한 브랜치에서 커밋하기
git log --branches:브랜치마다 최신 커밋을 한눈에 살펴볼수 있다.
git log --graph: 브랜치와 커밋의 관계를 그래프 형태로 표시할수 있다.

브랜치 사이의 차이점 알아보는법: git 명령에서 브랜치 이름사이에 마침표 2개(..)를 넣기

4) 브랜치 병합하기
브랜치마다 각자 커밋할수 있더라도 어느 시점에서는 브랜치 작업을 마무리하고 기존 브랜치와 합쳐야한다.
:빔에서 work.txt파일을 만들고 '1'을 입력한후 저장하고 work1이라는 메세지와 함께 커밋한 상태
:o2라는 브랜치를 만듦
:main.txt파일을 하나더 만듦, 빔에서 main2라고 입력한후 종료
:o2브랜치에서 o2.txt 파일을 만들고 2를 입력 후 저장
:main브랜치를 기준으로 o2브랜치를 가져와 병합

-서로 다른 브랜치에서 한 문서의 다른 부분을 수정했을때 병합하기
main 브랜치와 o2브랜치 양쪽에서 work.txt파일을 수정
-> 문서안의 수정위치는 다름
o2브랜치를 main 브랜치에 합치기 위해 main브랜치로 전환한다.(git merge이용)
Auto-merging work.txt: 병합 완료 메세지

-서로 다른 브랜치에서 한 문서의 같은 부분을 수정했을 때 병합하기
main 브랜치와 o2브랜치 양쪽에서 work.txt파일을 수정했는데 문서의 안의 수정위치가 같을때
-> 사용자가 충돌 부분을 직접해결한후 커밋

-병합이 끝난 브랜치 삭제하기
브랜치를 병합한후 더 이상 사용하지 않는 브랜치는 깃에서 삭제가능
(브랜치를 삭제하더라도 완전히 지워지는것은 아니며 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼수 있음.)

저장소의 기본 브랜치는 main이므로 브랜치를 삭제하려면 main브랜치에서 해야함.
git branch -d (삭제할 브랜치 이름)
Deleted baranch (삭제한 브랜치 이름): 메세지가 뜬다면 브랜치 삭제에 성공한것.

cherry pick으로 병합하기

이와같은 브랜치 구조를 가진 저장소가 있다고 가정

main브랜치와 topic브랜치를 병합한다면 두개의 브랜치를 병합하는 새로운 버전 mt3가 생김(병합하며 새로운 버저닝 추가됌) -merge

이에 비해 cherry-pick은 main브랜치와 topic브랜치를 합치긴 하는데 브랜치 전체를 합치는 게 아니라 topic브랜치중 특정 버전의 변경 내용만 합치려할때 사용하는 기능(topic브랜치의 다른버전들은 합쳐지지 않음)

오류 잡았거나 스터디를 통해 알아낸부분

<오류>
*** Please tell me who you are.

Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

<원인분석>
사용자 계정 정보를 입력하지 않아서 발생하는 문제
Git -> 설정 -> 사용자 계정 -> 이름 & 이메일 입력

<해결한 코드>
git init
git config user.name "someone"
git config user.email "someone@someplace.com"
git add *
git commit -m "some init msg"

0개의 댓글