如何使用git进行部署?

时间:2013-03-06 03:44:38

标签: git deployment

我是一名开发人员,我有开发机器和机器。我在主分公司开发。当我需要推动产品时,我需要排除一些文件。我无法将它们添加到.gitignore中,因为它使它们无法跟踪。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

我不确定我是否正确理解了您的问题,但您不能(不应该)使用Git来部署应用程序。

Git是一个分布式源代码控制系统,而不是部署系统。

如果您正在寻找部署工具,我建议您查看以下内容(无双关语):

  • InnoSetup - 易于学习/使用但功能不强(无MSI)
  • NSIS - Nullsoft Scriptable安装系统,也很容易学习(没有MSI)
  • WiX - 非常强大但又相当陡峭的学习曲线
  • InstallAware - 商业软件,但有免费限制版
  • InstallShield - 商业软件,非常强大,基于GUI

答案 1 :(得分:1)

git update-index --assume-unchanged path /

来自git-update-index手册页:

  

指定这些标志时,不会更新为路径记录的对象名称。相反,这些选项设置和取消设置路径的“假定未更改”位。当“假定未更改”位打开时,git停止检查工作树文件是否有可能的修改,因此您需要手动取消设置该位以在更改工作树文件时告诉git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。

     

此选项还可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件的更改)。如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。

答案 2 :(得分:1)

Git不是一个部署工具,但您可以轻松地采用它来按如下方式工作:

  • 当您推送到遥控器时,其工作目录将会更新。

因此,通过推送,您可以更新服务器上的文件。

以下是程序:

创建两个存储库:repoDev(在这里工作),repoDeploy(这是您服务器上的repo)

$ git init repoDev
//add some commits to your repoDev

$ git init repoDeploy

repoDeploy内执行:

//in repoDeploy
$ git config receive.denyCurrentBranch ignore
$ git config core.worktree ../

以上命令定义,当您推送到repoDeploy时, 它的工作目录将随你的推送而更新。

配置repoDev

//in repoDev
$ git remote add deploy URL-of-repoDeploy

推送:

//in repoDev
//commit some changes
$ git push deploy master

应更新repoDeploy的工作目录。

proddev环境使用不同的分支可以解决问题。

使用dev分支中的dev版本,prod版本应转到prod分支。

如果要将dev分支推送到prod服务器执行:

$ git checkout master
$ git merge dev
$ git push deploy master

也许您也可以在repoDeploy上设置默认分支,其方式为:

git push deploy prod

将使用prod分支检出工作目录中的文件。但我没有测试它。

相关问题