본문 바로가기
Java/Git

git) push와 fetch(pull)

by 박채니 2022. 6. 14.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


push 설정하기

 

github의 repository 생성하기

Your Repositories - New - Repository name 설정 - Create repository

repository를 생성하면 원격저장소 URL이 생성되는데 이를 복사합니다.

이클립스로 이동한 후 Git Repositories - Remotes파일 우클릭 - Remote 생성 - URL - Change 클릭

위처럼 확인 될 것이고, User에 github 아이디를 입력해줍니다.

Password는 github의 비밀번호가 아닌 access token을 발급 받아줘야 합니다.

 

다시 github으로 이동하여 발급 받겠습니다.

 

access token 발급받기

Settings - Developer settings - Personal access tokens - Create new token

토큰 이름과, 유효기간을 설정해줄 수 있는데, 유효기간은 짧으면 짧을 수록 좋지만 실습용이므로 유효기간을 따로 설정하지 않았습니다.

본인에게 맞는 권한 영역 설정을 해준 후 Generate token 클릭!

발급된 token이 보여질 것이고 이는 단 한번만 보여주기 때문에 다른 곳에 잘 메모 해둬야 합니다.

 

발급된 token을 복사한 후 이클립스로 이동하여 password에 붙여넣어주고,

Store In Secure Store 반드시 체크!! 후 Finish

 

지역저장소의 branch와 원격저장소의 branch를 매칭 시켜주는 작업을 해보겠습니다.

Ref mapping 작업

동일한 이름의 모든 branch를 매핑할 경우 All Branches 클릭

branch들이 mapping된 것을 확인할 수 있으며, Save해줍니다.

 

원격저장소로 push 해보겠습니다.

Git Repositories

빨간색 위 화살표가 push!

 

push 하기

여기서 우클릭 - Push (원격저장소로 로컬저장소의 변경내역들 - 소스코드, 브랜치정보, 버전내역을 전송) - Close

push한 후 원격저장소에서 확인해보면 소스코드가 잘 올라가있는 것을 확인할 수 있습니다.

branch 순서가 알파벳 순으로 되어있어서 default branch를 master로 바꿔주겠습니다.

 

github default branch 변경하기

저장소 setting - Branches

master로 Update!!

 

Snake 클래스를 생성하고 push 해보겠습니다.

package com.kh.git.animal;

public class Snake {

}

버전 생성 후 push

원격저장소에 정상적으로 push된 것을 확인할 수 있습니다.

 

이번엔 지역저장소에 파일을 모두 지우고 fetch 해보겠습니다.


clone

 

아예 처음부터 시작하는 것이기 때문에 clone을 먼저 해보겠습니다.

Code 복사하기

 

이클립스로 이동

Clone Git Repository 클릭

복사한 URL을 베이스로 아까 저장한 user와 password가 그대로 확인됩니다.

 

가져올 branch들을 체크한 후 Next!

 

저장할 디렉토리를 설정해준 후 Finish 버튼을 눌러줍니다.

 

그대로 잘 가져왔고, Working Tree에 있는 내용들을 Project로 옮겨줍니다.

 

Project로 옮기기

Working Tree 우클릭 - Import Projects

자동으로 소스코드를 베이스로 Project를 생성해줍니다.

 

그대로 잘 생성된 것을 확인할 수 있습니다.

 

하지만, 기존과 조금은 다른 점이 있습니다.

Branches하위에 Local에는 master밖에 없고, Remote Tracking에는 3개의 branch가 생성되어 있는 것을 확인할 수 있습니다.

Remote Tracking하위에 있는 branch들은 원격저장소의 branch로 원격저장소의 branch를 체크해주는 추적용의 branch입니다. (Read only)

원격 branch의 상태를 알려주는 용도입니다.

 

따라서 history를 확인해보면, 원격 저장소의 branch로 변경되어 있는 것을 확인할 수 있습니다.

 

원한다면, 지역저장소의 branch를 새로 만들어줍니다.

Branches - Local - 우클릭 - Switch To - New Branch

 

push 설정을 다시 해준 후 push 해주면, 원격저장소의 branch들도 최신 상태를 유지하게 됩니다.


fetch

 

원격저장소에 변경사항을 fetch하였을 때 Local의 branch들에게 바로 fetch 되는 것이 아닌, 원격 branch들에게 fetch가 됩니다.

따라서 merge해줘야 하는 작업이 별도로 필요하며, 이를 한 번에 처리하는 것이 pull입니다.

 

먼저 fetch + merge를 해보겠습니다.

 

원격 저장소에서 코드를 수정해보겠습니다. (사용 지양)

package com.kh.git.animal;

public class Snake {
  public void run() {
    System.out.prinln("Snake Run");
  }
}

버전을 하나 생성해보았고, 이클립스로 이동하여 fetch해보겠습니다.

(origin/master에 변경 내역이 생성될 것)

 

Remotes - origin - fetch(초록색 아래 화살표)에서 우클릭 - Fetch

origin/master로 fetch 된 것을 확인할 수 있으며, Snake클래스에서 run 메소드를 확인할 수 없습니다.

 

master에서 원격저장소명/master를 merge해줍니다.

 

원격 저장소에서 오타를 수정한 후 fetch 후 merge!

package com.kh.git.animal;

public class Snake {
  public void run() {
    System.out.println("Snake Run");
  }
}

Snake에 run메소드도 확인됩니다.

 

pull

원격저장소에서 메소드 추가

package com.kh.git.animal;

public class Snake {
  public void run() {
    System.out.println("Snake Run");
  }
  
  public void eat() {
    System.out.println("Snake eat!");
  }
}

commit하였으므로 버전이 하나 더 추가되었습니다.

 

프로젝트 우클릭 - Team - pull 클릭

fetch와 merge가 한 번에 처리되는 것을 확인할 수 있습니다.

Snake 클래스에서도 eat() 메소드가 잘 확인됩니다.

 

 

'Java > Git' 카테고리의 다른 글

git) branch  (0) 2022.06.14
git) 버전 생성 및 관리  (0) 2022.06.14
git) 이클립스 환경설정  (0) 2022.06.14