• 브랜치 실습 - 각자의 브랜치에서 개발이 완료 되면 [master] 브랜치에 작업물을 합침

 

 

 

 

 

 

 

 

 

 

 

 

병합(Merge)


두 버전의 합집합을 구하는 것

 

  • 병합 커밋 (Merge Commit) : 두 커밋에 모두 변화가 있어 병합하면서 새로운 커밋이 만들어지는 상황을 말함.
  • 빨리 감기 (Fast-forward) : 하나의 커밋에만 변화가 있어 새로운 상태를 만들어줄 필요 없이 기존 커밋과 동일하게 변화가 있는 커밋으로 상태를 바꾸어주는 상황을 말함.
  • 충돌 (Conflict) : 같은 파일에 대해 두 커밋 모두 변화가 있어 어느 쪽으로 합쳐야 할지 충돌이 일어나는 상황을 말함. 충돌이 난 부분을 확인하고 무엇을 남길지 수동으로 선택해서 해결해줌.

 

 

 

 

 

 

 

  • [master] 브랜치에서 [menu1] 브랜치를 병합하면 커밋 3는 커밋 2를 단순하게 수정한 수정본이므로 두 상태를 합치면 따로 바뀌는 상태 없이 커밋 3이 됨. 
  • 커밋 2를 가리키던 [master] 브랜치가 빨리 감기를 해서 커밋 3를 가리키게 됨

 

 

 

 

 

 

 

 

 

 

 

 

  • [menu1] 브랜치의 모든 내용이 [master] 브랜치에 반영 되었으니 [menu1] 브랜치는 삭제 가능

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 커밋 4는 커밋 2를 기준으로 변경 되었기 때문에 커밋 3과 커밋 4는 병합 커밋이 일어남. 
  • 해당 병합을 [master] 브랜치에 올리거나, [menu2] 브랜치에 올리는 것 둘 다 가능하지만 [master] 브랜치에 올림.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Programming > Git&Github' 카테고리의 다른 글

브랜치(Branch)란?  (0) 2022.03.11
Eclipse로 GitHub 연동하기 (2)  (0) 2022.03.11
Eclipse로 GitHub연동하기 (1)  (0) 2022.03.11

 

 

 

 

 

 

 

 

브랜치(Branch)

 

 

 

 

 

 

브랜치(Branch)란?


  • 새로 만든 커밋은 기존 커밋 다음에 시간 순으로 쌓임. 
  • 한 명이 작업하면 한 줄로 커밋이 쌓이겠지만 A, B 두 명이 협업하면 커밋3, 커밋4가 기준 커밋인 커밋 2를 가리켜야 하므로 갈래가 두 줄로 나뉨.
  • 특정 기준에서 줄기를 나누어 작업할 수 있는 기능을 "브랜치 " 라고 함
  • 만약 브랜치를 만들지 않고 A, B가 둘다 커밋 3을 기준으로 커밋을 만들려고 한다면 오류가 남.

 

 

 

 

 

 

 

 

 

 

 

  • 커밋 2에서 새로운 A 브랜치를 만들면 master 브랜치와 동일하게 커밋 2를 가리킴.
  • A 브랜치에서 커밋을 한번 더 하면 A 브랜치가 master 브랜치보다 커밋 하나만큼 앞서게 됨.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 브랜치를 만드는 규칙


  • [master] 브랜치에는 직접 커밋을 올리지 않는다 (동시 작업을 하다가 꼬일 수 있으므로)
  • 기능 개발을 하기 전에 [master] 브랜치를 기준으로 새로운 브랜치를 만든다
  • 기능 개발이 끝나면 [master] 브랜치에 이를 합친다

 

 

 

 

 

 

 

 

 

 

 

 

 

'Programming > Git&Github' 카테고리의 다른 글

병합(Merge) 이란?  (0) 2022.03.11
Eclipse로 GitHub 연동하기 (2)  (0) 2022.03.11
Eclipse로 GitHub연동하기 (1)  (0) 2022.03.11

 

 

 

 

 

 

Eclipse로 GitHub 연동하기 (팀원)

 

 

 

 

 

 

 

Location URI에 Clone 할 원격 저장소의 URI 입력 후 Authentication에 GitHub 계정 정보 입력하여 Next
원격 저장소에 존재하는 master branch 체크 된 상태로 Next
사용할 지역 저장소 경로 Directory에서 지정 후 Finish

 

 

 

 

 

 

 

 

 

 

