我正在尝试更新GitHub上的Git存储库.我做了一些更改,添加了它们,然后尝试做了一个git push.回复告诉我一切都是最新的,但显然不是.
git remote show origin
Run Code Online (Sandbox Code Playgroud)
用我期望的存储库响应.
为什么当存在在存储库中看不到的本地提交时,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)
Run Code Online (Sandbox Code Playgroud)
Sam*_*kes 136
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)
Run Code Online (Sandbox Code Playgroud)
问:但是我可以在master不担心这一切的情况下推进!
git clone默认情况下,当您设置本地master分支以推送到远程master分支(本地称为origin/master)时,如果您只提交master,则简单git push将始终推送您的更改.
但是,从你发布的输出片段开始,你就在一个名为的分支上develop,我猜这个分支还没有被设置为推送到任何东西.因此,git push没有参数将不会推送该分支上的提交.
当它说"一切都是最新的"时,它意味着"你告诉我如何推动的所有分支都是最新的".
问:那么如何推送我的提交?
如果您想要做的是将更改develop放入origin/master,那么您应该将它们合并到本地,master然后推送:
git checkout master
git merge develop
git push # will push 'master'
Run Code Online (Sandbox Code Playgroud)
如果你想要的是develop在遥控器上创建一个分支,分开master,然后提供参数git push:
git push origin develop
Run Code Online (Sandbox Code Playgroud)
那将:在遥控器上创建一个新的分支develop; 并把该分支最新的与您当地的develop分公司; 并设置develop为推送到origin/develop将来,git push没有参数将develop自动推送.
如果你想将你的本地推develop送到一个叫做其他 东西的远程分支develop,你可以说:
git push origin develop:something-else
Run Code Online (Sandbox Code Playgroud)
然而,这种形式不会设置develop总是推到origin/something-else未来; 这是一次性操作.
Vik*_*Vik 23
当我的SourceTree应用程序在升级期间崩溃时,这发生在我身上.在命令行上,似乎前一个git add已经被破坏了.如果是这种情况,请尝试:
git init
git add -A
git commit -m 'Fix bad repo'
git push
Run Code Online (Sandbox Code Playgroud)
在最后一个命令中,您可能需要设置分支.
git push --all origin master
Run Code Online (Sandbox Code Playgroud)
请记住,如果您没有进行任何分支或任何类型的分支,这就足够了.在这种情况下,请确保您按下正确的分支git push origin develop.
就我而言,其他解决方案均无效。我必须备份新修改的文件(用 显示git status),然后运行git reset --hard. 这使我能够重新调整远程服务器。添加新的修改文件,并运行
git add .
git commit -am "my comment"
git push
Run Code Online (Sandbox Code Playgroud)
做到了。我希望这对某人有所帮助,作为“最后一次机会”的解决方案。
现在,您似乎位于开发分支上。你的origin上有一个develop分支吗?如果没有,请尝试git push origin develop。git push一旦它知道您的起源上的开发分支,它将起作用。
作为进一步阅读,我会查看git-push 手册页,特别是示例部分。
| 归档时间: |
|
| 查看次数: |
138863 次 |
| 最近记录: |