기존 클론의 포크로 저장소를 추가하는 Github


21

그래서 ghithub의 업스트림 소스에서 복제 한 git 저장소가 있습니다. 나는 커밋되지 않고 마스터 브랜치에서 약간 변경했습니다. 내가하고 싶은 일은 변경 사항을 github 페이지에 새 분기로 푸시하고 github에서 여전히 포크로 보도록하는 것입니다.

가능합니까? 나는 git과 github에 상당히 익숙하다. 내 질문도 이해가 되나요?

내가 생각할 수있는 가장 쉬운 방법은 (거의 가장 확실한 방법입니다) github에서 repo를 포크하는 것입니다. 다른 디렉토리에 로컬로 복제하십시오. 업스트림 오리진 저장소를 추가하십시오. 새 분기 저장소에 지점을 만듭니다. 코드 변경 사항을 직접 새 로컬 저장소에 복사하십시오. 그런 다음 다시 내 github으로 밀어 넣습니다.

이것이 디렉토리를 복제하지 않고 더 간단한 방법이있는 일반적인 사용 사례입니까?

커맨드 라인 git을 사용하여 리눅스를 사용하고 있기 때문에 여기에 사람들이 더 나은 답변을 제공하기 때문에 여기에 반대하는 것으로 생각합니다. imo =]


나는 이것이 기술적으로 주제에 관한 것 같지만, 그것이 대부분 github 질문 인 것처럼 보이기 때문에 다른 곳에서 더 나을 수 있습니다
Michael Mrozek

답변:


22

기존 리포지토리에서 모든 작업을 수행 할 수 있습니다 (포크를 새로운 (로컬) 리포지토리로 복제하거나 브랜치를 생성하고 커밋 / 변경 사항을 복사 할 필요가 없습니다).

  1. 커밋을 게시 할 준비를하십시오.

    기존 로컬 커밋을 수정합니다 (예 : git commit --amend및 / 또는 git rebase --interactive).

    게시하려는 커밋되지 않은 변경 사항을 커밋합니다 (로컬 마스터에 커밋이 있거나 커밋되지 않은 변경 사항 또는 커밋되지 않은 변경 사항 이 있음을 의미하는지 확실하지 않은 경우 , 커밋되지 않은 변경 사항은 " 분기”, 그들은 엄격하게 작업 트리에 있습니다).

    당신의 이름 바꾸기 마스터 그것은 당신이 "새로운 지점"에 대해 원하는 이름을 지정 분기를. 이것은 꼭 필요한 것은 아니지만 (어느 브랜치에서 다른 브랜치로 푸시 할 수는 있지만) 로컬 브랜치와 GitHub 포크의 브랜치의 이름이 같은 경우 장기적으로 혼란을 줄일 수 있습니다.

    git branch -m master my-feature
    
  2. 상류 GitHub의 저장소 포크
    (예) github.com:UpstreamOwner/repostory_name.git
    (예를) github.com:YourUser/repository_name.git.

    이것은 GitHub 웹 사이트 (또는 GitHub API를 사용하는 "클라이언트")에서 수행되며 로컬 Git 명령은 없습니다.

  3. 로컬 리포지토리 (업스트림 GitHub 리포지토리에서 원래 복제되었고 마스터 에서 변경 사항이있는 리포지토리)에서 포크 리포지토리를 원격으로 추가합니다.

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. 지점을 GitHub의 포크 저장소로 푸시하십시오.

    git push github my-feature
    
  5. 선택적으로 포크 이름이 "origin"이고 업스트림이 "upstream"이되도록 리모컨의 이름을 바꿉니다.

    git remote rename origin upstream
    git remote rename github origin
    

    git push리포지토리의 이름을 바꾸는 한 가지 이유 는 리포지토리를 지정하지 않고 사용할 수 있기 때문 입니다 (기본값은 "origin").


완벽하게 일했다,하지만 당신은 원격 github에를 만들 때 난 당신이 "https : //로"놓치고 생각 Github에서 URL에
jesjimher

1
@jesjimher :이 게시물의 "URL"은 HTTP (S)가 아닌 SSH를 사용하는 "scp-like syntax" 를 사용합니다. 콜론을 슬래시로 변경하여 HTTP (S) URL로 사용하려면 서버가 네임 스페이스를 추가로 변경하지 않고 GitHub에서 지원한다고 가정합니다.
Chris Johnsen

죄송합니다. Chris, 콜론을 슬래시로 잘못 입력 했으므로 "https"를 추가하지 않으면 작동하지 않습니다. 소음이 유감입니다 ...
jesjimher

4 단계에서 -u옵션을 사용하면 로컬 지점을 동일한 원격 지점으로 my-feature 추적 할 수 있습니다 origin/my-feature. 명령은 다음과 같습니다.git push -u github my-feature
YaOzI

훌륭합니다. 내가 변경해야 할 유일한 것은 github 주소였습니다!
Tico

0

도구가 있습니다 : hub

hub 감싸는 명령 줄 도구입니다 gitGitHub 작업을보다 쉽게 ​​해주는 추가 기능 및 명령으로 확장하기 위해

이제 다음을 수행 할 수 있습니다.

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.