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

时间:2012-04-10 19:51:38

标签: git github

我正在使用github来托管一个git存储库,我需要在某些机器中克隆该存储库(这些机器不是为了更改代码)它们仅用于保存软件代码的副本。

我使用以下命令行将远程存储库克隆到本地计算机:

git clone -b master git://github.com/jquery/jquery.git jquerylocal

当我需要同步(获取文件和新文件的更改)与最新版本的名为jquerylocal的本地文件夹时,问题就出现了,因为我的机器添加了名为.DS_Store的文件并给了我以下错误:

error: Your local changes to the following files would be overwritten by merge:
    .DS_Store

我想说git忽略我在本地directorey中创建的所有文件,并替换为新文件并在现有文件中进行新的更改。

我也想知道怎么说git忽略一些要同步的文件夹和文件。

非常感谢。

3 个答案:

答案 0 :(得分:5)

你想创建一个.gitignore文件,它会指示Git完全按照你的要求行事;忽略具有某些文件名模式的文件在您的情况下,您将需要使用单行创建.Gitignore文件:

.DS_Store 

这应该在你的Git存储库的根目录中。

如果您已经签入了几个.DS_Store文件,那么您需要让Git停止跟踪它们。您可以将git rm .DS_Store用于此目的。

答案 1 :(得分:1)

在项目的根目录中创建名为.gitignore的文件。

编辑文件并将.DS_Store添加到该文件。该文件git add .gitignoregit commit

然后git rm所有那些.DS文件。推动您的更改。

Git Synchronization:

拉变化

git pull

推送更改

git push

您需要做的就是在远程计算机上git pull。如果有任何冲突似乎是文件,你不应该提交,因为它们似乎是由你的构建系统自动生成的。删除任何已提交的.DS_Store文件并将其添加到.gitignore后,您不再需要担心同步该文件,因为它将被git忽略。

答案 2 :(得分:0)

如果可以删除本地添加的.DS_Store文件(以及任何其他本地更改),那么在提取新更改之前,您可以执行git clean

这个问题也可以回答您的需求:How do I force "git pull" to overwrite local files?