연습 - GitHub에 프로젝트 업로드

완료됨

GitHub Importer, 명령줄 또는 외부 마이그레이션 도구를 사용하여 리포지토리를 GitHub로 가져올 수 있습니다.

GitHub Importer 정보

Subversion, Mercurial, TFVC(Team Foundation 버전 제어) 또는 다른 Git 리포지토리에 소스 코드가 있는 경우 GitHub Importer를 사용하여 GitHub로 이동할 수 있습니다. GitHub Importer는 커밋 및 수정 기록을 포함한 소스 코드 리포지토리를 GitHub로 빠르게 가져오는 도구입니다.

가져오는 동안 가져오려는 버전 제어 시스템에 따라 다음 작업 중 일부를 수행할 수 있습니다. 원격 리포지토리로 인증하거나, 커밋 작성자 특성을 업데이트하거나, 대용량 파일이 있는 리포지토리를 가져오거나, Git 대용량 파일 스토리지를 사용하지 않으려는 경우 대용량 파일을 제거합니다.

가져오기 작업 Subversion Mercurial TFVC Git
원격 리포지토리에서 인증 X X X X
커밋 작성자 표시 업데이트 X X X
대용량 파일을 Git Large File Storage로 이동 X X X
리포지토리에서 대용량 파일 제거 X X X

GitHub Importer를 사용하여 리포지토리 가져오기

프로젝트다른 버전 제어 시스템에서 호스팅된 프로젝트가 있는 경우 GitHub 가져오기 도구를 사용하여 GitHub로 자동으로 가져올 수 있습니다. GitHub 가져오기 도구가 모든 가져오기에 적합한 것은 아닙니다. 예를 들어 기존 코드가 프라이빗 네트워크에서 호스트되는 경우 도구에서 액세스할 수 없습니다. 이 경우 Git 리포지토리는 명령줄을 사용하여 가져오고 다른 버전 제어 시스템에서 가져온 프로젝트는 외부 소스 코드 마이그레이션 도구를 사용하여 가져오는 것이 좋습니다.

가져오는 동안 리포지토리의 커밋을 작성자의 GitHub 사용자 계정과 일치시킬 수 있습니다. 먼저 가져오기를 시작하기 전에 리포지토리의 모든 기여자에게 GitHub 계정이 있는지 확인합니다.

리포지토리 및 개별 파일에는 크기 제한이 적용됩니다. 자세한 내용은 GitHub의 대용량 파일 정보를 참조하세요.

리포지토리를 가져오려면 다음 단계를 수행합니다.

  1. 페이지의 오른쪽 위 모서리에서 +를 클릭한 다음, 리포지토리 가져오기를 선택합니다.

    리포지토리 가져오기 단추의 스크린샷

  2. “이전 리포지토리의 복제 URL” 아래에 가져올 프로젝트의 URL을 입력합니다.

    이전 리포지토리 URL 텍스트 상자의 스크린샷

  3. 리포지토리를 소유할 사용자 계정 또는 조직을 선택하고 GitHub의 리포지토리 이름을 입력합니다.

    새 리포지토리 가져오기 소유자 이름의 스크린샷

  4. 새 리포지토리가 ‘퍼블릭’ 또는 ‘프라이빗’이어야 하는지 지정합니다. 자세한 내용은 리포지토리 표시 여부 설정을 확인하세요.

    새 리포지토리의 퍼블릭 또는 프라이 옵션 스크린샷

  5. 입력한 정보를 검토하고 가져오기 시작을 선택합니다.

    새 리포지토리 가져오기에 대한 가져오기 시작 단추 스크린샷

  6. 이전 프로젝트가 암호로 보호된 경우 해당 프로젝트에 대한 로그인 정보를 입력하고 제출을 선택합니다.

    이전 리포지토리 자격 증명 가져오기를 입력하는 위치의 스크린샷

  7. 이전 프로젝트의 복제 URL에서 호스트된 프로젝트가 여러 개인 경우 가져올 프로젝트를 선택하고 제출을 선택합니다.

    동일한 URL에 있는 프로젝트 선택 항목의 스크린샷. 프로젝트 가져오기.

  8. 프로젝트에 100MB보다 큰 파일이 포함된 경우 Git Large File Storage를 사용하여 대용량 파일을 가져올지 여부를 선택하고 계속을 선택합니다.

    Git LFS 가져오기에 적합한 파일의 스크린샷

리포지토리를 완전히 가져오면 전자 메일이 수신됩니다.

GitHub Importer를 사용하여 커밋 작성자 표시 업데이트

가져오는 동안 리포지토리의 커밋을 커밋 작성자의 GitHub 계정과 일치시킬 수 있습니다. GitHub Importer는 메일 주소가 가져오는 리포지토리의 커밋 작성자와 일치하는 GitHub 사용자를 찾습니다. 그런 다음, 해당 메일 주소 또는 작성자의 GitHub 사용자 이름을 사용하여 커밋을 작성자에 연결할 수 있습니다.

커밋 작성자 업데이트

커밋 작성자를 업데이트하려면 다음 단계를 수행합니다.

  1. 리포지토리를 가져온 후 가져오기 상태 페이지에서 작성자 일치를 선택합니다.

    작성자 단추 일치 스크린샷

  2. 정보를 업데이트하려는 작성자 옆에 있는 연결을 선택합니다.

    커밋 작성자 연결 프로세스의 스크린샷

  3. 작성자의 메일 주소 또는 GitHub 사용자 이름을 입력하고 Enter 키를 누릅니다.

퍼블릭 메일 주소를 사용하여 GitHub 사용자에게 커밋 귀속

가져온 리포지토리의 커밋 작성자가 커밋을 작성할 때 사용한 전자 메일 주소와 연결된 GitHub 계정을 가지고 있고 커밋 전자 메일 주소를 비공개로 설정하지 않은 경우. 그런 다음, GitHub 가져오기 도구는 커밋과 연결된 전자 메일 주소를 GitHub 계정과 연결된 공개 전자 메일 주소와 일치시키고 커밋을 GitHub 계정에 귀속시킵니다.

퍼블릭 메일 주소 없이 GitHub 사용자에게 커밋 귀속

가져온 리포지토리의 커밋 작성자가 GitHub 프로필에 공개 전자 메일 주소를 설정하지 않거나 커밋 이메일 주소를 비공개로 설정한 경우. 그러면 GitHub 가져오기 도구가 커밋과 연결된 전자 메일 주소를 GitHub 계정과 일치시키지 못할 수 있습니다.

커밋 작성자는 이메일 주소를 비공개로 설정하여 이 문제를 해결할 수 있습니다. 그런 다음 커밋은 <username>@users.noreply.github.com에 귀속되고 가져온 커밋은 GitHub 계정과 연결됩니다.

메일 주소를 사용하여 커밋 귀속

작성자의 전자 메일 주소가 GitHub 계정과 연결되지 않은 경우 가져온 후 해당 계정에 주소를 추가할 수 있으며 커밋의 특성이 올바르게 지정됩니다.

작성자에게 GitHub 계정이 없는 경우 GitHub 가져오기 도구는 커밋과 연결된 전자 메일 주소에 커밋을 귀속시킵니다.

명령줄을 사용하여 Git 리포지토리 가져오기

GitHub Importer가 사용자의 목적에 적합하지 않은 경우(예: 기존 코드가 프라이빗 네트워크에서 호스트되는 경우) 명령줄을 사용하여 가져오는 것이 좋습니다.

