4

不想更改 .gitignore ,因为其他人想要 repo 中的文件。但我有自己想要使用的副本。

我编辑.git/info/exclude并添加了以下内容:

/Gemfile
/Gemfile.lock
/config/database.yml
/spec/spec_helper.rb

这似乎没有任何作用。git status仍然显示:

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Gemfile
#       modified:   Gemfile.lock
#       modified:   config/database.yml
#       modified:   spec/spec_helper.rb

在不使用 .gitignore 的情况下保留本地文件版本的最佳方法是什么?

4

4 回答 4

7

您可能会调用git update-index --assume-unchanged [file names]或者如果有一堆文件,只需对 .gitignore 执行此操作并根据需要修改忽略文件。

文档(强调我的):

当“假设不变”位打开时,git 停止检查工作树文件是否有可能的修改,因此您需要手动取消设置该位以告诉 git 当您更改工作树文件时。...
此选项也可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于 .gitignore 对未跟踪文件所做的)

于 2012-08-16T02:02:58.257 回答
4

.gitignore并且.git/info/exclude仅适用于尚未在存储库中的文件。如果文件在存储库中,则不能要求 Git 忽略它们。

您可以做的是在本地维护这些更改,或者作为您与主服务器上的传入工作合并的分支,或者作为您在主服务器之上重新设置的一组更改。然而,这两者都有点不方便。

于 2012-08-16T01:51:21.010 回答
1

我在我的机器上使用了一个全局忽略文件,它也被使用了 - 这样你就可以拥有基于项目的 .gitignore 文件 + 你的机器本地的全局设置

例如,我在 ~/.gitconfig 中有这个

[core]
   excludesfile = /home/adrian/.gitignore
于 2012-08-16T01:51:54.687 回答
0

您已经开始使用前导的所有文件/。我认为如果您要删除一切都会正常工作:

Gemfile
Gemfile.lock
config/database.yml
spec/spec_helper.rb
于 2012-08-16T01:48:43.577 回答