【问题标题】:git push not send changes to remote git repositorygit push 不将更改发送到远程 git 存储库
【发布时间】:2010-11-20 20:59:13
【问题描述】:

我正在对本地 git 存储库中的某些文件进行更改,然后想将更改发送到远程 git 存储库,从该远程 git 存储库通过 ssh 克隆本地。

在本地运行“git commit -a”后,将更改发送到远程,我运行

$ git push
Everything up-to-date

但是我检查了远程文件,它们没有改变! 有什么想法吗?

感谢和问候!

【问题讨论】:

  • 这让我很困惑。我以前可以使用git push 推送,而无需指定来源(或分支)。但是现在我不能不做git push -u origin master就推动。在去git remote -v 之后,我的删除看起来很好originn git@github.com:brando90/ultimate-utils.git (push) ...我的git 配置比现在发生了什么我必须明确指定我要推送的位置并且git push 本身不再工作?顺便说一句,这看起来相关:stackoverflow.com/questions/11173971/…

标签: git push


【解决方案1】:

您是否尝试过以下方法?

 $ git push origin master:master

使用git remote 查找遥控器的名称。默认远程是origin,它是在克隆存储库时自动创建的。

【讨论】:

  • 本地分支的第一个master,远程分支的第二个。
  • 这让我很困惑。我曾经能够使用git push 推送,而无需指定来源(或分支)。但是现在我不能不做git push -u origin master就推动。在去git remote -v 之后,我的删除看起来很好originn git@github.com:brando90/ultimate-utils.git (push)...我的git 配置比现在发生了什么我必须明确指定我要推送的位置并且git push 本身不再工作?
  • @CharlieParker 也许您已将push.default configurationcurrent 更改为simplesimple 是从 Git 2.0 开始的默认值。在 Git 2.0 之前,matching 是默认设置。
  • @knittl 我收到了这个错误。致命:“来源”似乎不是 git 存储库致命:无法从远程存储库读取。请确保您具有正确的访问权限并且存储库存在。
  • @vishal 我不明白你的最新评论,也没有回答我的问题。 git remotegit remote -v 显示什么?它是否包含origin 的行?如果没有,您配置了哪些遥控器(即由命令显示)?
【解决方案2】:

我发现问题是我没有将文件添加到更新以及消息中。我使用以下命令解决了这个问题:

git add .

然后

git commit -m "updates done by..."

然后

git push origin <repo_name>

希望这对某人有所帮助;)

【讨论】:

  • 该死!是的,显而易见的事情......这对我有帮助。
  • 这让我很困惑。我曾经能够使用git push 推送,而无需指定来源(或分支)。但是现在我不能不做git push -u origin master就推动。在去git remote -v 之后,我的删除看起来很好originn git@github.com:brando90/ultimate-utils.git (push)...我的 git 配置比现在发生了什么我必须明确指定我要推送的位置并且 git push 本身不再工作?
【解决方案3】:

您可能推入了非裸存储库,即附加了工作副本的存储库。如果git push 注意到这种情况,您不应该忽略给您的警告。

无论如何,登录到远程机器,更改存储库并执行

git checkout <whatever branch you’re on>

你去。下次只推入裸存储库。 :)

【讨论】:

  • 我设法按照您所说的那样解决了这个问题,但我仍然很困惑,不明白我在做什么。 non-bare 是否意味着我可以直接编辑存储库中的文件,而 bare 意味着存储库中的文件不允许编辑? git push 给出什么样的警告,我没有注意到?谢谢!
  • “裸”存储库是没有工作副本的存储库,即您不能编辑其中的任何文件。存储库路径直接包含非裸存储库的.git 文件夹中的所有内容,而实际上裸存储库只是该文件夹。推送到非裸存储库时,您更改当前签出的文件。您需要单独更新工作代码,例如与git checkoutgit reset
  • 所以你必须切换到一个没有正在工作的分支才能推送到它?
  • 只是不要推送到附加了工作树的存储库中。警告是有原因的!如果您不了解推送到非裸存储库的后果,那就不要这样做。 不要寻找解决方法,而是使用合理的结构:推送到其他地方的裸存储库然后从目的地拉出。
  • 这让我很困惑。我曾经能够使用git push 推送,而无需指定来源(或分支)。但是现在我不能不做git push -u origin master就推动。在去git remote -v 之后,我的删除看起来很好originn git@github.com:brando90/ultimate-utils.git (push)...我的 git 配置比现在发生了什么我必须明确指定我要推送的位置并且 git push 本身不再工作?
【解决方案4】:

我遇到了同样的问题,这是因为 我已签出到历史记录中的某个点(在本例中为标签),而不是任何分支或主节点的结尾(头)。我会做出改变并提交,这会成功,我会在我的本地历史中看到这些变化。当我运行 git push 时,git 表示一切正常,但实际上并未将更改提交到服务器(可以通过检查日志或重新克隆 repo 并检查其日志来查看)。此错误的最佳症状是看到消息“头与 ____ 分离”

解决方案

真正需要做的是(如果你已经完成了我所做的)是通过创建一个分支并切换到该分支之前来创建一个新的开发线> 进行更改。

git branch [a new branch name]
git checkout [a new branch name]  

