繁体   English   中英

如何使用git进行部署?

[英]How to deploy by using git?

我是一个开发人员,并且拥有开发机器和生产机器。 我在master分支中进行开发。 当我需要推送产品时,我需要排除一些文件。 我无法在.gitignore中添加它们,因为它使它们无法跟踪。

我怎样才能做到这一点?

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

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

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

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

git update-index-假定路径不变/

git-update-index手册页:

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

此选项也可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件所做的操作)。 如果需要修改索引中的该文件(例如合并提交)时,Git将失败(正常)。 因此,如果假定未跟踪的文件在上游被更改,则您将需要手动处理这种情况。

Git不是部署工具,但是您可以轻松地采用它来实现以下目的:

  • 当您按下遥控器时,其工作目录将被更新。

这样一来,您就可以更新服务器上的文件。

步骤如下:

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

$ 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分支推送到产品服务器,请执行:

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

也许您还可以通过以下方式在repoDeploy上设置默认分支:

git push deploy prod

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

暂无
暂无

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

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