본문 바로가기
Git

브랜치 정리

by shulk 2023. 10. 10.

0.  브랜치는 커밋을 가리는 존재(포인터)이고 HEAD는 이런 브랜치를 통해 커밋을 간접적으로 가리는 존재(포인터)

 

1. git branch => 모든 브랜치 조회 

    git branch 브랜치이름 => 브랜치 생성

    git branch -d 브랜치이름=> 해당 브랜치 삭제

 

2. 브랜치를 생성하면서 동시에 생성한 브랜치로 체크아웃할때=> git checkout -b 브랜치이름 

 

3. A브랜치에서 B브랜치에 있는 파일 내용들을 합치고 싶을때=> A로 체크아웃후 git merge B

 

4. merge하고 충돌 conflict 일어났을때는 코드를 수정후 add,commit 한다.

    commit할때 메세지 -m안적고 바로 git commit만하고 :wq 엔터 해도 된다.

 

5. conflict가 일어 났는데 merge를 취소하는 방법=> git merge --abort 

 

6. 깃허브 맨처음 레포지토리 생성후 하는 작업중에 이런게 있다 ↓
    1) git remote add origin https://github.com/Kolin/Math_Box.git 
    2) git push -u origin master

 

    1)을 보면 remote는 리모트 레포지토리에 관한 작업을 할 때 쓰는 커맨드이고,

    그 뒤의 add는 새로운 리모트 레포지토리를 등록하겠다는 뜻이다. 그다음 

    origin https://github.com/Kolin/Math_Box.git 이거는 이 주소 리모트 레포지토리를

    orgin이라는 이름으로 등록하겠다는 뜻이다. (이름을 orgin말고 맘대로 해도 상관없으나 orgin추천!!)

 

    2)를 보면 현재 로컬 레포지토리에 있는 master 브랜치의 내용(=master 브랜치와 관계된 모든 커밋들)을
    origin이라는 리모트 레포지토리로 보낸다는 뜻이다. 여기서 -u는 --set-upstream이라는 옵션의 약자이고

    로컬 레포지토리에 있는 master 브랜치가 origin에 있는 master 브랜치를 tracking(추적)하는 걸로 설정.

 

   예를들어 리모트에는 현재 main브랜치만 있고 로컬에는 main,premieum있을때 premieum을 맨처음 푸쉬하려할때 2)방법대로 하면된다.

   이렇게 1,2번을 설정하고 나면 계속 추적중 상태라 git push, git pull만 적어도된다.

 

7.  git reset을 할때 head의 변화

   네번째 커밋에 있는데 reset으로 3번째 커밋하면 head는 여전히 브랜치를 가리키면서  head가 가리키는 브랜치가

   다른 특정 커밋인 3번째를 가리킨다. 이때문에 head가 간접적으로 가리키던 커밋도 바뀌게 되는것이다.

   근데 리셋한다고 커밋이 삭제되는게 아니다. 다시 리셋 네번째꺼하면 돌아온다.

 

8. head가 커밋을 직접적으로 가리키기

    7번설명 첫번째 사진상태에서 check out 세번째커밋 아이디 하면 아래 사진처럼 바뀐다.

    보통 이건 특정 커밋에가서 새로운 브랜치를 만들고 싶을때 한다. 

여기서 git branch premium하면 ↓

git checkout 커맨드는 head가 커밋을 직접적으로 가리키게 할 수 있을 뿐만 아니라

브랜치를 직접 가리키게 할 수도 있다.

이러고 git checkout premium하면 head가 premium브랜치를 가리키게 된다.

그후 새 커밋을 하면 이렇게 된다.

9. gir reset vs git checkout 차이점

'Git' 카테고리의 다른 글

Git History 에서 특정 파일 기록 삭제  (0) 2023.11.18
직접 gitignore 생성하기  (0) 2023.11.14
Git 추가정리-1  (0) 2023.10.11
커밋 정리  (0) 2023.10.08