프로젝트 관리도구/GIT(형상관리)

[이클립스]Git 원격 저장소로 부터 동기화 시키기.

9D4U 2019. 2. 21. 10:32
728x90
반응형

Eclipse에서 Git을 사용할 때 원격 저장소(remote repository)와 로컬 저장소(local repository)를 동기화하는 방법을 아래에 설명하겠습니다. 이 작업을 통해 로컬 저장소를 원격 저장소와 동기화하고 최신 변경 사항을 반영할 수 있습니다. Eclipse에서는 EGit이라는 플러그인을 사용하여 Git을 통합하고 작업할 수 있습니다.

 

 


1. Eclipse에서 Git 리포지토리 설정하기

 

먼저, Eclipse에 Git이 설치되어 있어야 합니다. EGit 플러그인은 Eclipse에 기본적으로 포함되어 있으므로 별도의 설치가 필요하지 않습니다. Git 리포지토리를 사용하려면 프로젝트가 Git 리포지토리와 연결되어 있어야 합니다.

 

 

1.1. Git 저장소 클론하기

  1. Eclipse에서 File > Import를 클릭합니다.
  2. Git > Projects from Git을 선택하고 Next를 클릭합니다.
  3. Clone URI를 선택하고 Next를 클릭합니다.
  4. 원격 Git 저장소의 URI, Repository Path, Authentication 정보를 입력합니다.
  5. 클론할 브랜치를 선택하고, 저장소를 로컬로 클론합니다.

 

1.2. 기존 프로젝트에 Git 리포지토리 연결하기

기존 Eclipse 프로젝트를 Git 리포지토리에 연결하려면:

  1. 프로젝트를 우클릭하고 Team > Share Project를 선택합니다.
  2. Git을 선택하고, 새 Git 리포지토리를 생성하거나 기존 리포지토리와 연결합니다.

 

 

 


2. 원격 저장소로부터 로컬 저장소 동기화하기

 

원격 저장소와 로컬 저장소를 동기화하는 기본적인 방법은 PullFetch 작업을 사용하는 것입니다. 이 두 작업은 원격 저장소에서 변경된 사항을 로컬로 가져오는 방법입니다.

 

2.1. Fetch: 원격 저장소의 변경 사항 가져오기

Fetch는 원격 저장소에서 변경된 내용을 로컬 저장소로 가져오지만, 이를 자동으로 로컬 브랜치에 병합하지는 않습니다. 주로 원격 저장소의 최신 상태를 확인하고, 병합 작업을 수동으로 진행하려 할 때 사용됩니다.

  1. Eclipse에서 Git Perspective로 전환: Eclipse 상단의 Window > Perspective > Open Perspective > Other...에서 Git을 선택하여 Git Perspective로 전환합니다.
  2. Git Repositories 뷰에서 리포지토리 선택: Git Repositories 뷰에서 로컬 리포지토리와 연결된 원격 저장소를 찾습니다.
  3. Fetch 실행:
    • Remote > Fetch from Upstream을 클릭합니다.
    • Fetch가 완료되면 원격 저장소에서 변경된 사항을 로컬 저장소에 다운로드하게 됩니다.

 

2.2. Pull: 원격 저장소와 로컬 저장소 병합하기

Pull은 Fetch와 Merge를 함께 실행하는 작업으로, 원격 저장소의 변경 사항을 로컬 저장소로 가져오고, 자동으로 병합합니다. 이 방법은 로컬 작업과 원격 저장소에서의 변경 사항을 한 번에 동기화할 수 있습니다.

  1. Git Repositories 뷰에서 로컬 저장소 선택
  2. Pull 실행:
    • Remote > Pull을 클릭합니다.
    • Pull 대화 상자에서 병합할 브랜치를 선택하고, OK를 클릭합니다.
    • 원격 저장소의 변경 사항이 로컬 저장소로 가져와지고 자동으로 병합됩니다.

 

 

 

반응형

 

 


3. 충돌 해결 (Conflict Resolution)

 

Pull 작업을 진행할 때 원격 저장소와 로컬 저장소에서 변경된 내용이 충돌할 수 있습니다. 이 경우 충돌을 해결해야 합니다.

 

3.1. 충돌 발생 시 해결 방법

  1. 충돌 발생 알림: 충돌이 발생하면 Eclipse에서 이를 알리고, 충돌이 발생한 파일을 표시합니다.
  2. Conflict 해결:
    • 충돌이 발생한 파일을 열어 수동으로 수정합니다.
    • 수정 후, 해당 파일을 Git Staging 뷰로 드래그하여 Add합니다.
  3. 병합 완료 후 커밋:
    • 충돌을 해결한 후, Commit을 클릭하여 로컬 저장소에 변경 사항을 커밋합니다.

 

 

 


4. 커밋 후 원격 저장소로 푸시하기

 

로컬 저장소에서 변경한 내용을 원격 저장소로 푸시하려면 Push 작업을 사용합니다. 이 작업을 통해 로컬 저장소의 커밋을 원격 저장소에 반영할 수 있습니다.

 

