Branch

이상해씨·2023년 12월 8일
0

Git

목록 보기
3/4

Branch

  • 효율적인 개발을 위해 서로 다른 사용자의 작업을 나눠서 진행
  1. 별도의 다른 개발자의 작업을 나눠서 진행 (branch)
  2. 나눠서 진행한 작업을 하나의 작업으로 합침 (Merge)

서로 같은 부분을 다르게 수정하여 병합할 경우, 충돌 발생
하나의 선택지를 택해야 함

Branch 종류

  1. 기본 branch = main, master
  • git에서 기본 브랜치 : master
  • github에서 기본 브랜치 : main

💡 왜 서로 이름이 다른가?
master가 노예제를 연상하게 한다는 이유로 main을 사용하고 있음

  • git init으로 초기화 후 레포지토리에연결하는 과정에서 기본 브랜치로 master 설정됨
  • 깃허브에서 제공하는 초기화 설정이나 가이드라인을 행하게 되면 기본 브랜치가 main이 됨

branch 명령어

1. branch 확인, 생성, 삭제

1-1. branch 확인

$ git branch

1-2. branch 생성

$ git branch <branch name>

1-3. branch 삭제

$ git branch -d <삭제할 branch name> 

2. branch 이동, 변경, 복원

2-1. branch 이동

  • checkout
  • 브랜치 면경 , 작업 트리 파일 복원 등 기존에는 checkout이 할 수 있는 기능이 너무 많아 switch와 resotre가 각각 checkout의 변경과 복원기능을 나눠 담당하게 되었다.
  • 현재 checkout을 통해 브랜치를 이동하려 사용할 수 있다.
$ git checkout <변경할 branch name>
  • 다른 브랜치로 checkout을 하게 되면 원격저장소의 내용 또한 해당 branch의 내용으로 바뀌게 된다.

2-2. 다른 branch로 변경

  • 기존 branch로 변경
$ git switch <변경할 branch name>
  • 새로 branch 생성 후 변경
$ git switch -c <변경할 branch name>

2-3. 삭제한 branch 복구하기

(1단계) git reflog로 복구시점 확인

  • 삭제한 브랜치를 어떤 시점으로 복구할 것인지 확인
  • 남긴 커밋 중 돌아갈 커밋 해시값을 가져옴
  • 해시값을 확인하기 위해 모즌 참조 목록 확인하는 reflog명령어 입력
$ gir reflog

(2단계) git checkout으로 브랜치 복구

  • 위 단계에서 확인한 해시값과 브랜치명을 입력하여 복구
$ git checkout -b <삭제한 브랜치명> <커밋해시값>

3. 삭제한 내용 복구하기

3-1. 삭제한 내용 복구

1) resotre를 사용하여 복구하기

  • resotre는 파일 수정 내용을 복원하고 add를 통해 stage에 올린 파일을 뺄 때 사용
$ git restore <복구할 파일>

2) checkout을 이용하여 내용 복구하기

  • git checkout --filename 은 파일 내용이 최신 커밋 전으로 되돌아가도록 함
  • checkout으로 지워진 내용은 commit 하지 않아 다시 복구할 수 없다.
$ git checkout -- <복구할 파일>

3-2. stage에 올린 내용을 빼는 방법

1) resotre 사용하기

$ git resotre --staged <stage에서  파일명>

2) reset 사용하기

$ git reset <stage에서  파일명>

4. 합병하기 (merge)

git checkout main // main으로 branch 변경
git log // log확인
git merge <merge  branch>
git log
  • merge
$ git merge <merge  branch>
$ git push origin main 

5. 충돌이 일어 났을 때 (conflict)

  • 병합할 브런치의 수정내용이 서로 다를 때, 충돌이 발생
    ->수동으로 충돌난 부분을 바꾸어 줘야함

  • 수동으로 충돌난 부분을 고친 후, git add, commit, push 하여 적용

6. 특정 branch에서 push하기

  • git push시 error 발생

    To push the current branch and set the remote as upstream. use
    
    git push --set-upstream origin <branch name>
  • 에러가 난 이유?
    로컬 저장소의 브랜치 정보는 원격 저장소에 자동으로 등록 되지 않음
    로컬 저장소에 있는 브랜치가 원격저장소에 있는 브랜치를 추적할 수 있도록 해야 함
    로컬 브랜티가 추적해야 할 브랜치는 upstream branch 라고 함

  • 해결방법
    1)

     git push --set-upstream origin <branch name>

    2)

git push -u <원격저장소><브랜치명>

//ex)
//git push -u origin HaHA

7. 기타 명령어

echo

  • echo는 print와 유사한 기능의 리눅스 명령어로 문자열을 출력해주는 역할을 한다.
echo '<문자열>'
  • BanchA.txt에 문자열 입력하기
echo '<문자열>'>> branchA.txt

vi

vi README.MD // 작성후 종료 i
  • i -> 수정 후 -> ESC ->:wq
profile
공부에는 끝이 없다

0개의 댓글