Clone 완료 된 상태

 

 

 

 

 

 

 

 

 

 

지역 저장소의 Project를 Eclipse Workspace로 Import

 

 

 

 

 

 

 

 

 

 

 

 

Finish 누르고 Import 된 상태의 프로젝트

 

 

 

 

 

 

 

 

 

 

 

 

 

각자 별도의 Branch를 만들어서 작업해서 Push하기 위해
Team > Switch To > New Branch 창을 열고 Branch name 입력 후 Finish

 

 

 

 

 

 

 

 

 

 

 

 

 

 

새로운 Branch로 바뀐 상태

 

 

 

 

 

 

 

 

 

새로운 Branch로 작업 한 내용을 원격 저장소에 반영 시키기 위해 
우클릭 > Team > Add to Index 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

작업을 통해 변경이 있거나 추가 된 파일이 Staged Changes로 올라감
.class 등의 파일은 컴파일 된 결과물로 원격 저장소에서 관리할 필요가 없는 파일이므로 –로 제거

 

 

 

 

 

 

 

 

 

 

 

 

Git에서 특정 파일을 추적하지 않게 하고 싶다면 프로젝트 최상위에 .gitignore라는 파일을 추가

 

 

 

 

 

 

 

 

 

 

 

 

gitignore io 검색하여 .gitignore 파일을 생성한다

https://www.toptal.com/developers/gitignore

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

 

 

 

 

 

 

 

 

 

 

 

생성 된 내용을 전체 복사하여 .gitignore 파일에 붙여넣고 저장

 

 

 

 

 

 

 

 

 

 

 

 

 

 

최종적으로 commit 하고 싶은 파일만 Staged Changes에 남기고
commit message 작성하여 commit and Push 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

지역 저장소에 commit 되는 것과 동시에 원격 저장소에 새로운 Branch가 생성되며 해당 commit이 Push 됨

 

 

 

 

 

 

 

 

 

 

 

 

 

원격 저장소에서 새로운 branch 로 push 된 commit을 master branch 로 병합하여 버전 관리Pull requests New pull request 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

Base : master <- compare : commit 을 push한 branch
Able to merge(충돌 없이 병합 가능) 확인 후 Create pull request 클릭

 

 

 

 

 

 

 

 

 

 

 

Create pull request 클릭
Merge pull request 클릭

 

 

 

 

 

 

 

 

 

 

 

Confirm merge 클릭 시 병합이 완료되며 병합이 완료 된 원격 저장소 상의 branch 는 남겨둘 필요가 없으므로 Delete branch를 클릭하여 삭제함

 

 

 

 

 

 

 

 

 

 

 

병합 된 내용으로 업데이트 된 원격 저장소 확인

 

 

 

 

 

 

 

 

 

 

 

 

테스트를 위해 지역 저장소의 master branch 로 돌아감
프로젝트 우클릭 > Team > Switch To > master

 

 

 

 

 

 

 

 

 

 

 

지역 저장소 master branch 시점에서 다시 새로운 브랜치 만들기

프로젝트 우클릭 Team Switch To > New Branch 클릭 후 새로운 Branch name 입력하여 Finish

 

 

 

 

 

 

 

 

 

 

 

 

 

새롭게 작업한 내용을 새 branch 로 Commit and Push

 

 

 

 

 

 

 

 

 

 

 

Pull requests New pull request 클릭
Base : master <- compare : commit 을 push한 branch
Can’t automatically merge(충돌 발생) 확인 후 Create pull request 클릭

 

 

 

 

 

 

 

 

 

 

충돌이 발생하여 자동 병합이 불가능하므로 Resolve conflicts 클릭

 

 

 

 

 

 

 

 

 

 

 

충돌이 발생하는 부분이 표시되므로 직접 수정한 뒤 Mark as resolved 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Commit merge 클릭 후 Merge pull request 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

수정한 내용으로 Merge 완료 확인. 
Insights의 Network 탭에서 graph 확인 가능.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

지역 저장소의 branch를 master 로 변경 (check out)

 

 

 

 

 

 

 

 

 