然后在提交更改后,如果您希望将更改推送到服务器,则需要将分支本身推送到服务器。

git push -u origin [local branch name]

现在,如果您克隆存储库,您应该会在日志中看到您的更改。但是,下次您克隆存储库时,为了能够转到您刚刚更改的那一点,您将需要签出该分支,因为您将默认位于开发线“更远”的主线上你分支了。

git checkout [branch name]  

【讨论】:

  • 这正是我犯的错误。一旦我创建了新分支,我就切换到它,然后使用 push 命令,然后我所做的所有提交都被添加到远程存储库中。
  • 这让我很困惑。我曾经能够使用git push 推送,而无需指定来源(或分支)。但是现在我不能不做git push -u origin master就推动。在去git remote -v 之后,我的删除看起来很好originn git@github.com:brando90/ultimate-utils.git (push)...我的 git 配置比现在发生了什么我必须明确指定我要推送的位置并且 git push 本身不再工作?
【解决方案5】:
git commit --amend

将更改commit ID 并使远程存储库“认为”新的更改已进行。

【讨论】:

    【解决方案6】:

    我建议您考虑将gitosis 用于hosting those git bare repositories。初始设置后真的很容易使用。

    【讨论】:

      【解决方案7】:

      在您的远程存储库中键入“git log”以查看它是否包含最新的提交。 如果没有,您应该检查本地存储库的配置以查看远程设置。

      查看不同类型远程仓库的变化:

      A.如果你的远程仓库是裸的,你可以在远程仓库中找到文件 分支机构/ 配置 描述 头 挂钩/ 信息/ 对象/ 参考/

      推送新的提交后,objects/目录中的文件会发生变化。

      B.如果您的远程存储库不是裸露的, 输入“git checkout master” 并在您的远程存储库中“git status”以查看文件状态。查看某些文件是否已被修改或删除。

      【讨论】:

        【解决方案8】:

        这些解决方案都不适合我,只有在运行 GIT_WORK_TREE=/path/to/website git checkout -f 后,提交才会出现在我的实时网站上。如果这是你的情况,你必须在你的 git 配置中添加一个“钩子”。

        1. 转到 git 文件夹中的 hooks 文件夹:

          cd ~/path/.git

          cd hooks

          nano post-receive

        2. 在 post-receive 文件中写下这一行:

          GIT_WORK_TREE=/path/to/your/website/or/project/ git checkout -f

        3. 最后,你要修改post-receive文件的权限:

          chmod a+x post-receive

        这将在您每次推送时执行该命令,更新您在远程项目上的提交。

        【讨论】:

          【解决方案9】:

          嗯,这对我有用

          git stash
          
          git pull
          
          git add .
          
          git commit -m "commit message"
          
          git push
          

          【讨论】:

            【解决方案10】:

            我遇到了与新 git/github 用户完全相同的问题。 您必须将其写入命令行:

            git push -u origin master
            

            这应该可以解决您的问题。

            【讨论】:

              【解决方案11】:

              另一个问题可能是您可能使用过

              git add 你的目录

              你必须记住提交目录中的文件

              git commit -m'添加你的信息'your-dir/*

              然后添加一个 git push 以将其推送到您的遥控器

              【讨论】:

                【解决方案12】:

                我刚刚经历了一次同样令人沮丧的事情,没有看到我的更改在 github 上被复制。 作为一个新的 git 用户,刚刚习惯了使用系统,我在我的计算机上创建了一个文件夹,添加它,提交它,推送它 - 没有改变。 考虑到无法推送空目录的可能性,所以我在目录中创建了一个空文件,然后重复上述步骤。 更好的是,更改立即反映在我的 github 存储库中。

                【讨论】:

                  【解决方案13】:

                  一种解决方案是移除遥控器并重新插入,只是为了重置您的本地树和预设。当我手动移动文件夹时,我会遇到这个问题。

                  移除你的遥控器:

                  $ git stash
                  

                  然后:

                  $ git remote rm <REMOTE NAME> 
                  

                  git remote rm origin.

                  再次添加您的遥控器:

                  $ git remote add origin <URL>
                  

                  【讨论】:

                    【解决方案14】:

                    我遇到了同样的问题,我尝试了几件事,但都没有奏效。

                    最后,我添加了一个虚拟提交并再次推送更改,现在我可以在 GitHub 远程存储库上看到两者(前一个和虚拟一个)。

                    【讨论】:

                      【解决方案15】:

                      有时它只是由于加载问题而发生。尝试直接在另一个新选项卡中打开分支菜单中的链接。这对我有用。

                      【讨论】:

                        【解决方案16】:

                        因为我在带有 NetworkManager 的 CentoS 7 上遇到了类似的问题。 ping git 服务器给出了响应,与 netcat (nc) 连接也给出了响应,即使尝试与 ssh 连接也有效。但是 git 命令一直挂着。

                        最后事实证明,/etc/hosts 中的条目没有使用 NetworkManager 及其 DNS 设置来解析 git 服务器,而是指向了一个无法访问的错误 IP 地址。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2014-11-03
                          • 1970-01-01
                          • 2022-10-23
                          • 2013-04-13
                          • 2013-03-28
                          • 2013-04-08
                          • 2018-08-13
                          • 1970-01-01
                          相关资源
                          最近更新 更多