Как я могу нажать на свою вилку из клона исходного репо?

Я создал вилку (позвоню ей myrepo) другого репозитория (позвоните на него orirepo) в GitHub. Позже я клонировал orirepo.

git clone https://github.com/original/orirepo.git

Я изменил около 20 файлов, затем я поставил свое изменение и сделал фиксацию

git add
git commit

Однако, когда я пытался нажать

git push

Я получил эту ошибку:

remote: Permission to original/orirepo.git denied to mylogin.
fatal: unable to access 'https://github.com/original/orirepo.git/': The requested URL returned error: 403

Я знаю, что допустил ошибку: я должен был клонировать свою вилку, а не orirepo, но это слишком поздно для этого. Как я могу нажать на свою вилку, а не на origin/orirepo, к которой у меня нет доступа на запись?

Ответ 1

По умолчанию при клонировании репозитория

  • который находится в https://github.com/original/orirepo.git,
  • текущая ветвь которого называется master,

затем

  • локальная конфигурация результирующего клона содержит только один удаленный вызов origin, который связан с URL-адресом клонированного вами репозитория;
  • Локальная ветвь master в вашем клоне настроена на отслеживание origin/master.

Поэтому, если вы не изменяете конфигурацию своего клона, Git интерпретирует

git push

а

git push origin master:origin/master

Другими словами, git push пытается перетащить вашу локальную ветвь master в ветвь master, которая находится в удаленном репозитории (известный вашим клоном как origin). Однако вам не разрешено это делать, потому что у вас нет доступа для записи в этот удаленный репозиторий.

Вам нужно

  • либо переопределите удаленный пульт origin, который будет связан с вашей вилкой, запустив

    git remote set-url origin https://github.com/RemiB/myrepo.git
    
  • или, если вы хотите сохранить исходное определение пульта origin, определите новый пульт (называемый myrepo здесь), который связан с вашей вилкой:

    git remote add myrepo https://github.com/RemiB/myrepo.git
    

    Затем вы можете нажать свою локальную ветвь master на свою вилку, запустив

    git push myrepo master
    

    И если вы хотите сообщить Git, что git push следует нажать на myrepo вместо origin с этого момента, вы должны запустить

    git push -u myrepo master
    

вместо.

Ответ 2

Итак, вы клонировали кого-то репо, внеся изменения, а затем поняли, что не можете нажать на это репо, но можете нажать на свою собственную вилку. Итак, вы пошли вперед и разломали исходное репо.

Все, что вам нужно сделать, - это обмен исходным URL-адресом в локальном клоне с URL-адресом разветвленного репо.

Сделайте это так:

git remote set-url origin https://github.com/fork/name.git

Где https://github.com/fork/name.git - URL вашей вилки из исходного репо.

После этого просто

git push

и вы сможете нажать свои изменения на свою вилку:)

Ответ 3

Хорошо, наконец, отредактировал файл конфигурации git:

$ nano .git/config

изменение:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://github.com/<origin-project>/<origin-repo>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

to

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://github.com/<mylogin>/<myrepo>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

Тогда

$ git push

Работал как шарм.

Или, благодаря ответ Тьяго Ф. Маседо:

git remote set-url origin https://[email protected]/user/repo.git

Ответ 4

Сначала вы должны клонировать разветвленное репо в своей учетной записи.

git clone https://github.com/your_account/repo.git

У вас абсолютно есть права на то, чтобы нажать на это репо. Если вы хотите подтолкнуть свой код к исходному репо, вы можете выдать запрос на перенос.