[Git/GitHub] 사용법3

박준수·2022년 9월 11일
0

Git/GitHub

목록 보기
3/4

브랜치

On branch master 의 의미 : 마스터 브랜치(레포지토리를 만들고 커밋을 하면 자동으로 생기는 브랜치, 기본 브랜치) 위에 있다.

  • git branch premium -> git checkout premium : premium브랜치를 만들고 premium브랜치로 이동
  • git branch test : test브랜치 생성
  • git branch -d test : test브랜치 삭제
  • git checkout -b test : test브랜치 생성 후 test브랜치로 이동

merge

git merge master : 현재 위치인 branch에 master branch를 합치겠다.

  • 3-way merge

base때의 내용과 비교했을 때 달라진 부분이 있는 것이 우선시되고,
두 브랜치에서 둘다 변화가 일어났을 때는 Conflict를 발생시켜서 사용자가 스스로 선택하게끔 한다는 걸 기억하시면 됩니다.

  • Fast-forward
    커밋 히스토리에서 같은 선(line) 상에 있는 브랜치를 머지할 때 Fast-forward 머지가 이루어집니다.
    지금 master 브랜치가 더 최신 커밋으로 이동함

참고 : https://wikidocs.net/153693

merge하다가 conflict(충돌)가 발생 할 수 도 있음 :

해결방법 : conflic가 발생한 파일을 연다 -> merge의 결과가 되었으면 하는 모습대로 코드를 수정 -> 커밋

파일 여러개가 conflict가 났을 때 :

  • 파일 하나씩 conflict를 해결하고 git add [파일 이름] 커맨드로 하나씩 staging area에 올리거나(중간중간에 git status 커맨드로 현재 상태 확인하면서) 모든 파일들의 conflict를 다 해결하고, git add . 커맨드로 한번에 staging area에 올리고 커밋을 하면 된다.

git merge 와 git rebase의 결과는 똑같음

rebase는 새로운 커밋을 만들지 않음. 다른 브랜치로 합쳐진 상태로 이동

  • 커밋 히스토리가 한 줄로 깔끔하게 정렬된 것을 볼 수 있음.
  • <주의> : 원격 저장소에 Push로 이미 내보낸 커밋에 대해서는 절대 Rebase 하지 말아야 함.
    참고 : https://nemomemo.tistory.com/99
    git rebase : 커밋 히스토리를 깔끔하게 유지하는게 더 중요한 이유
    git merge : 두 브랜치를 합쳤다는 정보가 커밋 히스토리에 꼭 남아야하는 경우 사용

merge자체를 취소하고 싶을때 : git merge --abort

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

git reset VS git checkout

git rest
1.HEAD가 가리키던 브랜치가 다른 커밋을 가리키도록 한다.
2.HEAD도 결국 간접적으로 다른 커밋을 가리키게되는 효과가 생긴다.

  • 여기서 잠깐~!
    git reset으로 아주 예전의 레포지토리로 이동해도 지금까지 커밋한 레포지토리는 삭제되지 않는다.
    git reflog를 하면 HEAD가 가리켰던 commit들의 id를 확인 할 수 있어 돌아올 수 있다.

git checkout
1.HEAD 자체가 다른 커밋이나 브랜치를 가리키도록 한다.
2.브랜치를 통하지 않고, 커밋을 직접적으로 가리키는 HEAD를 Detached HEAD라고 한다.

  • 주된 이유 한 가지는 바로 과거의 특정 커밋에서 새로운 브랜치를 만들고 싶을 때입니다.

    git checkout후에 commit --> 새로운 브랜치가 생성

profile
방구석개발자

0개의 댓글