如何使我的本地更改显示在github存储库中?

时间:2019-05-14 17:08:26

标签: git github

我创建了一个私人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原始私有

但是当我这样做时,我克隆的存储库被拒绝访问,这就是为什么我认为即使在设置时我使用了我的用户名和存储库,它也试图推送给他们的主服务器而不是我的主机

4 个答案:

答案 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推送到远程mastergit 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