git의 혁신-branch/branch 만들기

|

git의 혁신 - branch

  • branch는 나무의 가지를 이용한 비유로, 작업을 분기해서 처리하는 경우에 대한 시적인 표현
  • 어떠한 파일을 수정할 때 뒤에 버전마다 번호를 붙이는 경우, file.txt, file2.txt, … 처럼 표현 가능
  • 하지만 중간에 해당 파일을 누군가에게 다른 목적으로 줘야 할 경우 file2_client.txt처럼 별도로 표현
  • 이러한 것처럼 새로운 가지를 뻗쳐나가는것을 branch라고 함
  • 즉, 작업이 분기되는 경우를 새로운 branch를 만드는 것이라고 이해하면 됨
  • 분리, 중지/합침, 계속 버전관리 등을 가능하게 함
  • git 외에 다른 프로그램도 있으나 어렵고 용량이 많이 차지됨
  • 하지만 git은 이러한 단점들을 개선하여 매우 효율적인 branch 시스템을 구축

branch 만들기

  • 새로운 디렉터리에 git init으로 초기화
  • f1.txt라는 파일을 만든 후 내용을 적고 저장
  • git add f1.txt를 통해 버전관리를 시작하고, git commit -m "commit message"로 커밋
  • f1.txt파일의 내용을 추가하고 저장
  • git commit -am "commit message"를 이용해 바로 add 후 commit 메세지를 작성하여 커밋
    • 단, git add로 버전관리를 시작하지 않은 파일은 위의 바로 add후 커밋하는 기능 사용 불가능
  • git log로 확인하면 두 개의 버전이 생성된것을 확인 할 수 있음

  • 원래 소스코드를 변경하지 않으면서 따른 customizing되는 기능이 추가되어야 할 경우 branch를 새로 만들기(분기) 딱 좋은 상황임

  • branch를 만들기 위해 git branch를 치면, master가 출력됨
    • 현재 master(기본) branch에서 작업중인것을 확인 할 수 있음
  • git branch branch_name로 새로운 branch를 만듦(git branch exp)
  • git branch로 확인해보면 master와 exp가 생겼고, 현재 master branch에서 작업중이므로 master 앞에 별표가 존재함
  • git checkout exp로 현재 branch를 exp로 바꾸면, 별표가 exp로 옮겨진 것을 볼 수 있음
  • git log로 log를 확인해보면 master일때와 동일한 출력을 확인 할 수 있음
  • f1.txt의 내용을 다시 변경 후 저장한 다음 git add f1.txtgit commit -m "commit message"로 커밋
  • 다음으로 git log로 확인(커밋 된 내용 확인됨)
  • git checkout master로 branch 변경 후 git log로 확인해보면 f1.txt의 내용은 변하지 않고, git log로도 변경된 내용이 반영되지 않은것을 확인 할 수 있음
  • 즉, f1.txt파일이 어느 branch에 속해있느냐에 따라 내용이 완전히 달라지게 됨
  • 명령어 모음
    • git branch: 브랜치의 목록을 볼 때
    • git branch "새로운 브랜치 이름": 브랜치를 생성할 때
    • git branch -d: 브랜치를 삭제할 때
    • git branch -D: 병합하지 않은 브랜치를 강제 삭제할 때
    • git checkout "전환하려는 브랜치 이름": 브랜치를 전환(체크아웃)할 때
    • git checkout -b "생성하고 전환할 브랜치 이름": 브랜치를 생성하고 전환까지 할 때