对于一个大学项目,我们使用的是由主持演讲的主席建立的git存储库。每天,他们的服务器都会提取我们项目的最新版本并运行秘密评估测试。因此,我们需要保证仓库中的文件可以被服务器编译。
由于我们使用flex为必须完成的任务之一生成了代码,因此我们需要保证文件是由正确的flex-version生成的。 (否则,服务器将无法编译生成的文件。)
但是我的系统不支持其服务器的flex版本。因此,我确实需要生成文件的另一个版本来编译系统中的所有内容。当我完成编码后,目前的常规例程是:
git add --all
git reset generated-file1.c
git reset generated-file2.c
... (commit and push)
因为这让我感到不安,所以我已经创建了一个自定义命令来为我执行此操作。但是,我想问一下是否有类似于.gitignore
的东西来“锁定”我们生成的文件的特定版本(将在服务器上编译)。因此,我们团队中的任何人都只需要使用git add -all
即可添加除生成的文件以外的所有内容。
编辑: 感谢phd的建议here,我离我想要的要近一点。对于我来说,仍然缺少的是:
... 我们团队中的任何人都只需使用
git add -all
...
通过使用git update-index --skip-worktree generated-file*.c
,我只会为我的系统修复此问题。我要寻找的是一次影响我们所有系统的回购更改。 (其他成员也有同样的问题。)
我知道他们可以将相同的内容复制并粘贴到其终端中,但是我想知道是否有一种更优雅的方法(类似于.gitignore
)来在其中列出文件并且它们将在每个系统上被忽略。
干杯,
帕斯卡
答案 0 :(得分:0)
这不是您应该使用git的方式。通常,您要做的是首先不要签入任何生成的文件-您只需将生成的文件或生成的文件的模式添加到.gitignore
。您应该拥有某种Makefile
或构建脚本来自动完成所有必要的生成。