繁体   English   中英

为什么git没有推送文件夹的内容?

[英]Why is git not pushing contents of a folder?

将文件夹'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文件,因为我把我的虚拟环境放在另一个地方altogeher所以它不再在我的项目文件夹中,所以我认为这不会影响它。

好吧,我好像已经解决了这个问题。 不知何故,git处于一种奇怪的状态。 我真的不明白怎么做,但由于某种原因,它没有添加文件夹中的任何文件。

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

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

$ git push heroku master

To 
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to ''

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

[receive]
        denyCurrentBranch = false

听起来你想在将新版本推送到heroku存储库时检查主分支的新副本。 这可以通过post-receive hook实现。 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 ,钩子都会运行并检出新的分支。 有更好的方法来做这种事情,但这很简单。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM