Как я могу нажать на свою вилку из клона исходного репо?
Я создал вилку (позвоню ей 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
У вас абсолютно есть права на то, чтобы нажать на это репо. Если вы хотите подтолкнуть свой код к исходному репо, вы можете выдать запрос на перенос.