소소한 저장소

[Git] 이클립스에서의 Git 사용법(egit) 3 본문

Git

[Git] 이클립스에서의 Git 사용법(egit) 3

가새 2017.01.26 16:11
  1. 불필요한 파일 및 폴더 무시 (ignore)

  • 이클립스의 EGit 플러그인은 기본적으로 저장소를 생성할 때 .gitignore 파일을 함께 생성한다. Git 퍼스펙티브 왼쪽의 ‘Git Reposotories’ 항목에서 ‘Working Directory’를 열면 화면과 같이 ‘.git’ 디렉터리와 ‘프로젝트 이름’ 디렉토리가 있을 것이다. 그리고 ‘프로젝트 이름’ 디렉토리 아래 .gitignore 파일이 있다. 이 파일을 더블 클릭해서 파일 내용을 살펴보면 이미 ‘/bin/’ 디렉터리가 포함되어 있다. 이는 이클립스에서 컴파일하면 생성되는 바이너리 파일들을 저장소에 포함하지 않겠다는 의미이다.


  • .gitignore 파일을 좀더 추가하기 위해 https://www.gitignore.io/ 에 접속해서 사용 중인 환경인 ‘Windows’, ‘Eclipse’, ‘Java’를 넣고 [Generate]를 클릭하여 .gitignore 파일 내용을 생성한다.


  • 생성된 내용 전부를 선택한 후 복사해서 이클립스에 열어 둔 .gitignore 편집기에 붙여넣는다. (‘/bin/’ 아래 2행 이후로 붙여넣기를 한다.)


  • 저장을 한 후 프로젝트 루트를 오른쪽 마우스로 클릭하고 [Commit]을 선택하여 변경 사항을 커밋한다.




  1. 원격 저장소의 내용을 로컬 저장소로 가져오기

  • 이클립스 EGit 플러그인을 이용해서 원격 저장소를 클론하는 방법은 [File] -> [Import]를 선택해서 클론하거나 Git 퍼스펙티브를 이용할 수 있다. 그 중 [Import] 메뉴를 이용해 클론하는 방법을 알아보겠다.


  • [Import]를 선택하면 ‘Select’ 창에서 ‘Git’항목에서 ‘Projects from Git’을 선택하고 [Next]를 클릭한다.


  • 로컬에 있던 Git 프로젝트를 추가할 때는 ‘Existing local repository’항목을 선택하면 되지만 GitHub에 있는 프로젝트를 클론하는 것이므로 ‘Clone URI’를 선택하고 [Next]를 클릭한다.


  • 가져올 원격 저장소의 정보를 입력하는 ‘Source Git Repository’창이 열린다.

  • URI : GitHub 또는 Git 서버에서 알려주는 ‘HTTPS clone URL’ 주소를 입력한다. 상황에 따라 SSH 프로토콜이나 서브버전의 주소를 입력해도 된다.

  • HOST : Git 서버의 호스트 주소를 표시한다. GitHub의 경우 URI 항목에 주소를 입력하면 자동으로 값이 입력된다.

  • Repository path : 원격 저장소의 경로를 입력한다. GitHub의 경우 URI 항목에 주소를 입력하면 자동으로 값이 입력된다. ‘/사용자이름/저장소이름.git’형식이다.

  • Protocol : 원격 저장소를 가져오는 데 필요한 네트워크 프로토콜을 선택한다. file, ftp, git, http, https, sftp, ssh 중 하나를 선택할 수 있다.

  • Port : 특정 포트에 접속해서만 원격 저장소를 가져올 수 있는 경우 해당 포트 번호를 입력한다. 아닌 경우에는 그냥 비워둔다.

  • User/Pasword : 원격 저장소가 있는 Git 서버에 로그인할 필요가 있는 경우 사용자 이름과 비밀번호를 입력한다.

  • Store in Secure Store :  로컬 보안 저장소에 원격 저장소를 저장해야 할 경우 체크한다.


  • ‘URI’항목에 ‘HTTPS clone URL’ 주소를 붙여넣기하면 항목이 자동으로 채워진다. 채워진 항목 이외의 다른 항목은 입력하지 않고 [Next]를 클릭한다.


  • 브랜치를 선택할 수 있는 ‘Branch Selection’ 창이 열린다. master 이외의 다른 브랜치 정보도 함께 로컬 저장소에 가져오고 싶다면 다른 브랜치를 선택하면 된다. [Next]를 클릭한다.


  • ‘Local Destination’ 창은 프로젝트를 어디에 저장할 지 선택하는 화면이다. 자신이 평소에 프로젝트를 넣어두는 디렉터리를 지정하면 된다. [Next]를 클릭한다.

  • Directory : 원격 저장소의 디렉터리 경로를 설정한다.

  • Initial branch :  초기 브랜치를 선택한다. 원격 저장소에 여러 개 브랜치가 있는 경우에는 원하는 브랜치를 선택할 수 있다.

  • Clone submodules : 현재 원격 저장소를 메인 프로젝트의 하위 프로젝트인 서브모듈로 클론하려면 체크 표시를 해준다. 해당 원격 저장소가 프로젝트에 사용되는 라이브러링리 경우 유용하다.

  • Remote name : 원격 저장소의 이름이다. 기본값은 ‘origin’이다. 로컬 저장소의 브랜치 개념으로 생각하면 이해하기 쉽다.


  • 여기까지는 단순히 GitHub의 프로젝트를 로컬에 저장한 것에 불과하다. 실제로 이클립스에서 사용하려면 프로젝트를 만들고 이클립스 프로젝트에 로컬 Git 저장소 파일들을 추가해야 한다.


  • ‘Select a wizard to use for importing projects’창에서 어떤 방식으로 이클립스에 프로젝트를 추가할 지 선택한다. 여기에서는 새로운 프로젝트를 선택하므로 두번째를 선택하고 [Finish]를 클릭한다.

  • Import existing Eclipse projects : 현재 존재하는 이클립스 프로젝트에 원격 저장소를 불러온다.

  • Import using the new Project wizard : 새로운 프로젝트 마법사를 이용해 프로젝트를 만들고 원격 저장소를 불러온다.

  • Import as general project :  이클립스에 생성된 프로제그가 아닌 프로젝트를 불러올 때 선택한다.


  • 새 프로젝트 생성을 위한 ‘Select a wizard’ 창이 열린다. 이때 설정 방법의 핵심은 로컬에 저장한 Git 프로젝트 디렉터리를 지정하는 것이다.


  • 프로젝트가 생성되면 Git을 이용한 프로젝트라고 표시하기 위해 조그마한 원통 모양의 아이콘이 붙는다.

