Git忽略特定文件

时间:2011-04-08 12:56:41

标签: git version-control msysgit

我已经玩了一段时间,我非常喜欢它。 让我来描述我的情况。

我有两台计算机,我有我的存储库和一个远程存储库。

在我的文件中,我有一个配置文件在两台计算机上都不同。因此,当我拉动我的计算机时,我不需要拉动该配置文件,而是其他所有内容。我怎样才能做到这一点?

我已经阅读了.gitignore文件,但我无法弄清楚它们是如何工作的,或者它们是我需要的东西。

6 个答案:

答案 0 :(得分:33)

.gitignore适用于您尚未签入的文件/文件夹。它本质上是一个在存储库中创建的文本文件,它有一个相对于它所放置目录的路径列表,Git将忽略它。您可以将.gitignore文件作为存储库的一部分签入。你可以找到例子 - at the end of this page

然而如果您的文件已经在存储库中检查过,那么您可以使用:

git update-index --assume-unchanged file

将告诉Git忽略将来对该文件所做的任何更改。但是,这是本地配置,因此您必须在签出的每台计算机上执行此操作。你可以通过这样做来恢复它:

git update-index --no-assume-unchanged file

根据文件所包含的配置,在存储库中包含一个框架/示例配置文件可能是一个好习惯 - 类似于PHP人员使用config_example.php执行的操作,然后人们使用它来创建config.php ,这反过来永远不会在存储库中被检查,因为它被忽略。

答案 1 :(得分:6)

如果要忽略存储库中的文件config.local,只需在其中创建一个带有.gitignore行的/config.local文件,添加它并提交到存储库。就是这样。

答案 2 :(得分:1)

.gitignore文件可能就是您所需要的。在该文件中,列出文件模式 - 每行一个 - 这将导致git status不报告这些文件。

但是如果您已经提交了这些文件,那么当您执行git pull时, 将会被提取。

您还可以将.gitignore文件提交到存储库。这样,所有计算机上都会忽略相同的文件。

答案 3 :(得分:1)

也许一个例子会有所帮助。以下是我的.gitignore文件的一部分,它也是项目文件的一部分:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
*.pro.user.*
tmp/
release/
debug/
bin/
moc_*
ui_*
*.bck
*_debug

#Visual Studio stuff
lib/*.lib
*.ncb
*.suo

这只是文件的一部分。你需要根据你的项目来调整你的。

关键是格式灵活,您不应该在共享文件时遇到问题。如果您遇到问题,请将其从存储库中排除。

答案 4 :(得分:0)

请注意

git update-index --assume-unchanged file
如果您尝试切换分支

将无济于事

$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
    file
Please commit your changes or stash them before you switch branches.
Aborting

答案 5 :(得分:0)

如果Git已经跟踪了文件,则.gitignore不适用。 Git将继续跟踪对该文件的更改。 将文件添加到您的.gitignore中。 运行以下命令: git rm-缓存 承诺删除文件并将更新的.gitignore提交到您的存储库。

https://docs.microsoft.com/en-us/azure/devops/repos/git/ignore-files?view=azure-devops&tabs=visual-studio