1

将文件夹“myapp”复制到我的工作文件夹后,我执行以下操作将其添加到我的暂存区域:

git add .

然后提交更改:

git commit

然后我将我的更改推送到 Heroku:

git push heroku master

所以我的文件夹,称为“myapp”存在于heroku上,但问题是它完全是空的。

当我执行以下操作时,

git clone myapp myapp2

该文件夹在我的本地计算机上正确克隆,包含所有预期的子内容。

有谁知道为什么子文件夹的内容没有被正确推送到 Heroku?我究竟做错了什么?

要回答以下问题:

  1. 我正在git add .我的顶级文件夹(包含文件夹的文件夹myapp)中执行此操作。执行git status显示`没有添加到提交的更改(使用“git add”和/或“git commit -a”)
  2. 是的,myapp包含文件/文件夹(我的 django 项目)
  3. 我删除了我的 .gitignore 文件,因为我将虚拟环境放在了另一个地方,所以它不再在我的项目文件夹中,所以我认为这不会影响它。
4

2 回答 2

3

好的,我似乎已经解决了这个问题。不知何故,git 进入了一个奇怪的状态。我真的不明白如何,但由于某种原因,它没有在文件夹中添加任何文件。

我只是复制了那个文件夹并给它一个新名称,然后按照我一直在做的完全相同的过程,它终于正确上传了。

于 2012-05-19T19:43:55.537 回答
0

默认情况下,您不能将更改推送到存储库的签出分支。它通常会导致重大问题!以下是通常发生的情况:

$ git push heroku master
 ...错误消息...heroku
 ![远程拒绝] master -> master(当前已签出分支)
错误:未能将一些引用推送到“ heroku

由于您没有提到任何错误消息,我假设您已将以下内容添加到heroku存储库配置中,或者您正在运行相当旧的 Git 版本:

[收到]
        拒绝当前分支 = 假

每当您将新版本推送到存储库时,听起来您都想检查主分支的新副本heroku。这可以通过接收后挂钩来实现。heroku在您的存储库中创建一个文件.git/hooks/post-receive,并为其+x授予权限。

#!/bin/sh
while read oldrev newrev refname
do
    if test "$refname" = refs/heads/master
    then
        ( cd ..; GIT_DIR=.git; git reset --hard )
    fi
done

现在,每当您将新master分支推送到heroku时,钩子都会运行并检查新分支。有更好的方法来做这种事情,但这很简单。

摘要:默认情况下,当您推送更改时,它只会更改历史记录,而不会更改工作树。假设有人可能在那棵树上工作,所以对它做任何事情都可能具有破坏性。

于 2012-04-14T01:55:57.953 回答