※ 경로를 잘못 설정했기 때문에 위의 사진과 프로젝트 이름이 다르다.


※ Git 퍼스펙티브 창에서 원격 저장소를 추가하는 경우 ‘Projects’ 항목이 함께 나타난다.

      • Import all existing Eclipse projects after clone finishes : 체크 표시를 켜면 원격 저장소에 있는 프로젝트가 이클립스 프로젝트인 경우 클론 후 자동을 프로젝트를 불러온다.

      • Add project to working sets : 클론하는 원격 저장소 프로젝트에 Working set를 추가할 경우에 체크를 킨다. 원하는 working set을 지정할 수 있다.

      • Git 퍼스펙티브에서 원격 저장소를 추가했으 때 이클립스에서 생성한 프로젝트가 아닌 경우에는 패키지 익스플로러에 프로젝트가 추가되지 않을 수 있다. 그런 경우에는 원격 저장소 하위 항목인 ‘Working Directory’항목에 오른쪽 마우스 버튼을 클릭한 후 [Import Projects]를 선택한다. 그 후 ‘Import as general project’를 선택해 패키지 익스플로러에 프로젝트를 불러올 수 있다.





  1. 로컬 저장소와 원격 저장소를 연결하기

  • GitHub에서 빈 원격 저장소를 생성한다.


  • Git 퍼스펙티브를 선택해서 Hello_world 프로젝트의 하위 항목을 확장한 후 ‘Remotes’ 항목을 오른쪽 마우스 버튼으로 클릭하고 [Create Remote]를 선택한다.


  • 창이 열리면 ‘Remote name ‘ 항목에 ‘origin’이 입력되어 있는지와 ‘Configure push’ 항목이 선택되어 있는지를 확인한 후 [OK]를 누른다.


  • 다음 창이 열리면 ‘ URI’ 항목 옆에 있는 [Change]를 클릭한다.


  • ‘Destination Git Repository’ 창이 열리고 ‘URL’ 항목에 새로 생성한 원격 저장소의 ‘HTTPS clone URL’ 항목의 주소를 입력하면 자동으로 ‘Host’ 항목과 ‘Repository path’항목이 채워진다. ‘Connection’ 항목의 설정은 그대로 둔다. SSH 등 다른 프로토콜을 선택하는 경우는 ‘Protocol’ 항목의 설정값을 사용하는 프로토콜로 변경하면 된다. ‘User’ 항목과 ‘PassWord’항목은 안채우고 넘어가도 진행 과정 중에 다시 물어본다. 설정이 끝나면 [Finish]를 클릭한다.


  • 다시 창으로 돌아와서 오른쪽 아래에 있는 [Advanced]를 클릭한다.


  • ‘Push Ref Specifications’ 창이 나타나는 데 지금까지 진행했던 모든 작업을 지정하기 위해 [Add All Branches Spec]을 클릭한다. ‘Specifications for push’ 항목의 ‘Source Ref’ 항목과 ‘Destination Ref’ 항목에 ‘refs/heads/*’라고 설정되어 있다면 정상적으로 설정된 것이다. 확인했다면 [Finish]를 클릭한다.


  • 아래의 사진과 같다면 설정을 마친 것이다. 원격 저장소 정보 저장 후 바로 푸시하기 위해 [Save and Push]를 클릭한다.


  • [OK]를 클릭하면 작업이 완료될 것이고 혹시 푸시하지 못한 작업 내역이 있다면 [configure]를 클릭해 작업 내역을 추가하면 된다.


  • 원격 저장소를 확인하면 로컬 저장소의 데이터가 푸시되었음을 확인할 수 있다.





  1. 로컬 작업 내역을 원격 저장소에 올리기

  • 새 클래스 파일을 생성하고 변경 사항을 커밋한다.


  • master 브랜치의 변경 내역을 원격 저장소에 푸시하는 두가지 방법이 있는데 Push to Upstream을 이용하는 방법과 Push branch ‘Master’을 이용하는 방법이다. Push to Upstream은 모든 브랜치의 작업 내역을 푸시하는 간편한 방식이지만 작업 내역을 세분화해서 푸시하는 것은 어렵다. 따라서 Push branch ‘Master’를 선택해 푸시해보겠다. [Team] -> [ Push branch ‘Master’]을 클릭한다.

※ 커밋 과정에서 <Commit and Push>를 클릭하는 것은 <Push to Upstream>을 실행하는 것이다.


  • 창이 뜨면 ‘Source’ 항목의 변경 사항, ‘Remote’ 항목의 원격 저장소 주소, ‘Branch’ 항목의 브랜치 등을 확인 한다. ‘Branch’ 항목의 경우 기본값은 master 브랜치로 설정되어 있는데 만약 다른 브랜치로 바꾸고 싶다면 ‘refs/heads/브랜치이름’ 형태로 입력해 선택할 수 있다. 설정을 확인했다면 [Next]를 누른다.

※ ‘Configure upstream for push and pull’은 푸시에 필요한 옵션을 선택하는 것이다. 자세한 내용은 뒤에 나온다

※ ‘Force overwrite of branch on remote if it exists and has diverged’는 원격 저장소에는 없는데 로컬 저장소에 존재하거나 변경된 파일이 있는 경우 로컬 저장소 기준으로 원격 저장소에 덮어 쓰기를 하겠다는 옵션이다. 선택하지 않아야 한다.


  • ‘Push Confirmation’ 창에서는 푸시할 내역을 최종적으로 확인할 수 있다. 아래에는 두 가지 선택 항목이 있다.

      • Cancel push if result would be different than above because of changes on remote : 원격 저장소에 지금 푸시하는 로컬 저장소와 다른 내역이 있다면 연결과 푸시를 취소한다.

      • Show dialog with result only when it is different form the confrimed result above : 원격 저장소에 지금 푸시하는 로컬 저장소와 다른 내역이 있다면 푸시 결과에 대한 별도의 메시지를 보여준다.

굳이 선택 항목을 체크할 필요가 없으므로 기본 설정 그대로 두고 [Finish]를 누른다.


  • 푸시가 큰 문제 없이 완료되면 결과 내역을 보여준다. [OK]를 클릭하면 완료된다.


  • GitHub 저장소 확인


1 Comments
  • 프로필사진 Hello 2017.05.23 17:53
    안녕하세요 git초보입니다..
    좋은정보 감사히 받아서 실행했습니다.
    그런데 지금까지 한것은 한쪽은 마스터라서 마스터에서 변경하여 커밋앤푸쉬를 보내어서
    협업관계자에게 pull을 받을것을 요청? 하고 협업관계자의 코드가 마스터에서 넘어온대로 변경 하는것을 확인했는데요
    협업관계자는 마스터에게 커밋 및 푸쉬, 변경된 코드를보내서 마스터에서도 pull을 하려면 어떠한 방식으로 해야하나요..
    돌아서 돌아서 는 하겠는데 분명 편한 방법이 있을것 같아서요~
댓글쓰기 폼