5

我分叉了 Flask 存储库并从 GitHub 克隆了它的网站分支,例如

git clone --recursive https://github.com/lovesh/flask.git -b website

然后我配置远程像

git remote add upstream https://github.com/lovesh/flask.git -t website
git fetch upstream

然后我进行了更改(我没有创建任何其他文件,但修改了 2 个文件)我必须进行然后添加文件并提交这样的更改

git add .
git commit .

这提示我对提交发表评论,然后我输入了评论。现在它向我展示了

2 files changed, 69 insertions(+), 7 deletions(-)

但是当我尝试将这些更改推送到我的 GitHub 帐户时

git push origin master

它显示错误

error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/lovesh/flask.git'

我环顾四周,遇到这个问题的人说他们没有像这里这里那样提交更改。但我确实提交了,即使它向我显示了这个错误。确认我试过

git status 

它显示了

# On branch website
# Your branch is ahead of 'origin/website' by 1 commit.
#
nothing to commit (working directory clean)

还会git log在日志中显示我的提交。我是 git 新手。我错过了什么吗?

4

2 回答 2

1

试试git push origin website 可能是你用这个名字配置了你的主分支。试着让我知道。

于 2012-12-27T16:39:22.777 回答
1

首先,克隆你的仓库后你没有 master 分支。
git clone细节:

--branch <name>
-b <name>

不要将新创建的指向HEAD克隆存储库指向的分支HEAD,而是指向<name>分支。
在非裸存储库中,这是将被检出的分支。
--branch还可以在结果存储库中获取标签并分离该HEAD提交。

因此,在您的情况下,如果您想创建本地网站分支并将其跟踪到原点,您需要:

git push -u origin website

(在那之后,一个简单的git push就足够了:更多关于“ git - push currentvs. push upstream(tracking) ”中的推送策略)


您的其他远程 ' upstream' 也将只跟踪upstream/website分支:

git remote文档确实提到:

使用-t <branch>选项,而不是远程跟踪所有分支的默认 glob refspec,而是创建refs/remotes/<name>/ namespace一个仅跟踪的 refspec <branch>
您可以提供-t <branch>多个分支来跟踪多个分支,而无需抓取所有分支。

在您的情况下,您只跟踪upstream/website+refs/heads/website:refs/remotes/upstream/website)而不是默认的 refspec+refs/heads/*:refs/remotes/upstream/*)。

于 2012-12-27T16:49:06.790 回答