0

我是一个单一的开发人员,我有开发机器和产品机器。我正在 master 分支中开发。当我需要推动产品时,我需要排除一些文件。我无法将它们添加到 .gitignore 中,因为这会使它们无法跟踪。

我怎样才能做到这一点?

4

3 回答 3

2

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

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

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

  • InnoSetup - 易于学习/使用但不是很强大(没有 MSI)
  • NSIS - Nullsoft Scriptable Instal System,也很容易学习(无 MSI)
  • WiX - 非常强大但非常陡峭的学习曲线
  • InstallAware - 商业软件,但有免费的有限版本
  • InstallShield - 商业软件,非常强大,基于 GUI
于 2013-03-06T03:52:30.720 回答
1

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应该更新。

prod为您的和环境使用不同的分支dev应该可以解决问题。

devdev分支中使用您的版本,您的prod版本应该转到prod分支。

如果要将dev分支推送到产品服务器,请执行:

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

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

git push deploy prod

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

于 2013-03-06T16:56:38.443 回答
1

git update-index --assume-unchanged path/

git-update-index手册页:

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

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

于 2013-03-06T03:49:27.320 回答