4.1. Push: 로컬 변경 사항을 원격 저장소로 푸시

  1. Git Staging 뷰에서 변경 사항 확인: Git Staging 뷰에서 커밋할 파일을 확인하고, 원하는 파일을 Stage합니다.
  2. 커밋:
    • 커밋 메시지를 작성하고 Commit 버튼을 클릭하여 로컬 저장소에 변경 사항을 커밋합니다.
  3. Push 실행:
    • Remote > Push를 클릭하여 로컬 저장소의 변경 사항을 원격 저장소로 푸시합니다.

이때, 원격 저장소에 푸시할 때 충돌이 발생할 수 있으므로, Pull을 먼저 실행하여 로컬 저장소와 원격 저장소의 상태를 동기화한 후 푸시하는 것이 좋습니다.

 

 


5. 실습


[진행 순서]

 

1.  동기화 : 원격 저장소와 로컬 저장소를 동기화 시켜주어야 합니다.(원격 저장소의 버전과 동일한 버전이어야 다른 변경이 용이 합니다.)

 

※ 위 사진을 보면, 상단 프로젝트는 동기화가 전혀 안 된 것(원격 저장소에서 Fetch해야 할 버전이 11개 있음)이고,

   하단 프로젝트는 동기화가 된 것입니다. 따라서 상단 프로젝트의 모양에서 하단 프로젝트의 모양으로 바꿔주어야 합니     다.

   

     1-1. 'Git Repositories' 항목을 보면은 아래 사진과 같은 모양을 확인 하실 수 있습니다.

 

  

 

[Git Repositories]

여기서 동기화 시 중요한 점은 

먼저, 1번 표시인 원격 저장소 주소에서 마우스 오른쪽 버튼 클릭 후 'Fetch'를 진행하는 것입니다. 

'Fetch' 버튼을 클릭하게 되면 Fetch 결과 표시창에 Fetch한 버전 리스트들을 보여줍니다.

그 후, 2번 표시인 로컬 마스터로 가고 마우스 오른쪽 버튼 클릭 후 'Merge'를 해주면 동기화가 이루어집니다.

 

※ 1번 Fetch가 정상적으로 이루어지지 않는다고 판단이 되면은, 

   1번 원격저장소 주소를 마우스 오른쪽 버튼 클릭 후, 'Configure Fetch'를 클릭합니다.

   그리고 'Advaned...' 버튼 클릭 후, 기존의 Fetch 명세서는 지우고, 'Add create/update specification'에서

   선택을 하고 새로 가져옵니다.

   마지막으로 'Save and Fecth'를 진행해줍니다.

   

2. 'Push'하기

Git에는 SVN과는 다소 다른 개념인 Commit과 Push가 있습니다.

Commit은 로컬 저장소에 작업 내용을 올리는 것이고, Push는 원격 저장소에 작업 내용을 올리는 것입니다.

보통은 Commit - Push 이 순서로 진행을 합니다.

2-1. 이클립스에서 커밋해야 하는 파일에 마우스 오른쪽 버튼 클릭 후 'Team' - 'Commit'을 누르면 커밋을 진행할 수 있습니다.

2-2. 커밋을 누르게 되면 'Git Staging 창이 활성화되고 변경되어야 하는 항목들을 찾아서 'Commit' 또는 'Commit and Push'를 진행하면 됩니다. 

 

 

 

 


6. 원격 저장소와 로컬 저장소 동기화 관련 유용한 팁

  • 자동으로 Pull: 작업 전에 항상 Fetch나 Pull을 실행하여 원격 저장소의 최신 상태를 로컬에 반영하는 습관을 들이는 것이 좋습니다.
  • Git Log 확인: Git Log 뷰를 사용하여 커밋 이력을 확인하고, 작업 중인 브랜치에서 어떤 변경 사항이 있었는지 파악할 수 있습니다.
  • 브랜치 관리: 여러 브랜치에서 작업할 경우 Branch 뷰를 활용하여 브랜치 상태를 확인하고 쉽게 전환할 수 있습니다.

 

 


 

Eclipse에서 Git을 사용하여 원격 저장소와 로컬 저장소를 동기화하는 작업은 매우 직관적이며, Fetch, Pull, Push와 같은 기본 Git 작업을 통해 쉽게 할 수 있습니다. Eclipse의 EGit 플러그인을 활용하면 GUI 환경에서 Git의 다양한 기능을 손쉽게 사용할 수 있어, 개발 효율성을 크게 높일 수 있습니다. 이 글에서 설명한 동기화 방법을 통해 Git을 활용한 효율적인 협업 및 버전 관리 작업을 수행해 보세요.

 

 

 

Git push 시 'rejected - non - fast - forward' 오류

결론적으론, 원격 저장소와 로컬 저장소와 동기화되지 않은 상태에서push를 진행하였기 때문에 버전 충돌로 push 진행이 정상적으로 이루어 지지 않은 것임.따라서, 동기화 시켜준 후 push 동작을

9d4u.tistory.com

 

728x90