시작하기 전에 다음을 알고 있어야 합니다.

  • GitHub 사용자 이름
  • 외부 리포지토리의 복제 URL(예: https://external-host.com/user/repo.git 또는 git://external-host.com/user/repo.git)(external-host.com 도메인 이름 앞에 user@ 포함)

데모를 위해 다음을 사용합니다.

  • ext-user라는 외부 계정
  • 외부 Git 호스트(https://external-host.com)
  • ghuser라는 GitHub 개인 사용자 계정
  • repo.git이라는 GitHub.com 리포지토리

외부 리포지토리를 가져오려면 다음 단계를 수행합니다.

  1. Github에서 새 리포지토리를 만듭니다. 외부 Git 리포지토리를 이 새 리포지토리로 가져옵니다.

  2. 명령줄에서 외부 복제 URL을 사용하여 리포지토리의 “최소” 복제본을 만듭니다. 이 명령은 파일 편집을 위한 작업 디렉터리가 없는 데이터의 전체 복사본을 만들고 모든 이전 데이터를 새로 내보내도록 합니다.

    $ git clone --bare https://external-host.com/ext-user/repo.git
    #Makes a bare clone of the external repository in a local directory 
    
  3. “미러” 옵션을 사용하여 로컬로 복제된 리포지토리를 GitHub에 푸시합니다. 그러면 분기 및 태그와 같은 모든 참조가 가져온 리포지토리에 복사됩니다.

    $ cd repo.git
    $ git push --mirror https://github.com/ghuser/repo.git
    #Pushes the mirror to the new repository on GitHub.com 
    
  4. 임시 로컬 리포지토리를 제거합니다.

    $ cd ..
    $ rm -rf repo.git 
    

GitHub에 로컬로 호스트된 코드 추가

컴퓨터나 프라이빗 네트워크에 로컬로 저장된 기존 소스 코드 또는 리포지토리가 있는 경우 터미널에서 명령을 입력하여 GitHub에 추가할 수 있습니다. Git 명령을 직접 입력하거나 GitHub CLI를 사용할 수 있습니다.

GitHub CLI는 컴퓨터의 명령줄에서 GitHub를 사용하기 위한 오픈 소스 도구입니다. GitHub CLI는 명령줄을 사용하여 GitHub에 기존 프로젝트를 추가하는 프로세스를 간소화할 수 있습니다. GitHub CLI에 대한 자세한 내용은 GitHub CLI 정보를 확인하세요.

GitHub CLI를 사용하여 GitHub에 로컬 리포지토리 추가

GitHub CLI를 사용하여 로컬 리포지토리를 추가하려면 다음 단계를 수행합니다.

  1. 명령줄에서 프로젝트의 루트 디렉터리로 이동합니다.

  2. 로컬 디렉터리를 Git 리포지토리로 초기화합니다.

    git init -b main
    
  3. 프로젝트의 모든 파일을 스테이징 및 커밋합니다.

    git add . && git commit -m "initial commit"
    
  4. GitHub에서 프로젝트의 리포지토리를 만들려면 gh repo create subcommand사용합니다. 메시지가 표시되면 GitHub에 기존 로컬 리포지토리 푸시를 선택하고 원하는 리포지토리 이름을 입력합니다. 프로젝트가 사용자 계정 대신 조직에 속하도록 하려면 organization-name/project-name을 사용하여 조직 이름과 프로젝트 이름을 지정합니다.

  5. 대화형 프롬프트의 안내를 따릅니다. 원격을 추가하고 리포지토리를 푸시하려면 원격을 추가하고 커밋을 현재 분기에 푸시하라는 메시지가 표시될 때 를 확인합니다.

  6. 또는 모든 프롬프트를 건너뛰려면 --source 플래그가 있는 리포지토리의 경로를 제공하고 표시 유형 플래그(--public, --private 또는--internal)를 전달합니다. 예: gh repo create --source=. --public. --remote 플래그를 사용하여 원격을 지정합니다. 커밋을 푸시하려면 --push 플래그를 전달합니다. 가능한 인수에 대한 자세한 내용은 GitHub CLI 설명서를 참조하세요.

Git을 사용하여 GitHub에 로컬 리포지토리 추가

Git을 사용하여 로컬 리포지토리를 추가하려면 다음 단계를 수행합니다.

  1. GitHub.com에서 새 리포지토리를 만듭니다. 오류를 방지하려면 추가 정보, 라이선스 또는 gitignore files을(를) 사용하여 새 리포지토리를 초기화하지 마세요. 프로젝트가 GitHub에 푸시된 후 해당 파일을 추가할 수 있습니다.

    새 리포지토리 만들기의 스크린샷

  2. Git Bash를 엽니다.

  3. 현재 작업 디렉터리를 로컬 프로젝트로 변경합니다.

  4. 로컬 디렉터리를 Git 리포지토리로 초기화합니다.

    $ git init -b main
    
  5. 새 로컬 리포지토리에서 파일을 추가합니다. 또한 이 명령은 첫 번째 커밋에 대해 스테이지를 지정합니다.

    $ git add .
    # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
    
  6. 로컬 리포지토리에서 준비된 파일을 커밋합니다.

    $ git commit -m "First commit"
    # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again.
    
  7. GitHub.com의 빠른 설치 페이지에서 리포지토리 맨 위에서 복사 단추를 선택하여 원격 리포지토리 URL을 복사합니다.

    원격 리포지토리 URL 빠른 설정 복사 스크린샷

  8. 명령 프롬프트에서 원격 리포지토리의 URL을 추가합니다. 로컬 리포지토리가 이 위치로 푸시됩니다.

    $ git remote add origin <REMOTE_URL> 
    # Sets the new remote
    $ git remote -v
    # Verifies the new remote URL
    
  9. 로컬 리포지토리의 변경 내용을 GitHub.com 푸시합니다.

    $ git push origin main
    # Pushes the changes in your local repository up to the remote repository you specified as the origin
    

소스 코드 마이그레이션 도구

외부 도구를 사용하여 프로젝트를 GitHub로 이동할 수 있습니다. Subversion, Mercurial, TFVC(Team Foundation 버전 제어) 또는 다른 Git 리포지토리에서 프로젝트를 가져오려면 GitHub Importer를 사용하는 것이 좋습니다. 외부 도구를 사용하여 프로젝트를 Git으로 변환할 수도 있습니다.

Subversion에서 가져오기

일반적인 Subversion 환경에서는 여러 프로젝트가 단일 루트 리포지토리에 저장됩니다. GitHub에서는 각 프로젝트가 일반적으로 사용자 계정 또는 조직의 개별 Git 리포지토리에 매핑됩니다. 다음과 같은 경우 Subversion 리포지토리의 각 부분을 별도의 GitHub 리포지토리로 가져오는 것이 좋습니다.

  • 협력자가 프로젝트의 해당 부분을 다른 부분과 별도로 체크 아웃하거나 커밋해야 하는 경우
  • 각 부분에 고유한 액세스 권한을 부여하려는 경우

Subversion 리포지토리를 Git으로 변환하려면 다음 도구를 사용하는 것이 좋습니다.

Mercurial에서 가져오기

Mercurial 리포지토리를 Git으로 변환하려면 hg-fast-export를 사용하는 것이 좋습니다.

TFVC에서 가져오기

TFVC와 Git 간에 변경 내용을 이동하려면 git-tfs를 사용하는 것이 좋습니다.

TFVC(중앙 버전 제어 시스템)에서 Git으로 이동하는 방법에 대한 자세한 내용은 중앙 집중식 버전 제어에서 Git으로 마이그레이션을 참조하세요.