Git&Github정리

호근·2022년 12월 13일
0

git

목록 보기
1/1

Clone, Pull

clone : 내 원격 레파지토리를 로컬레파지토리로 복제해온느 것.
클론받아오면 절대 init하지 말것.

git clone {rmote_repo}

remote repo의 변경사항 (commit)을 Local로 당겨서 가져옵니다.

Clone은 원격에 백업된 Repo를 그대로 가져와야할 때 다운로드
Pull은 최신커밋을 당겨오기

Branch

작업 공간을 의미한다.
작업공간을 나눌 수 있다.

마스터 브랜치는 상용화를 의미한다.
때문에 쓸데없는 기능, 연습용으로 사용하면 안된다.

따라서 새로운 브랜치를 만들어야 한다.

git branch bank

뱅크라는 브랜치를 만든다.

git switch bank

헤드가 master가 아닌 bank를 가리킨다.

switch

브랜치를 옮긴다.

헤드란 ?

현재 브랜치의 최신 커밋을 가리키는 포인터

즉 master

내가 기본으로 가지고있는 브랜치를 master 브랜치라고 한다.

Branch Merge

Merge가 머지? (깔깔유머)

merge : 병합
분리된 브랜치들을 하나로 합치는 명령어이다.

HEAD가 가리키는 브랜치에 합쳐진다.

$git branch
*branch1 // *은 HEAD라는 뜻
branch2

브랜치 2를 브랜치 1에 합치려면?

$git merge branch2

브랜치 1을 브랜치 2에 합치려면?

$git switch branch2
$git merge branch1

merge의 종류

기존 브랜치와 분기한 브랜치의 관계에 따라 달라진다.

Fast - Forward (빨리감기)

 git이 자동으로 merge함

3 - Way Merge

git이 자동으로 merge함
세 커밋을 비교후에 새로운 커밋으로 합쳐줌.
합쳐진 브랜치는 삭제함.

Merge Conflict

같은 라인을 수정한 뒤에 합치려고하면 발생
오토머징이 불가하여 발생,
직접 설정해줘야함

주의사항

Merge 후 다음과 같이 브랜치를 삭제해야함.

git branch -d 브랜치명

삭제 안해주면 동일명의 브랜치를 생성할 수 없고
쓸모없는 브랜치를 남겨두게되면,
추후 그래프를 찍어볼 때 헷갈린다.
해당 브랜치의 기능이 완료되지않았나? 아직 개발중인가? 왜안삭제됐지? 등
헷갈리기 때문에 삭제한다.

Git workflow

Branch와 pullrequest를 이용한 협업

Feature Branch Workflow

원격저장소의 소유권이 있는 경우

현업에서는 기능추가를위해 브랜치를 새로 생성하여 기능을 구현한다

클론을 통해 받아오고 기능에 맞는 브랜치를 새롭게생성한다.

기능구현이 끝나면 커밋 후 push한다.

상용화되있는 master 브랜치를 가져와
독립공간인 branch를 만들어 해당 브랜치에 기능을 구현하는 것이다.

구현이 끝나면 Pull Request.
찐 깃허브 주인에게 Pull요청(최신 커밋으로 업데이트)
master브랜치에 내가 구현한 기능을 업로드해달라고 요청

내 마스터에 최신 커밋을 업데이트하기위해
마스터 브랜치로 switch하고 다시 pull해온다.

이후 원격저장소에 병합완료된 로컬브랜치는 삭제한다.


Forking Workflow

원격 저장소의 소유권이 없는 경우

클론코딩할때 쓸수있다.(레파지토리가 퍼블릭일때만)

fork : 찍다

소유권이 없는 원격저장소를 내 원격저장소에 복제해올 수 있다.

복제 후
git remote add upstream[원본 URL]

추후 로컬저장소를 원본 원격저장소와 동기화하기위해 URL을 연결

기능추가를 위해 브랜치를 생성 (여기서도 master는 절대 사용하지 않는다)

기능 구현 후 내 원격저장소에 push

Pull Request를 원본(upstream)에 요청

profile
22.11.28 ~

0개의 댓글