我创建了一个私人github存储库,在其中克隆了需要使用的存储库。我在本地拥有所有文件,并且已经完成编码,但是我无法将这些更改反映到我的私有github存储库中。
所以这就是克隆存储库后所做的
git checkout -b private
git remote add private git@github.com:<github-username>/<repositoryname>.git
git push private -u master
但这总是失败的 当我再次尝试时,它起作用但显示了
Enumerating objects: 42, done.
Counting objects: 100% (42/42), done.
Delta compression using up to 8 threads
Compressing objects: 100% (36/36), done.
Writing objects: 100% (42/42), 22.55 KiB | 7.51 MiB/s, done.
Total 42 (delta 15), reused 0 (delta 0)
remote: Resolving deltas: 100% (15/15), done.
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote: https://github.com/<githubusername>/<repositoryname>/pull/new/master
remote:
To https://github.com/<githubusername>/<repositoryname>
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'private'.
应该说是私人->主人 所以我知道不对劲
我想做的是有一个新分支来跟踪我的更改,并为我的私有存储库提供一个远程,以便我可以将新分支推送到存储库的master分支,但我认为它正在尝试将其推送到另一个人的主人。
编辑: 当我想推动它时,它告诉我首先使用它
git push --set-upstream原始私有
但是当我这样做时,我克隆的存储库被拒绝访问,这就是为什么我认为即使在设置时我使用了我的用户名和存储库,它也试图推送给他们的主服务器而不是我的主机
答案 0 :(得分:0)
您创建了一个名为private
的分支(通过运行git checkout -b private
),但是随后您只推了master
分支(通过运行git push private master
)。请记住,push
命令的语法为:
git push <remote> <refspec>
第一个参数指定远程服务器的名称,而不是分支的名称。
如果要将本地分支private
推送到名为private
的远程服务器,则应输入:
git push -u private private
如果要将远程站点上的本地private
分支重命名为master
,则应输入:
git push -u private private:master
答案 1 :(得分:0)
我在问题中看到的一切都很好。没有错误,本地分支master
已成功推送到远程master
。您期望看到private -> master
是错误的:private
是远程服务器的名称,git
使用它从配置中获取其URL。但是git
推送分支,因此将master
推送到master
,您会看到master -> master
。
如果您有一个名为private
的分支,则必须单独推送它:git push private -u private
。如果要将分支private
推送到远程master
:git push private -u private:master
,但我建议使本地和远程分支名称具有完全相同的名称。
关于错误
! [rejected] private -> private (fetch first)
error: failed to push some refs to 'github.com/vdorozco/roster'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
请参阅Cannot push to GitHub - keeps saying need merge
您需要使用git pull [--rebase] private master
更新本地存储库。
https://stackoverflow.com/search?q=%5Bgit%5D+update+were+rejected
答案 2 :(得分:0)
您在上面评论的给定链接无法正常工作。如您所说,如果您打算将本地更改推送到远程,则只需从master即可完成。
git push origin master
然后,如果结果被拒绝并且不允许先推送代码,则必须从远程主服务器中提取代码。 (发生这种情况是因为您有远程更改,所以您必须先获取它们并更新代码)。因此,您应该从管理员那里获取代码。
git pull origin master
然后,您将在此处显示一些处理窗口。关闭它并再次推送代码。
案例2: 如果您在创建分支中,则可以通过以下方式简单地做到这一点:
git checkout -b <branch name>
然后,您在该分支上工作,在该分支上提交。然后通过
再次跳到掌握git checkout master
如果您要从远程主服务器中提取任何提交,请通过
git pull origin master
然后在您已经建立的新分支之前,先在本地主分支。因此,您可以通过结帐跳到该分支(就像上面的jumb到master一样)并以master为基础
git rebase master
然后跳转到主目录,然后再次通过分支重新建立
git rebase <branch name>
然后,您只需将代码推送到远程主机
答案 3 :(得分:-1)
-u
仅在创建新分支时才需要。否则,您应该只做git push private master
或作为简写git push
。