Git을 기존 리포지토리를 새로운 원격 리포지토리 서버로 푸시 할 수 있습니까? 싶다고 가정 해보십시오. 처음에

git.fedorahosted.org에 리포지토리가 있고 github에서 내 계정으로 복제하여 페도라 호스트의 “공식”레포지토리를 제외하고 내 놀이터를 만들고 싶다고 가정 해보십시오. 처음에 그것을 복사하는 단계는 무엇입니까? github에는이 멋진 “포크”버튼이 있지만 분명한 이유로 이것을 사용할 수 없습니다.

그리고 페도라 호스트 리포지토리의 github 변경 사항을 어떻게 추적합니까?



답변

  1. github에서 새로운 저장소를 만듭니다.
  2. 페도라 호스트에서 로컬 시스템으로 리포지를 복제합니다.
  3. git remote rename origin upstream
  4. git remote add origin URL_TO_GITHUB_REPO
  5. git push origin master

이제 다른 github 저장소와 마찬가지로 작업 할 수 있습니다. 업스트림에서 패치를 가져 오려면 간단히 실행하십시오 git pull upstream master && git push origin master.


답변

이 질문에 유용한 링크가있는 삭제 된 답변이 있습니다 : https://help.github.com/articles/duplicating-a-repository

요점은

0. create the new empty repository (say, on github)
1. make a bare clone of the repository in some temporary location
2. change to the temporary location
3. perform a mirror-push to the new repository
4. change to another location and delete the temporary location

OP의 예 :

로컬 컴퓨터에서

$ cd $HOME
$ git clone --bare https://git.fedorahosted.org/the/path/to/my_repo.git
$ cd my_repo.git
$ git push --mirror https://github.com/my_username/my_repo.git
$ cd ..
$ rm -rf my_repo.git

답변

기존 리포지를 다른 곳으로 푸시하려면 다음을 수행해야합니다.

  1. 원래 저장소를 먼저 복제하십시오.

    git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
    
  2. 복제 된 소스를 새 저장소로 푸시하십시오.

    cd rhq
    git push https://github.com/user/example master:master
    

당신은 변경 될 수 있습니다 master:mastersource:destination지점입니다.


특정 커밋 (분기)을 푸시하려면 다음을 수행하십시오.

  1. 원래 저장소에서 새 분기를 작성하고 체크 아웃하십시오.

    git checkout -b new_branch
    
  2. 시작하려는 지점을 선택하고 재설정하십시오.

    git log # Find the interesting hash
    git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard
    

    또는 git cherry-pick기존 HEAD에 추가 할 커밋을 선택하십시오 .

  3. 그런 다음 새 저장소로 푸시하십시오.

    git push https://github.com/user/example new_branch:master
    

    rebasing하는 -f경우 강제 푸시에 사용하십시오 (권장되지 않음). git reflog변경 기록을 보려면 실행 하십시오.


답변

로컬 리포지토리 (로컬 브랜치 등)를 새 리모컨으로 푸시하고 싶습니까? 아니면 기존의 리포지토리 (모든 브랜치, 태그 등)를 새 원격으로 미러링하고 싶습니까? 후자가 여기 에 git 저장소를 올바르게 미러링하는 방법 에 대한 훌륭한 블로그입니다 .

매우 중요한 내용은 블로그를 읽어 보는 것이 좋지만 짧은 버전은 다음과 같습니다.

새 디렉토리에서 다음 명령을 실행하십시오.

git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git

답변

이 시도 전체 Git 저장소를 이동하는 방법을

  1. 다음을 사용하여 temp-dir 디렉토리에 로컬 저장소를 작성하십시오.

    자식 클론 임시 디렉토리

  2. temp-dir 디렉토리로 이동하십시오.

  3. ORI의 다른 브랜치 목록을 보려면 다음을 수행하십시오.

    git branch -a
    
  4. 다음을 사용하여 ORI에서 NEW로 복사하려는 모든 브랜치를 확인하십시오.

    git checkout branch-name
    
  5. 이제 다음을 사용하여 ORI에서 모든 태그를 가져옵니다.

    git fetch --tags
    
  6. 다음 단계를 수행하기 전에 다음 명령을 사용하여 로컬 태그 및 분기를 확인하십시오.

    git tag
    
    
    git branch -a
    
  7. 이제 다음 명령을 사용하여 ORI 저장소에 대한 링크를 지우십시오.

    git remote rm origin
    
  8. 다음 명령을 사용하여 로컬 저장소를 새로 작성된 새 저장소에 연결하십시오.

    git remote add origin <url to NEW repo>
    
  9. 이제 다음 명령으로 모든 브랜치 및 태그를 푸시하십시오.

    git push origin --all
    
    
    git push --tags
    
  10. 이제 ORI 저장소의 전체 사본이 있습니다.


답변

간결하고 이해하기 쉬운 set-url 을 사용하는 솔루션을 찾았습니다 .

  1. Github에서 새로운 저장소를 만듭니다
  2. cd 로컬 컴퓨터의 기존 저장소에 저장하십시오 (아직 복제하지 않은 경우 먼저 수행하십시오)
  3. git remote set-url origin https://github.com/user/example.git
  4. git push -u origin master

답변

기존 Git 리포지토리가있는 경우 :

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/newproject
git push -u origin --all
git push -u origin --tags