Ruby Coin

Rails 와 프론트 엔드 기술을 이용해 흥미 위주의 빠른 웹 개발 방법론

branch 만들기

토픽 Ruby Coin > Deploy & Maintenace > 지옥에서 온 Git

수업소개

branch를 만드는 방법에 대해서 알아봅니다. 

수업

 수업에서 사용한 명령어

브랜치의 목록을 볼 때

git branch

브랜치를 생성할 때 

git branch "새로운 브랜치 이름"

브랜치를 삭제할 때

git branch -d

병합하지 않은 브랜치를 강제 삭제할 때 

git branch -D

브랜치를 전환(체크아웃)할 때

git checkout "전환하려는 브랜치 이름"

브랜치를 생성하고 전환까지 할 때 

git checkout -b "생성하고 전환할 브랜치 이름"

댓글

댓글 본문
  1. CrashOverride
    어떤 개발도구를 사용하시는지 모르겠지만 대부분 브랜치를 넘나들면서 바뀌는 파일들은 에디터들이 알아서 새로고침해 보여주지 않을까요?
    자동으로 안되면 직접 새로고침이나 에디터에서 해당 파일 자체를 닫았다가 다시 열어봐도 될 것 같고요.
    대화보기
    • 20210613
    • 박병진
      2021.02.04 완료
    • 주니어개발자
      병합하지 않은 브랜치를 강제 삭제할 때

      git branch -D

      브랜치를 생성하고 전환까지 할 때

      git checkout -b "생성하고 전환할 브랜치 이름"
    • 익명
      브랜치 로그인이 계속 실패해요ㅠㅠ
    • winterer
      브렌치를 만들고 나서 각 브랜치 별로 개발 도구를 통해 어떻게 소스 수정을 하는건지요?

      개발도구를 통한 소스 수정이나 브랜치 만드는 법은 개별로는 방법을 다 알고 있는데, 브랜치 별로 소스 수정을 어떻게 하는지 모르겠습니다.
    • supernet
      완료!!
    • 천사나라
      제 질문의 요지는 3단계전 커밋한 상태를 그대로 따로 파일로 저장 가능한가 해서요....
    • 천사나라
      이전 버전중의 하나를 따로 파일로 저장 할려면 방법이 있나요?
    • Army
      대박이네요..진심
    • PassionOfStudy
      branch 사용법에 익숙해지자!
    • software.lee
      감사합니다.
    • git checkout -b <new branch> <enter>
      => 현재 브랜치의 저장소에 있는 내용을 복사하여 새로운 브렌치를 만들고
      => 작업브렌치를 변경하여 작업영역으로 복사된 새로운 브렌치의 내용을 복사해온다.

      git branch <enter> => 현재 작업영역의 브렌치 이름을 확인한다.

      *현재 디렉토리에서 파일작업을 한다, 파일수정을 한다.

      git add <파일이름> <enter>
      git commit -m <커밋 메시지> <enter>
      git log <enter> => 커밋 기록을 확인한다.
      git branch < enter> => 브렌치를 확인한다.


      git branch -d <비 작업영역의 삭제하고자 하는 브렌치이름> <enter> =>branch를 삭제한다.
      =>error, ex2 is not fully merged. run git branch -D <branc>

      git branch -D <비 작업영역의 삭제하고자 하는 브렌치이름> <enter> =>branch를 삭제한다.

      git branch <enter> => branch가 삭제되었는지 확인한다.
    • git branch <enter> => 저장소안의 branc정보를 보여줌, *표가 현재 branch임.
      *master => 처음 자동으로 생성한 브렌치는 무조건 마스터 브렌치임

      git branch <new_branch name> <enter> =>현재 브렌치 내용을 새로운 브렌치로 복사한다. 단 저장소 내에서
      git branch <enter> =>새로 복제된 브렌치를 포함하여 저장소안의 전체 브렌치 정보를 보여준다.
      =>*가 표기된 브렌치가 현재 작업영역과 연결된 브렌치이다.

      git checkout <branch name> <enter>
      => 저장소에서 작업영역으로 브렌치내용을 복사해온다.
      => 작업영역에서 기존에 브렌치에 저장된 파일은 삭제된다.
      => 새로운 브렌치에서 작업해야할 경우에사용한다.

      작업영역에서 파일을 수정한다.
      git add <수정된 파일이름> <enter>
      git commit -m "커밋 메시지" <enter> 작업영여의 내용을 저장영역의 브렌치에 저장한다.
    • 제로스
      잘봤습니다 ~~
    • 오빠는다르다
      감사합니다-!!!
    • 고스트프리
      감사합니다.
    • 김수현
      git init > 현 디렉토리에 저장소가 만들어짐(.git디렉토리)
      f1.txt라는 파일을 또 만들어서 a라고 쓰고 나오겠음(vim f1.txt > i > a > esc > :wq)
      git add f1.txt (버젼관리 시작)
      git commit -m "1"
      한번더 수정하자 (담줄에 b)
      git add 사용 안하고 > git commit -am "2"
      -a를 쓸경우 조심할 것 : 한번도 에드를 하지 않은 파일은 이렇게 하면 안됨, add명령으로 한번 해줘야 > 자동으로 add할 수 있음

      이렇게 계속 버젼관리를 할 수 있는데 어떤 문제가 생길 수 있냐하면
      작업하고 있었던 소스는 그대로 두면서도 고객사에게 제공하는
      특별한 기능 커스텀된 기능이 추가되는 경우 > 원래 소스를 더럽히지 않으면서 (원래소스 변경없이)
      고객을 위한 커스마이징된 코드를 개발할 수 있음(이런 경우 브렌치가 딱 맞는 경우)
      또다른 경우 - 누군가 개발해 달라고 했는데 > 폼을 보니 > 필요 없는데 개발해 달라고 하는 느낌이 듬(쉽게 버릴 수 있는 방법-분기)
      또는 어떤 경우 - 서버에 반영하면서 > 문제점이 없는지 체크를 해야 하는 경우 > 메인을 위한 작업/테스트를 위한 작업 > 분기
      여러 경우가 있음

      브랜치를 만들어보자
      git branch
      master라 나옴 + 앞에 *이 나옴 (무슨 뜻?)
      현제 master라는 브렌치를 쓰고 있다라는 뜻
      git을 사용하는 순간부터 master를 기본 브랜치로 사용하게 되어 있음 > 약속 같은 특별한 이름의 브랜치임
      새로운 브랜치를 만들어보자 (git branch 하고 exp_실험한다는 의미에서 많이 사용함, 또는 feature(특정한 기능을 추가할 경우)
      아무튼 앞에 접두사를 사용 조직/개인이 결정할 문제 > 아무튼 exp라는 브렌치를 만들고 사용하는 것을 보일 것임
      git branch exp
      git branch
      브렌치들이 나옴 *가 현제의 브렌치임
      그러면 exp브렌치로 들어가려면?
      git checkout exp (숙박같은 것을 할 경우 checkout이라고 함)
      git branch를 해보면 *exp로 변경되어 있음
      ls -al > f1.txt가 보임
      git log > 1과 2가 나옴
      이것은 master브렌치와 exp브렌치는 같은 상태라는 것
      브렌치는 현상태의 브렌치를 그대로 복사한다라고 생각하면 됨
      그럼 여기서
      f1.txt(담c)변경 > 커밋 3으로 변경(git commit -am "3")
      아니 git add f1.txt > git commit -m "3"
      git log > 현제 1,2,3을 가지게 됨
      git checkout master
      git log > 1,2만 있고, 파일내용도 다름
      git checkout exp
      git log > 1,2,3 > cat f1.txt > abc
      f1.txt가 어느 브렌치냐에 따라 파일내용이 다름

      똑 같은 것인데 실습삼아 다시해보자
      ls -al
      왼쪽은 터미널 / 오른쪽은 현디렉토리의 파일을 보여주는 화면(8:40)
      vim f2.txt파일 추가 > a라고 하고 저장 > git add f2.txt
      git log > 4번할 차례임 > git comm -m "4"
      git checkout master > 여기 있는 2개의 파일은 어떻게 될까?
      보면 f2.txt가 감쪽같이 사라짐
      그리고 다시 git checkout exp로 하면 다시 나타남
      정말 좋은 기능임 + 아주 가볍고
      저장소를 추가적으로 거의 쓰지 않음
      그래서 브랜치는 훌륭한 기능 > 댓가는 공부를 해서 익혀야 하는 것
      진도 나가기 전에 혼자서 브랜치를 여러개 만들어 보자
      checkout도 하고 파일도 수정하고 브랜치를 손에 익게 하고 그다음 내용 보자
    • Yoo Moon Il
      groundtree님의 코드에 약간 설명 붙였습니다. (코드 정리해 주신것 잘 쓰고 있습니다)

      * 새로 gitfth만들어서 init하고 만듬
      * f1.txt 생성후 2번 commit 하기 :
      vim f1.txt
      git add f1.txt :처음에는 무조건 add해야함 (-a 사용하면 안됨)
      git commit -m "1" : commit 내용 자동 작성
      git log
      vim f1.txt :수정
      git commit -am "2" :두번째 부터는 -a사용할수 있음 (add의 효과)
      git log

      * branch 생성
      git branch exp :브랜치 생성
      git branch : 브랜치 확인
      git checkout exp : 브랜치 옮김
      git branch :확인.. 옮겨도 앞의 마스터 브랜치와 동일한 화일이 생성되어 있음믈 확인 할수 있음

      *** 각각의 branch에서 수정 생성된 사항은 다른 branch에는 영향을 주지 않는다는 실습 **********

      * exp 브랜치에서 f1.txt 수정
      vim f1.txt : abc 입력 ( 그이전까지는 ab였음)
      git add f1.txt
      git commit -m "3"
      git log

      * master 브랜치로 변경하여 log 확인
      git checkout master
      git log
      cat f1.txt : : ab만 출력(exp에서 커밋한것 반영 안됨)

      * exp 브랜치로 이동하여 파일 내용과 커밋버젼 비교
      git checkout exp
      git log
      cat f1.txt : abc 출력

      * exp 브랜치에서 f2.txt 추가
      vim f2.txt :a입력
      git add f2.txt
      git commit -m "4"

      * 브랜치를 전환하여 파일 변경사항 비교
      git checkout master : master branch에서는 f2.txt가 없음. 즉, 각 브랜치마다 변경사항이 각각 저장됨
      git checkout exp
    • groundntree
      * f1.txt 생성후 2번 commit 하기
      vim f1.txt
      git add f1.txt
      git commit -m "1"
      git log
      vim f1.txt
      git commit -am "2"
      git log

      * branch 생성
      git branch exp
      git branch
      git checkout exp
      git branch

      * exp 브랜치에서 f1.txt 수정
      vim f1.txt
      git add f1.txt
      git commit -m "3"
      git log

      * master 브랜치로 변경하여 log 확인
      git checkout master
      git log
      cat f1.txt

      * exp 브랜치로 이동하여 파일 내용과 커밋버젼 비교
      git checkout exp
      git log
      cat f1.txt

      * exp 브랜치에서 f2.txt 추가
      vim f2.txt
      git add f2.txt
      git commit -m "4"

      * 브랜치를 전환하여 파일 변경사항 비교
      git checkout master
      git checkout exp
    • 성동현
      add이후 commit안하고 branch를 바꾸면 파일이 전에서 후의 branch로 옮겨가네요.
      궁금해서 해봤습니다.