Git没有将新文件推送到远程存储库

时间:2014-11-18 05:27:33

标签: git

我正在使用push-to-deploy方法来对项目进行更改。我如何做到这一点如下:

  1. 为当前项目和提交文件设置本地git存储库
  2. 将完整项目目录复制到远程位置(例如/ var / www / myproject),包括myproject / .git目录
  3. 在远程服务器上为此项目设置git config receive.denyCurrentBranch false(如果我将其设置为true,我会得到错误)以允许我从dev推送。否则我会收到错误告诉我这样做。
  4. 在远程服务器上设置更新后挂钩主要是git reset HEADgit checkout。这将使用新推送的版本覆盖远程目录中的先前版本。
  5. 将新的远程git目录添加到本地。
  6. 添加,提交并推送对远程仓库的更改。远程项目文件应该是当前版本。
  7. 这很好用,我对文件的更改出现在远程服务器上的签出分支中。我这样只有一个远程存储库。以前我有一个裸存储库,并使用后更新钩子将项目拉到实时目录(导致两个repos在远程 - 裸和拉回购)

    无论如何,这不起作用的是我在本地开发环境中创建一个新文件并添加,提交和推送更改。我没有得到任何错误。此外,如果我再试一次,它告诉我一切都是最新的。但是,新文件不在远程服务器上。为什么呢?

    我不确定新文件是否未被提交到本地git,被推送到远程或未检出。这有什么理由吗?我需要在某处指定一些选项吗?

    更新

    如果我尝试在我的本地仓库中检查开发中的文件,那很好。所以似乎该文件已经被提交到那里。因此,在推送到远程,然后重置/检查之间的某个时刻,我没有正确设置。

1 个答案:

答案 0 :(得分:2)

我的建议是在远程服务器上只使用一个bare repo并组合post-receive hook。

钩子看起来应该是这样的:

git --work-tree=/path/to/the/live/site checkout -f master

对于丢失的文件,我想问题是你在不同的分支中提交文件,比如dev,在实时服务器上,你正在检查这个文件不存在的分支master