也许我正在解决这个错误,但我正在按照git教程进行操作。我在bitbucket上有一个名为“testrepos”的存储库,我正在尝试使用它。
首先,我用git clone https://my_username@bitbucket.org/my_username/testrepos.git
现在,repo是空的,所以我创建了一个名为main.cpp的文件。然后我运行“git add main.cpp”。如果我现在运行git status
,我会看到有一个名为main.cpp的新文件要提交。
最后,我运行git commit -m 'First commit'
。有0个更改,0个插入和0个删除!为什么我的文件没有提交?我也在使用push
和pull
。
编辑以下是完整日志:
Welcome to Git (version 1.7.7-preview20111014)
Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
chris@EDI ~
$ cd git
chris@EDI ~/git
$ git clone https://my_username@bitbucket.org/my_username/testrepos.git
Cloning into testrepos...
Password:
warning: You appear to have cloned an empty repository.
chris@EDI ~/git
$ cd testrepos/
chris@EDI ~/git/testrepos (master)
$ git pull
Password:
Your configuration specifies to merge with the ref 'master'
from the remote, but no such ref was fetched.
chris@EDI ~/git/testrepos (master)
$ git add temp.cpp
chris@EDI ~/git/testrepos (master)
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: temp.cpp
#
chris@EDI ~/git/testrepos (master)
$ git commit -m 'Committing temp file'
[master (root-commit) 5d659df] Committing temp file
Committer: unknown <chris@EDI.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 temp.cpp
chris@EDI ~/git/testrepos (master)
$ git pull
Password:
Your configuration specifies to merge with the ref 'master'
from the remote, but no such ref was fetched.
chris@EDI ~/git/testrepos (master)
$ git push
Password:
Everything up-to-date
答案 0 :(得分:34)
您确实需要git push origin master
,而不仅仅是git push
。这是因为git push
的默认行为是将每个分支推送到远程端具有相同名称的分支,只要具有该名称的远程分支存在。在这种情况下,您的BitBucket存储库是完全空的(没有master
分支,因为没有提交)因此git push
或git push origin
的默认行为不会推送任何分支。如果你这样做,你的推动就会起作用:
git push origin master
...但由于这是你的第一次推动,你应该这样做:
git push -u origin master
...它还将master
中的origin
分支设置为master
分支的默认上游分支。您只需要使用此命令形式一次。
答案 1 :(得分:3)
尝试git push origin master
。
答案 2 :(得分:1)
您添加的文件是空的吗?该消息显示更改文件的数量,以及插入和删除的行数。如果您刚刚添加了一个空文件,git不会将其数量视为它所生成的数字中的“已更改”。但是,它会提交文件。
尝试重新推送到bitbucket,并在Web浏览器中查看存储库文件列表。你应该在那里看到你的文件。
答案 3 :(得分:1)
我也遇到过这个问题,我看到了很多无益的建议。最后,我分解并阅读了git-pull和git-fetch的代码。在我的情况下,问题是由相关遥控器的配置文件中的“ tagopt = --tags ”引起的。这似乎导致git-fetch执行“自动标记跟踪”,这在某些情况下会截断FETCH_HEAD文件的副作用。这反过来导致git-pull失败并出现错误:
您的配置指定与ref'master'合并 来自遥控器,但没有提到这样的参考。
我对git的内部真的没有足够的信心来说明这是一个错误或预期的行为,还是我不能很好地理解git。但是,从我的配置文件中删除“ tagopt ”设置已经解决了我在所有情况下的问题。
注意,这特别令人困惑,因为手动运行“git fetch --tags ...”会采用不同的代码路径,并且FETCH_HEAD保持良好状态。
(我正在运行git版本1.7.4.1)
答案 4 :(得分:0)
git push -u origin --all
第一次
git push origin --all
之后
是什么在bitbucket 101上列出
https://confluence.atlassian.com/display/BITBUCKET/Create+a+repository