프로젝트 우클릭 > Team > Pull 클릭하여 원격 저장소의 commit 상태를 지역 저장소에 반영

 

 

 

 

 

 

 

 

 

 

 

 

Pull을 통해 원격 저장소의 최종 commit 이 지역 저장소에 반영 된 상태

 

 

 

 

 

 

 

 

 

작업하던 Branch에도 해당 commit을 반영하기 위해 branch 변경

 

 

 

 

 

 

 

 

 

 

 

해당 branch 에서 우클릭 후 merge 클릭
또는 프로젝트 우클릭 후 merge 클릭

 

 

 

 

 

 

 

 

 

 

 

 

Master -> 지역 저장소의 branch로 merge 완료

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Programming > Git&Github' 카테고리의 다른 글

병합(Merge) 이란?  (0) 2022.03.11
브랜치(Branch)란?  (0) 2022.03.11
Eclipse로 GitHub연동하기 (1)  (0) 2022.03.11

 

 

 

Eclipse로 GitHub연동하기

 

 

 

 

 

 

 

 

 

Eclipse로 GitHub 연동하기(팀장)


 

 

 

 

팀장이 GitHub 본인 계정에 접속하여 새로운 원격 저장소 생성

 

 

 

 

 

 

 

 

Eclipse workspace에서 기본 구조를 갖춘 project 생성

 

 

 

 

 

 

 

 

 

 

 

Project 우클릭 > Team > Share Project 클릭

 

 

 

 

 

 

 

 

 

 

Use or create repository in parent folder of project 체크박스 클릭 
> Create Repository 버튼 클릭 
> Finish 하여 프로젝트 최상위에 .git(지역 저장소) 폴더 생성하기

 

 

 

 

 

 

 

 

 

 

 

.git(지역 저장소) 폴더 생성 시 프로젝트 모습
 ( ? -> 추적 안됨(untracked)을 의미)

 

 

 

 

 

 

 

 

 

 

Team Add to Index 클릭 시 모습 
( + -> 새롭게 추가 된 파일이 스테이지 됨)

 

 

 

 

 

 

 

 

 

Window > Show View > Git Git Staging 탭을 통해 Add to Index로 새롭게 추가 된 모든 파일이
Staged Changes 에 올라가 있음을 확인함. 

그 중 Commit을 원치 않는 파일이 있다면 –를 클릭해서 Unstatged Changes로 이동 시켜 Commit에서 제외 시킬 수 있음. 또한 Add to Index를 하지 않더라도 Unstatged Changes에서 직접 파일을 선택하여 +를 클릭해서 Add 시킬 수도 있음.

 

 

 

 

 

 

 

 

 

 

Commit Message를 작성하여 Commit and Push 클릭

Commit and Push : 지역 저장소에 commit을 만듦과 동시에 해당 commit을 원격 저장소로 Push
Commit : 지역 저장소에 commit을 만듦

 

 

 

 

 

 

 

 

 

 

 

 

Push Branch master 창에서 사용할 원격 저장소 uri 복사해서 붙여넣음.

Authentication 에는 GitHub 계정의 Email, Password를 입력하고 체크박스를 체크하여 비밀번호를 기억
함으로써 다음에 비밀번호를 다시 입력하지 않아도 되게 함.

 

 

 

 

 

 

 

 

 

 

 

 

Next > Finish 버튼 등을 눌러 지역 저장소의 master 브랜치에서 원격 저장소의 master 브랜치로 Push
Push가 끝나면 Push Result 창이 뜸

 

 

 

 

 

 

 

 

 

 

원격 저장소에 접속하면 first commit의 결과가 올라와 있는 것을 확인할 수 있음

 

 

 

 

 

 

 

 

 

 

 

원격 저장소의 settings > Manage access > collaborator로 팀원 초대
초대 받은 팀원은 Email을 확인하여 accept invitation 하면 해당 원격 저장소의 collaborator가 됨

 

 

 

 

 

 

 

 

 

 

 

 

Eclipse에서 Window > Show View > Git Repositories 탭 열고
Clone a Git repository 클릭

 

 

 

 

 

 

 

 

 

'Programming > Git&Github' 카테고리의 다른 글

병합(Merge) 이란?  (0) 2022.03.11
브랜치(Branch)란?  (0) 2022.03.11
Eclipse로 GitHub 연동하기 (2)  (0) 2022.03.11

+ Recent posts