我正在尝试更新 GitHub 上的 Git 存储库。我做了一堆更改,添加它们,提交然后尝试执行 git push
。响应告诉我一切都是最新的,但显然不是。
git remote show origin
响应我期望的存储库。
为什么当存储库中有不可见的本地提交时 Git 告诉我存储库是最新的?
[searchgraph] git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Capfile
# config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)
[searchgraph] git add .
[searchgraph] git status
# On branch develop
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: Capfile
# new file: config/deploy.rb
#
[searchgraph] git commit -m "Added Capistrano deployment"
[develop 12e8af7] Added Capistrano deployment
2 files changed, 26 insertions(+), 0 deletions(-)
create mode 100644 Capfile
create mode 100644 config/deploy.rb
[searchgraph] git push
Everything up-to-date
[searchgraph] git status
# On branch develop
nothing to commit (working directory clean)
最佳答案
git push
不会推送您所有的本地分支:它如何知道将它们推送到哪些远程分支?它只推送已配置为推送到特定远程分支的本地分支。
在我的 Git 版本 (1.6.5.3) 上,当我运行 git remote show origin
时,它实际上会打印出哪些分支是为推送配置的:
Local refs configured for 'git push':
master pushes to master (up to date)
quux pushes to quux (fast forwardable)
问。但我可以推送到 master
而不必担心这一切!
当您 git clone
时,默认情况下它会设置您本地的 master
分支以推送到远程的 master
分支(本地称为origin/master
),因此如果您只在 master
上提交,那么一个简单的 git push
将始终推送您的更改。
但是,从您发布的输出片段来看,您位于一个名为 develop
的分支上,我猜该分支尚未设置为推送任何内容。因此,不带参数的 git push
不会推送该分支上的提交。
当它说“Everything up-to-date”时,意思是“你告诉我如何推送的所有分支都是最新的”。
问。那么我该如何推送我的提交呢?
如果你想做的是将你的更改从 develop
放入 origin/master
,那么你应该将它们 merge 到你的本地 master
然后推送:
git checkout master
git merge develop
git push # will push 'master'
如果你想要在远程创建一个 develop
分支,与 master
分开,然后向 git push
提供参数:
git push origin develop
这将:在远程创建一个名为 develop
的新分支; 和 使该分支与您本地的 develop
分支保持同步; 和 设置 develop
推送到 origin/develop
以便将来 git push
不带参数 自动推送 develop
。
如果你想将你的本地 develop
推送到一个名为不同于 develop
的远程分支,那么你可以说:
git push origin develop:something-else
但是,该表单不会设置develop
以在将来始终推送到origin/something-else
;这是一次性操作。
关于Git push 不会做任何事情(一切都是最新的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936652/