2011-04-08 198 views
16

我一直在玩它一段时间,我非常喜欢它。 让我描述我的情况。Git忽略特定文件

我有两台电脑,我有我的仓库和一个远程仓库。

在我的文件中我有一个配置文件在两台计算机上都有所不同。所以当我拉我的电脑时,我不需要那个配置文件被拉,但一切。我怎样才能做到这一点?

我已阅读关于.gitignore文件,但我无法弄清楚他们是如何工作,或者他们是我需要在我的情况下。

回答

31

.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,而这个config.php从来没有在存储库中被检查过,因为它被忽略了。

+1

'git update-index --assume-unchanged'为我工作('git'后没有连字符)。使用git 1.8.1.2版 - OS X 10.8.2。谢谢! – guapolo 2013-02-08 06:21:59

+1

@guapolo在过去,大多数git命令是以'git-COMMAND'的形式而不是'git COMMAND',这就是为什么在答案 – 2013-02-08 11:01:05

+0

中有一个连字符,但是该文件已被跟踪。我用--assume-unchanged选项做了你的git命令,然后试着拉下主控,它仍然给我一个错误信息:错误:你对'conf.py'的本地更改将被合并覆盖。中止。 – fanchyna 2014-08-13 15:53:49

6

如果要忽略存储库中的文件config.local,只需创建一个.gitignore文件,其中包含/config.local行,将其添加并提交到存储库。而已。

1

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

但是,如果你已经提交这些文件,当你做git pull时,他们被拉。

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

+3

注犯'.gitignore'不会帮助:如果你*不*规划提交,相反,最好使用'.git/info/exclude'。 – 2011-04-08 13:07:53

+0

感谢您的补充评论! – 2011-04-08 13:56:30

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 

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

问题是格式很灵活,你不应该有共享文件的问题。如果遇到问题,请将其从存储库中排除。

+0

我需要将它放在根文件夹中吗? – Headshota 2011-04-08 13:08:32

+0

我通常保持一个在根。然后在文件夹中为特殊情况创建特殊情况,我不想将其放入“master .gitignore”文件中。 – 2011-04-08 13:11:11

+0

我已经添加了忽略文件,但是当我更改配置文件时,它在状态下仍然显示该文件被修改。它应该如何? – Headshota 2011-04-08 13:19:43

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