Git push won't do anything (everything up-to-date)

我正在尝试更新 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)
230960 次浏览

试试:

git push --all origin
git push origin master

现在,看起来你在开发部门。你在你的起源上有发展分支吗?如果没有,请尝试 git push origin developgit push将工作一旦它知道一个开发分支对您的起源。

作为进一步的阅读,我将看一下 Git-push 手册页,特别是示例部分。

git push不会推送所有本地分支: 它如何知道将它们推送到哪些远程分支?它只推送已经配置为推送到特定远程分支的本地分支。

On my version of Git (1.6.5.3), when I run git remote show origin it actually prints out which branches are configured for push:

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不会推送对该分支的提交。

当它说“一切都是最新的”时,意思是“你告诉我如何推动的所有分支都是最新的”。

那么我怎样才能推进我的提交呢?

如果你想做的是把你的变化从 developorigin/master,那么你可能应该合并到你的本地 master然后推:

git checkout master
git merge develop
git push             # will push 'master'

如果您想要在远程上创建一个与 master分离的 develop分支,那么向 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在未来,这是一个一次性的操作。

多亏了 Sam Stokes。根据他的回答,你可以用不同的方法解决这个问题(我用这种方法)。在更新您的开发目录之后,您应该重新初始化它

git init

然后您可以提交并将更新推送到 master

当我的 SourceTree 应用程序在暂存期间崩溃时,这种情况发生在我身上。在命令行上,似乎之前的 git add已经损坏。如果是这样的话,试试看:

git init
git add -A
git commit -m 'Fix bad repo'
git push

在最后一个命令中,您可能需要设置分支。

git push --all origin master

请记住,如果您没有进行任何分支或类似的操作,那么这就足够了。在这种情况下,请确保按到正确的分支,如 git push origin develop

当我在 git push到 GitHub 的 ^C过程中发生这种情况时。然而,GitHub 没有显示已经做出了更改。

为了解决这个问题,我修改了我的工作树,提交,然后再次推动。

相反,您可以尝试以下方法。您不必转到 master; 您可以直接强制从您的分支本身推送更改。

如上所述,当您执行 rebase 时,您正在更改分支上的历史记录。因此,如果尝试在 rebase 之后执行正常的 git push,Git 将拒绝它,因为没有从服务器上的提交到分支上的提交的直接路径。相反,您需要使用 -f--force标志来告诉 Git,是的,您确实知道自己在做什么。在执行强制推送时,强烈建议您将 push.default配置设置设置为 simple,这是 Git 2.0中的默认设置。要确保配置正确,请运行:

$ git config --global push.default simple

一旦正确,你就可以运行:

$ git push -f

并检查您的拉请求。它应该更新!

如何重建一个拉请求的底部了解更多细节。

Please try going to the last commit and then do git push origin HEAD:master.

对我来说,其他的解决方案都不管用。我必须备份新修改的文件(用 git status显示) ,并运行 git reset --hard。这使我能够与远程服务器重新对齐。添加新的修改过的文件,并运行

git add .
git commit -am "my comment"
git push

Did the trick. I hope this helps someone, as a "last chance" solution.

这发生在我身上,我只是重新提交了更改,然后它推动了。

To be specific, if you want to merge something to master, you can follow the below steps.

git add --all // If you want to stage all changes other options also available
git commit -m "Your commit message"
git push // By default when it clone is sets your origin to master or you would have set sometime with git push -u origin master.

在拉请求模型中,常见的做法是创建一个新的本地分支,然后将该分支推送到远程。为此,您需要提到您想要在远程推动更改的位置。 You can do this by mentioning remote at the time of push.

git push origin develop // It will create a remote branch with name "develop".

如果希望创建本地分支名称以外的分支,可以使用以下命令进行此操作。

git push origin develop:some-other-name

I tried many methods including defined here. What I got is,

  • 确保存储库名称有效。最好的方法是从存储库站点复制链接并粘贴到 git bash 中。

  • 确保已提交所选文件。

    git commit -m "Your commit here"
    
  • If both steps don't work, try

    git push -u -f origin master

有一次,我试图从一个新的分支推入,结果却用了 git push origin master。 你应该:

  • Use: git push origin your_new_branch if you want that this 分支也发生在远程回购中。
  • 否则检查到您的主分行合并的东西,然后推到从主回购与 git merge origin master的 git。

概述: 这里的要点是,你应该检查你提供的地方 the 第二个参数 for git merge. So if you are in the master use 如果在 new _ Branch 中,则使用 master 作为第二个参数 作为第二个参数,如果希望将此分支保留在远程 选择上面的第二个选项。

试试 git add -A而不是 git add .

在我的例子中,我必须删除所有的远程控制器(由于某些不明原因有多个) ,再次添加远程控制器,并用-f 提交。

$ git remote
origin
upstream


$ git remote remove upstream
$ git remote remove origin
$ git remote add origin <my origin>
$ git push -u -f origin main

I don't know if the -u flag contributed anything, but it doesn't hurt either.

The problem could also be that the local branch does not have an upstream.

用途:

git push --set-upstream origin main

您正在设置要将文件推送到的分支。

你确定你有正确的远程起源网址集吗?通过发出 git remote show origin是否可以根据您的存储库 URL 正确地设置“获取 URL”和“推送 URL”?

这是我的错误,我手动输入,它不是正确的路径。

当你处于一个与你想象的不同的分支时,这种情况可能会发生,让我们称之为“附加”。你需要回到本地的主要和推从那里。但是要小心,当您返回 main 时,所有的更改都将被撤消,您只能看到代码,直到本地 main 的最后一次编辑。

按照以下步骤:

  1. git log
  2. git remote -v [Check Wheather any Origin is there or not]
  3. [如果没有起源] git remote add origin yourOriginName 例句: git remote add origin https://github.com/vikaskumar27071990/RandomCodes.git
  4. git status
  5. git push -u origin master

(如果设置了类似 师父的错误,以便从 起源跟踪远程分支 师父,那么请遵循以下几点)

  1. git init
  2. git add -A
  3. git commit -m 'Fix bad repo'
  4. git push

On the last command, you might need to set the branch.

git push --all origin master

if are adding new project to github you can use below steps :

rm -rf .git/
git init
git remote add origin https://repository.remote.url
git add .
git commit -m “Commit message here”.
git push -f origin master

git commit -m "initial commit"

Git 推动原点总线

对我很有效