如何推送在.gitignore中指定的文件?

10
如果我在.gitignore中有一个"vendors"目录,那么在进行推送时是否有一种方法可以设置远程来接收该目录?

2
“那将无论如何接收该目录” - 抱歉,您的意思是什么?一个目录要么被忽略,要么不被忽略... - Basic
可能这在根本上是不可能的。如果您确定,那么请随意回答我的问题,告诉我这一点 :) - Alexander Trauzzi
我不是100%确定你想要什么。我已经发布了一个答案,其中包含其他SO Q的一些可能性。如果那不是你想要的,请告诉我们。 - Basic
4个回答

9

你的.gitignore文件与推送无关。它被用于像git statusgit add这样的工具来确定哪些文件应该(或可能)是未来提交的一部分。你可以使用git add命令添加被忽略的文件;除非你使用-f选项,否则它会抛出错误:

The following paths are ignored by one of your .gitignore files:
somefilename
Use -f if you really want to add them.
fatal: no files added

一旦您将文件添加到仓库中,它将与其他任何更改一起推送。


2
问题是,我不想将此目录提交到我的代码库中,我只希望在推送到特定远程(appfog)时包含它。在这种情况下,它是一个具有自动管理依赖项的目录。 - Alexander Trauzzi
没错,但.gitignore文件仍然无法控制推送内容的位置。 - larsks

8
我认为您需要的功能可以通过创建一个用于部署到云提供商的分支来实现。
设置一个名为dev的分支,其中包括您的.gitignore文件,并将增量工作提交到该分支中。
dev分支合并到deploy分支中,deploy分支不包含.gitignore文件,但包含vendors目录。
完成合并后,从deploy分支推送到部署远程。

到目前为止,我听说的最佳解决方案。谢谢。 - Brian Vanderbusch

2

使用-f强制添加。

以下是示例。

git add -f path/to/file

0

Nishad-up的回答是正确的:git commitgit push只会处理您设置要更新到远程的内容。但是,当你在.gitignore中添加了某些东西,或者在列出的文件夹内部,git不会接受命令,并抛出错误。
您必须使用git add -f relative-path-to/my-file.png或其他文件强制暂存此类文件或文件夹,其余部分相同(git commit、git push等)。
*我无法弄清楚如何通过VS-Code源代码控件栏执行此操作,我不得不在终端中执行。


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