Git中的存储库特定忽略文件

7
有没有可能拥有特定于存储库的 .gitignore 文件?例如:
[origin] .gitignore:
foo1.* foo2.*
[another] .gitignore:
bar1.* bar2.*
这样做的目的是,我们使用 git 在托管云服务上进行部署,并且我们希望将开发文件保存在版本控制中,但不将它们推送到存储库。

1
忽略机制不会影响已经在 Git 中被跟踪的文件。这意味着,即使您在“另一个”中使用.git/info/exclude来忽略开发人员文件,如果您将包含与忽略规则匹配的文件的提交部署到该位置,它们仍将被检出。您可以通过推送一个没有提交这些文件的发布分支来解决这个问题,或者改变您的部署机制以避免这种情况。 - Mark Longair
你在代码库中跟踪.gitignore文件本身吗? - Bruno
我认为这将是情况:创建一个Bash脚本,将最新的工作副本合并到部署分支中,清理它,打标签,然后部署它。 - Ahmed Nuaman
4个回答

9

是的,您可以在每个仓库的.git/info/exclude中设置单独的仓库忽略模式。

(请注意,这仅影响每个仓库中要忽略的内容,不会影响您主动放置在源代码控制下并推送的文件。我对您期望的使用情况不是完全清楚。)


0

我的情况:

我有一个名为 alex.todo 的文件,其中包含关于项目的个人笔记。我有两个远程仓库要推送(originalex)。一个用于与其他开发人员共享代码(我使用 .gitignore 排除 alex.todo 文件),另一个仅用于备份此项目,可以保留 alex.todo 文件。

我的最终解决方案:

使用临时分支将 alex.todo 推送到备份仓库。

# Step 1
git checkout -b alex # 'alex' or whatever branch name you prefer

# Step 2
# now you can edit your .gitignore to include your 'alex.todo' file

# Step 3
git add . && git commit -m 'commit some ignore files'
git push alex alex:master # git push <remote> <local branch name>:<remote branch to push into>

# Step 4
git checkout master  # return to branch master and do any editings(commits)

# Step 5
# make sure branch alex is in sync with master whenever you want to push the project to the backup repo
git checkout alex
git merge master # .gitignore will not automatically be included for commit unless specifically added
# now you can repeat step 3 to push the project to the backup repo

0

是的,你可以这样做,只要不把它们放在同一个文件夹中。如果你创建一个名为“deploy”的新文件夹,并将你的部署数据发布到那里,它将使用该文件夹中的.gitignore文件(而不是根目录中的)。


我认为文件夹不是一个优雅的解决方案,但你的想法启发了我去考虑使用部署分支。 - Ahmed Nuaman
部署分支是个好主意。实际上,我们为代码部署创建了两个仓库,一个是“代码”仓库,另一个是“部署”仓库。我们将部署代码发布到部署仓库,并为每个版本创建一个分支,这样我们就可以轻松访问每个已部署的版本。我们甚至在服务器上安装了Git,并检出分支以推送代码。 - Steve Sloka

-1
你可以使用 git 钩子(.git 中的脚本)来完成这个任务。post-checkout 听起来不错。

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