Github는 기존 클론의 포크로 저장소를 추가합니다.

Github는 기존 클론의 포크로 저장소를 추가합니다.

그래서 github의 업스트림 소스에서 복제된 git 저장소가 있습니다. 일부 내용을 변경했습니다(마스터 브랜치에서는 커밋되지 않음). 내가 원하는 것은 내 변경 사항을 내 github 페이지에 새 브랜치로 푸시하고 github에서 이를 여전히 브랜치로 처리하도록 하는 것입니다.

그게 가능합니까? 저는 git과 github을 처음 접했습니다. 내 질문이 이해가 되나요?

내가 생각할 수 있는 가장 쉬운 방법(그리고 가장 우회적인 방법이라고 확신합니다)은 github에서 저장소를 포크하는 것입니다. 다른 디렉터리에 로컬로 복제합니다. 업스트림 원본 저장소를 추가합니다. 새로운 포크 저장소에 브랜치를 생성합니다. 코드 변경 사항을 새 로컬 저장소에 수동으로 복사합니다. 그런 다음 내 github로 다시 푸시하세요.

이것은 일반적인 사용 사례입니다. 디렉터리를 복사하지 않고 이를 수행할 수 있는 더 쉬운 방법이 있습니까?

나는 Linux에서 명령줄 git을 사용하고 있고 여기 사람들이 더 나은 답변을 제공했기 때문에 SO 대신 여기에 묻는다고 생각했습니다. imo =]

답변1

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

  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. (선택 사항) 포크를 "원본"이라고 부르고 업스트림을 "업스트림"이라고 부르도록 리모컨의 이름을 바꿉니다.

    git remote rename origin upstream
    git remote rename github origin
    

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

답변2

도구가 있습니다:hub

hubgitGitHub를 더 쉽게 사용할 수 있도록 추가 기능과 명령으로 확장할 수 있는 명령줄 도구입니다.

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

# 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

관련 정보