如何将本地更改推送到Bitbucket上的远程Git仓库

87

我正在测试Git和Bitbucket。

我在Bitbucket上创建了一个存储库,并创建了该存储库的本地副本并在其中提交文件。我似乎无法将文件从我的本地存储库推送到远程存储库。

这是我正在做的事情:

git clone https://me@bitbucket.org/me/test.git
cd test
touch dummy
git add dummy
git commit dummy -m "my first git commit"
git push
最终一行输出:
Everything up-to-date

当我登录 Bitbucket 后,我看不到我的虚拟文件。我做错了什么?

以下操作有效:

 git push origin master:master

这与简单的 git push 有何不同的解释?


任何初次接触 Git 的人看到这个问题,请查看 https://dev59.com/s2025IYBdhLWcg3w7qjL。 - JGallardo
4个回答

103

请使用 git push origin master 替代。

您在本地有一个代码仓库,最初的 git push 是将其“推送”到本地仓库中。这是不必要的操作(因为它已经在本地),并且会显示所有内容都是最新的。git push origin master 指定一个远程仓库(origin)和其上的分支(master)。

欲了解更多信息,请参阅此资源


3
我需要提醒一下,当你克隆某个东西时,“origin”仓库会被自动定义。 - Chuck Callebs

15

这是一项安全措施,以避免推送尚未准备好发布的分支。简单地说,通过执行“git push”,只会推送已经存在于服务器上名称相同的本地分支或使用了localbranch:remotebranch语法推送的分支。

要将所有本地分支推送到远程仓库,请使用--all

git push REMOTENAME --all
git push --all

或者指定您想要推送的所有分支:

git push REMOTENAME master exp-branch-a anotherbranch bugfix

另外,在"git push"命令中加入-u是很有用的,因为它会告诉你本地分支是否领先于或落后于远程分支。当你运行git fetch之后,在运行git status时就会显示这一点。


8
我从 https://git-scm.com/ 下载了 Git,并按照 https://dev59.com/VGQo5IYBdhLWcg3wZuwc#26130250 中的指示 设置 ssh 后,生成的公钥在我的 Bitbucket 帐户中得到验证。参考 http://www.bohyunkim.net/blog/archives/2518 中的步骤后,我发现只需使用'git push' 即可工作:
git clone https://me@bitbucket.org/me/test.git
cd test
cp -R ../dummy/* .
git add .
git pull origin master 
git commit . -m "my first git commit" 
git config --global push.default simple
git push

Shell响应如下:

$ git push
Counting objects: 39, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (39/39), done.
Writing objects: 100% (39/39), 2.23 MiB | 5.00 KiB/s, done.
Total 39 (delta 1), reused 0 (delta 0)
To https://me@bitbucket.org/me/test.git 992b294..93835ca  master -> master

即使在GitHub上推送将主分支合并到gh-pages,它也能正常工作。
git checkout gh-pages
git merge master
git push

0
"git push" 命令的第二个参数('master')的含义 -
git push origin master

可以通过从“news-item”分支启动“push”命令来清晰地实现。这将导致本地的“master”分支被推送到远程的“master”分支。有关更多信息,请参见git-push

<refspec>

[<repository> [<refspec>…​]

“is written” 一句话是指“明确指定目标引用要使用什么源对象进行更新”。

为了方便您参考,这里有一张屏幕截图以证明此说法。

Enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接