我在GitHub上创建了myrepo另一个存储库(让我们称之为orirepo)的fork(让我们称之为).后来,我克隆了orirepo.
git clone https://github.com/original/orirepo.git
Run Code Online (Sandbox Code Playgroud)
我修改了大约20个文件,然后我上演了我的更改并提交了一个提交
git add
git commit
Run Code Online (Sandbox Code Playgroud)
但是,当我试图推动时
git push
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
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
Run Code Online (Sandbox Code Playgroud)
我知道我犯了一个错误:我应该克隆我的叉子而不是orirepo,但现在已经太迟了.我怎么能推到我的叉子而不是origin/orirepo我没有写入权限?
jub*_*0bs 166
默认情况下,克隆存储库时
https://github.com/original/orirepo.git,master,然后
origin,它与您克隆的存储库的URL相关联;master克隆中的本地分支设置为跟踪 origin/master.因此,如果您不修改克隆的配置,Git会解释
git push
Run Code Online (Sandbox Code Playgroud)
如
git push origin master:origin/master
Run Code Online (Sandbox Code Playgroud)
换句话说,git push尝试将本地master分支推送到master驻留在远程存储库(由克隆称为origin)的分支.但是,您不允许这样做,因为您没有对该远程存储库的写入权限.
你需要
通过运行重新定义origin与您的分支相关联的遥控器
git remote set-url origin https://github.com/RemiB/myrepo.git
Run Code Online (Sandbox Code Playgroud)或者,如果要保留origin远程的原始定义,请定义myrepo与fork关联的新远程(此处称为):
git remote add myrepo https://github.com/RemiB/myrepo.git
Run Code Online (Sandbox Code Playgroud)
然后你应该能够master通过运行将你的本地分支推送到你的分支
git push myrepo master
Run Code Online (Sandbox Code Playgroud)
如果你想告诉Git git push应该推送myrepo而不是origin从现在开始,你应该运行
git push -u myrepo master
Run Code Online (Sandbox Code Playgroud)代替.
Ahm*_*ais 14
所以,你克隆了某人的回购做出了改变,然后意识到你不能推到那个回购,但你可以推到自己的分支.所以,你继续前进并分叉原始回购.
您所要做的就是将本地克隆中的原始URL与forked repo的URL交换.
像这样做
git remote set-url origin https://github.com/fork/name.git
Run Code Online (Sandbox Code Playgroud)
https://github.com/fork/name.git原始仓库中您的前叉的URL 在哪里.
在那之后,只是
git push
Run Code Online (Sandbox Code Playgroud)
并且你将能够将你的更改推送到你的前叉:)
好的,我终于编辑了我的git配置文件:
$ nano .git/config
Run Code Online (Sandbox Code Playgroud)
改变:
[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
Run Code Online (Sandbox Code Playgroud)
至
[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
Run Code Online (Sandbox Code Playgroud)
然后,
$ git push
Run Code Online (Sandbox Code Playgroud)
工作就像一个魅力.
或者,感谢Thiago F Macedo回答:
git remote set-url origin https://yourusername@github.com/user/repo.git
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65344 次 |
| 最近记录: |