코드를 짤 때, 파일의 복사본을 만들어서 거기에 먼저 코드를 짜보고 실행이 잘되면 원본 파일에 반영하는 식으로 코드를 짜는 것이 안전하다.
branch는 프로젝트 복사본이라고 생각하면 되는데, 정확히는 커밋의 복사본이다.
git branch 브랜치명 (브랜치 생성해줌)
git switch 브랜치명 (만든 브랜치로 이동)
git switch main (main 브랜치로 이동)
git log --oneline --all --graph (브랜치와 커밋한 상황을 보여줌)
git merge 브랜치명 (브랜치 합치기)
red.txt라는 main파일이 있고, 코드를 입력한다.
git branch paper을 입력하여 paper 브랜치를 생성한다.
git switch paper을 입력하여 paper 브랜치로 이동한다.
git status를 입력하니 현재 paper 브랜치에 와있는 것을 볼 수 있다.
이제 paper 브랜치에서 개발을 진행해보자. paper이라는 파일을 하나 만들고, 여기다가 코드를 작성해본다.
git add . 하면 모든 파일이 스테이징 되고, git commit -m '브랜치 파일 만듦' 으로 커밋도 해본다.
여기까지가 paper 브랜치에서 paper 파일을 만들고 커밋까지 한 상태이다.
그 다음 git switch main을 입력해서 main 브랜치인 red.txt파일로 이동한다.
그랬더니 paper 파일이 사라져 있다. 왜냐면 paper 파일은 paper 브랜치에서 만든 것이지 main 브랜치에서는 안만들었기 때문에, 이렇게 독립적으로 개발이 가능하여 훨씬 안정적이다.
이후로 브랜치 연습을 하기 위해 이것저것 해봤다.
main과 paper 브랜치로 이동해서 파일에 코드를 추가하고 각각 add와 commit을 해보았다.
이제 여기서 만약 paper 브랜치 코드를 main 브랜치에 합치고 싶다면! (=merge)
먼저, 기준이 되는 브랜치로 이동한다. 나는 paper 브랜치의 코드를 main 브랜치로 이동시키기 위해 git sitch main을 입력하여 main 브랜치로 이동했다.
그 다음, git merge paper(합칠 브랜치명)을 입력하면 되는데
여기서 두 가지 경우로 나뉜다.
main 브랜치랑 paper 브랜치랑 각각 다른 파일을 수정했을 경우
git merge paper를 입력 했을 때, 문제 없이 합쳐진다.
main 브랜치랑 paper 브랜치랑 같은 파일의 같은 줄을 수정했을 경우
충돌이 발생한다. 이런 경우는 원하는 코드만 남기고 git add와 commit을 해주면 충돌이 해결된다.
나의 경우엔 red.txt 파일과 paper 파일 각각 다른 파일을 사용했기 때문에 그냥 git merge paper만 해줘도 문제가 발생하지 않는다.
마지막으로 커밋해주고
git log --oneline --all --graph을 입력해서 깃로그를 출력해보니 merge가 잘 된 것을 볼 수 있다.
참고로, HEAD는 나의 현재 위치라고 생각하면 된다.
HEAD -> main은 현재 내가 main 브랜치에 있다고 알려주는 것.