1

我正在使用 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 忽略我在本地目录中创建的所有文件并替换为新文件并对现有文件进行新的更改。

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

非常感谢。

4

3 回答 3

5

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

.DS_Store 

这应该位于 Git 存储库的根目录中。

如果你已经签入了一些.DS_Store文件,你会希望 Git 停止跟踪它们。您可以git rm .DS_Store用于此目的。

于 2012-04-10T20:02:23.983 回答
1

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

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

然后git rm是所有那些 .DS 文件。推动你的改变。

Git同步:

拉取更改

git pull

推送更改

git push

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

于 2012-04-10T20:01:47.850 回答
0

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

这个问题也可能会回答您的需求:如何强制“git pull”覆盖本地文件?

于 2012-04-10T20:04:32.190 回答