我一直在玩它一段时间,我非常喜欢它。 让我描述我的情况。Git忽略特定文件
我有两台电脑,我有我的仓库和一个远程仓库。
在我的文件中我有一个配置文件在两台计算机上都有所不同。所以当我拉我的电脑时,我不需要那个配置文件被拉,但一切。我怎样才能做到这一点?
我已阅读关于.gitignore文件,但我无法弄清楚他们是如何工作,或者他们是我需要在我的情况下。
我一直在玩它一段时间,我非常喜欢它。 让我描述我的情况。Git忽略特定文件
我有两台电脑,我有我的仓库和一个远程仓库。
在我的文件中我有一个配置文件在两台计算机上都有所不同。所以当我拉我的电脑时,我不需要那个配置文件被拉,但一切。我怎样才能做到这一点?
我已阅读关于.gitignore文件,但我无法弄清楚他们是如何工作,或者他们是我需要在我的情况下。
.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从来没有在存储库中被检查过,因为它被忽略了。
如果要忽略存储库中的文件config.local
,只需创建一个.gitignore
文件,其中包含/config.local
行,将其添加并提交到存储库。而已。
.gitignore
文件可能是你需要的。在该文件中,列出文件模式 - 每行一个 - 这将导致git status
不报告这些文件。
但是,如果你已经提交这些文件,当你做git pull
时,他们将被拉。
您也可以将.gitignore
文件提交到存储库。这样相同的文件将在所有计算机上被忽略。
注犯'.gitignore'不会帮助:如果你*不*规划提交,相反,最好使用'.git/info/exclude'。 – 2011-04-08 13:07:53
感谢您的补充评论! – 2011-04-08 13:56:30
也许一个例子会有所帮助。这里是我的.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
这仅仅是一个文件的一部分。你需要根据你的项目来调整你的。
问题是格式很灵活,你不应该有共享文件的问题。如果遇到问题,请将其从存储库中排除。
也请注意,
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
'git update-index --assume-unchanged'为我工作('git'后没有连字符)。使用git 1.8.1.2版 - OS X 10.8.2。谢谢! – guapolo 2013-02-08 06:21:59
@guapolo在过去,大多数git命令是以'git-COMMAND'的形式而不是'git COMMAND',这就是为什么在答案 – 2013-02-08 11:01:05
中有一个连字符,但是该文件已被跟踪。我用--assume-unchanged选项做了你的git命令,然后试着拉下主控,它仍然给我一个错误信息:错误:你对'conf.py'的本地更改将被合并覆盖。中止。 – fanchyna 2014-08-13 15:53:49