Git:忽略编译后的Google Go文件

12

我的Go编译代码在Linux上没有扩展名。

有什么提示可以在.gitignore文件中忽略它们吗?


1
在 Git 中,是否可以按文件/ MIME 类型忽略文件? - Chris Tonkinson
1
在进行 git 工作之前,建议您先编写并运行 make clean,这样做是否公平? - sarnold
1
扩展sarnold的评论,您可以创建一个pre-commit hook,在每次提交之前运行make clean - 3lectrologos
2
@Matthew:Linux可执行文件通常不带扩展名,无论它们来自哪种语言。这是对象和库的特点。 - Cascabel
4
为什么你需要在代码库内部使用 go build,即使 go testgo install(取决于您的环境)通常会在源代码目录之外生成二进制文件? - zzzz
显示剩余4条评论
5个回答

15
如果您正在使用go工具构建代码,您可以使用-o标志指定输出文件名,例如可以使用命令go build -o bin/elf,然后将bin/*添加到您的.gitignore文件中。

9
保持建立产品与源代码的分离。这样做有几个好处:
  • 您可以同时启动许多不同版本的相同代码,而无需创建多个克隆
  • 易于确信您已经真正清理了;rm -rf objdir将删除一个有缺陷的make clean会错过的文件
  • 您可以从只读的源树副本(例如CD-ROM)开始构建
  • 您不太可能意外提交生成的文件
  • git clean -dxf将清除您的源树,但不会触及您的构建文件
请注意,GNU Automake和Make支持称为VPATH的功能,使得将源树与构建树分离变得容易。

3
只需在 .gitignore 中添加文件名称即可?虽然有点繁琐,但这样做是有效的。

2
是的,但我可能会手动将每个文件添加到我的git add例程中。希望有人能以更便携的方式做到这一点。 - Matthew

3

.gitignore 语言并不是图灵完备的,它只能匹配相对简单的模式。这意味着你需要其他的工具来确定应该被排除的可执行文件。因此,编写一个脚本,根据可以创建的可执行文件的名称创建 .gitignore。如果你想更加高级一些,可以创建一个别名,在运行 git add 前运行该脚本。


0

忽略所需目录中除go文件以外的所有文件。

例如,假设您的main.go和二进制文件名为main的文件位于同一个目录中,即main/main.gomain/main

修改您的.gitignore文件以忽略主目录内除扩展名为.go的文件以外的所有文件。

main/*
!main/*.go

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接