BRANCH ? = 나무의 가지라고 할 수 있다.
EX) REPORT.XSL이라는 파일이 있다. 이는 1,2,3버전으로 막 수정되었다.
현재 REPORT3.XSL이 되었다! . 이를 고객들에게 제공하려면
REPORT3_CLINET.XSL이 되었다.
그이후, 그건 두고 REPORT3을 REPORT4로 바꾸고 싶다. ..
1)
그렇다면 REPORT3_CLIENT는 수정되면서,
REPORT3는 REPORT4로 수정되는 요구가 존재할 것이다.
2)
그러다보면, REPORT3_CLINET+REPORT4 -> REPORT5인 경우도 존재할 것이다.
이 과정에서, 작업이 분기되는 현상 -> REPORT3,REPORT3_CLINET 이걸 BRANCH 라고 한다.
--실제 예시 --
고객들에게 기능은 냅두고, 내 기능을 개발한다.
어떤 기능을 만들었는데, 여기까지를 서버에 반영해서 test 팀에 냅두고, 작업을 더 진행해야한다.
(git checkout -b branch2라하면, 생성과 checkout이 동시에 일어난다)
현재까지를 설명하자면, exp branch를 생성하고, 그 branch로 내가 이동했다 .
exp branch에서 commit을 하고, log를 보았다
master로 가서 , 다시 log를 확인하였다 .
보이지 않음이, 당연하다 .
내가 branch를 사용할때는, 이 분기되는 그림을 항시 생각하자.
git log --branches --decorate를 하면, checkout 된 branch아니고 master branch도 확인이 가능하다.
git log --branches --decorate --graph -- oneline -> 한눈에 다 볼 수 있다.
git log branch명..branch명2 -> 1에는 없고, 2에는 있는 것을 비교해서 불러주고 , 이때 -p를 추가하면없는 commit이 무엇이고, 있는 파일은 무엇인지 까지를 추가해준다.
이런 식의 비교 또한 가능하다.
** 잠깐 적고가는 git reset 팁!
민재가 알려준 정보대로 검색을 해보았다.
내용의 핵심은. git은 모든 정보를 저장한다. 그렇기 때문에 reset이 이루어지기 전으로도 돌아갈 수 있다.
다만, 실제 업무에서는 history가 꼬이므로 reset 사용은 지양하는 것은 동일하다고 한다 .
그럼 이제, branch들을 병합해야 하면 어떻게할까 ? 병함하는 것을 MERGE라고 한다!
현재 상태 :
exp에서 진행한내용을 , masterbranch에 merge 한다( 누가 어디에 들어가는지가 중요하다 )
master로 checkout하여, git merge exp(일리와!) 이렇게 해야한다. 헷갈리네
그 이후 merge를 진행한다.
commit을 많이 진행하지 않아서 쉬웠고, 유튜브 생활코딩 님의 예시를 따라 진행한 후 결과도 보이겠다.
Fast - forward는 무엇일까? -> master가 branch이후 어떠한 작업도 진행하지 않았다. 이럴때는
빠르게 (빨리감기)해줄 수 있다. *이때는 별도의 추가 commit이 발생하지 않는다
master에서, 본인이 진행했던 일 + exp에서 진행한 이후 내용을 모두 가진다.
*이떄는 별도의 commit이 발생한다. (합쳐질때)
그 이후, exp에서도 그렇게 합쳐진 결과를 받고 싶다면?
exp에서 또 merge받아오면 되지 !
**주의할점!
내가 생각하기에도, 그렇게 master에서 합친 이후에 master에서 한번 더 작업하면 exp는 어떡하지? 란 고민이 들었다.
그러나 exp에서도 merge를 합병하면, 둘은 이제야 완벽히 하나의 branch가 되었다고 할 수 있다.
exp는 제거 !
**BRANCH 충돌!
exp branch를만들고, main branch에선 원본을 6단계까지 수정.
그 이후 exp branch에서 원본2를 7단계 까지 수정했다.
그 이후 main에서 git merge branch가 있다면 , 어떻게 될까?
exp의 commit"7" + master"6"의 결과가 나온다. -> 파일이 다르다면 괜찮다.
하지만 exp와 main 모두 같은 원본 파일에 대해 수정했다면 어떡하지 ?
*같은 파일이더라도, 위치가 다르면 자동으로 합쳐진다.
*같은 부분, 같은 위치를 수정하면 어떡하지 ? -> MERGE CONFLICT가 발생한다.
BOTH MODIFIED로 표현된다.
<<HEAD
현재 내 BRANCH의 변경내용
====== 이것을 중심으로
합병할 BRANCH의 변경 내용
>>EXP
즉, 너가 알아서 이충돌을 해결하라는 의미이다.
변경한 이후 재 COMMIT하면, 자연스럽게 완료된다.
'자바 , 기타 공부 > GIT' 카테고리의 다른 글
GIT REBASE / GIT을 이용한 흐름 파악 (1) | 2024.01.21 |
---|---|
깃 활용 2 , GITHUB (0) | 2024.01.20 |
깃 개념 (0) | 2024.01.16 |
깃 활용 -1 기초 (0) | 2023.12.25 |