如何开始通过git提交到bitbucket - 没有看到变化

时间:2011-10-16 14:37:03

标签: git version-control

也许我正在解决这个错误,但我正在按照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个删除!为什么我的文件没有提交?我也在使用pushpull

编辑以下是完整日志:

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

5 个答案:

答案 0 :(得分:34)

您确实需要git push origin master,而不仅仅是git push。这是因为git push的默认行为是将每个分支推送到远程端具有相同名称的分支,只要具有该名称的远程分支存在。在这种情况下,您的BitBucket存储库是完全空的(没有master分支,因为没有提交)因此git pushgit 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