git 의 브랜치는 master 가 존재, -a 옵션을 사용하면 원격지(GitHub)의 브랜치를 확인할 수 있다.
-a 옵션을 사용하여 로컬과 원격지의 모든 브랜치를 확인할 수 있다.
원격지에 브랜치를 생성하기 위해 일단 git 에 브랜치를 생성 후 확인
원격지에 kim 이라는 브랜치를 push 후 모든 브랜치 -a 옵션 사용하여 확인
GitHub 에 kim 이라는 브랜치가 추가된 것 확인
원격지의 브랜치를 삭제 ( -d 옵션 )
원격지 브랜치를 삭제하는 경우 -d 옵션을 사용하면 된다.
다시 kim 브랜치를 원격지에 push 하여 확인
git 에서 kim 브랜치로 전환 후 로그인에 관련된 코드를 모두 작성했다고 가정 후 add, commit
git 에서 github 로 kim 이라는 브랜치에 push ( 첫 push 이기 때문에 -u 옵션을 사용 )
master 브랜치에는 kim 이 push 한 파일이 보이지 않음
kim 브랜치로 이용하여 확인하니 보임
kim 이 로그아웃 기능까지 구현하였다고 가정 후 push
동일하게 kim 브랜치에서만 확인 가능하며 master 에는 push 되지 않았으므로 확인되지 않음
이번에는 cho 라는 사용자의 시점으로 전환하여 작업
clone 을 사용하여 메인 프로젝트를 내려받음
git 에는 master 라는 브랜치만 존재하지만, 원격지에는 kim 과 master 두 가지 브랜치가 존재
git 에서 cho 라는 브랜치 생성 후 원격지로 cho 브랜치를 push 한 모습
cho 브랜치가 push 된 모습
git 에서 cho 사용자로 전환 후 목록보기 기능을 구현했다고 가정한 뒤 add, commit
cho 라는 github 브랜치로 작업 내용을 push
github 에서는 cho 브랜치에서만 board-list.txt 확인 가능
게시판 수정 기능 구현했다고 가정 후 add, commit, github 로 push
cho 브랜치로 잘 push 된 모습
이제 kim 과 cho 의 프로젝트를 병합
현재 master 브랜치의 상황
kim 에서 먼저 git 의 master 브랜치로 switch 하여 kim 에서 작업한 내용 merge 한 이후 add, commit
github 의 master 브랜치로 작업 내용 push
kim 이 작업한 프로젝트 정상적으로 github 에 push 된 모습
cho 작업자도 git 에서 master 브랜치로 switch 하여 merge 후 add, commit 진행
원격지의 master 브랜치로 push 하려고 하였으나 아까 kim 에서 이미 작업한 내용을 push 해놨는데 현재 cho 의 git 에서 merge 한 master 브랜치는 kim 이 작업한 내용을 가지고 있지 않기 때문에 push 오류가 발생
github 에 master 브랜치에 올라간 내용을 pull 을 사용하여 변경내용을 내려받은 후 push 를 진행
정상적으로 push 되어 병합이 완료된 모습
다시 집에가서 이어서 작업한다고 가정
( home02 라는 디렉토리 생성 )
집에서 clone 을 사용하여 master 브랜치의 내용을 내려받은 후 kim 브랜치로 변경 ( git 브랜치에 kim 이 존재하지 않지만 원격지에는 kim, cho, master 브랜치가 존재하므로 git 에서 브랜치를 따로 생성하지 않아도 switch 를 사용하여 해당 브랜치로 변경할 수 있다 )
kim 사용자가 집에서 abcd.txt 라는 파일 작업을 한 뒤 github 의 kim 브랜치로 작업한 파일을 푸쉬한 모습
github 의 kim 브랜치에 abcd.txt 가 정상적으로 push 된 모습
만약 cho 작업자가 kim 이 작업한 내용을 pull 로 당겨오려는 경우
( 현재 kim 이 작업한 내용은 github 에 kim 브랜치에만 push 했다고 가정, master 브랜치에는 push 되지 않음 )
> cho 가 사용하는 local 작업 디렉토리에서 kim 브랜치로 변경 후 pull 로 당겨오면 된다.
브랜치를 변경하여 pull 로 당겨오는 경우 local 의 위치는 중요하지 않으며 현재 git 에서 사용하는 브랜치의 이름과 동일한 원격지의 브랜치의 작업물을 local 로 내려받게 된다.
실습 예제
1. 실습 풀이
github-test08 레포지토리 생성
작업공간 생성 후 git 에 등록, github 레포지토리로 원격지 등록
기본 프로젝트 생성 후 add, commit
master 브랜치로 push
master 브랜치 확인
2. 실습 풀이
a-people 브랜치, 작업공간 생성 및 원격지에 브랜치 push
a 가 작업한 내용 github 에 a 브랜치에 push
b 작업 공간 생성 후 b.txt 작업물 생성 add, commit
원격지에 b-people 브랜치 생성 후 생성된 github 브랜치에 push
생성된 b-people 브랜치에 작업물 추가된 모습
c 작업공간 생성 후 c-people 브랜치부터 생성
이번에는 c-people 브랜치부터 원격지로 push
c-people 원격지 생성된 모습
git 에서 c-people 브랜치로 이동하여 작업 후 github 의 c-people 브랜치에 push
작업물 c-people 브랜치에 정상적으로 올라간 모습
3. 실습 풀이
a 작업자가 master 브랜치에 작업물 merge
a 작업자가 github 의 master 브랜치에 작업물 pushb 작업자도 자신의 작업물을 git 에서 master 브랜치에 merge 하여 github 에 푸쉬하려고 하였으나, a 작업자가 먼저 올려놓은 작업물이 있으므로 pull 로 변경 작업물 땡겨온 후 push
각각 브랜치의 작업공간을 나눠놨기 때문에 git 의 브랜치 삭제는 생략하고 원격지 브랜치를 삭제
4. 실습 풀이
c-people 브랜치에서 작업물 pull 로 당겨온 후 c.txt 파일에 내용 추가 완료
모든 파일 master 브랜치로 merge 한 뒤 github 의 master 브랜치로 push
c-people 브랜치 원격지에서 삭제
GitHub 에 레포지토리를 생성할 때 프로젝트 이름과 동일하게 설정해줘야 한다.
( ※ clone 으로 프로젝트를 당겨왔을 때 생성되는 디렉토리는 GitHub 의 레포지토리의 이름으로 생성되기 때문에 코드를 실행할때 문제가 발생될 수 있다 ※ )