2014-12-05 179 views
0

我有一个裸露的回购站,用作两台计算机的原点。Git:忽略当前跟踪目录中的文件

我有一个目前在git中跟踪/家具/目录,我想在两台计算机上解开和.gitignore。

所有回购都是同步开始的。

在电脑1

$ git rm -r --cached furniture 

成功地将删除本地仓库中的文件,而是把它留给我的工作树。迄今为止都很好。

$ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 

Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

deleted: furniture/file1.png 
deleted: furniture/file2.png 

我犯此更新,并推送到远程的,并从计算机2.拉

但是现在文件上电脑2消失在工作树。

选项1:通过scp重新创建计算机2上的文件夹,然后及时在.gitignore那里。

选项2:使用GIT中更新索引每计算机

选项3上--assume不变:???更好的方法?

这似乎应该是一个简单的方法,让我只告诉所有的回购,以便不再跟踪文件,就好像它们一直在.gitignore文件中一样。

我的所有使用Google提供的信息是,rm --cached是解决方案;但它似乎并没有停止删除命令被发送到其他回购的工作树,即使它可以在计算机1上正常工作。

我在想什么?

回答

0

您可以使用下面的命令

git update-index --assume-unchanged <file> 

要再次做git的跟踪更改,请

git update-index --no-assume-unchanged <file> 

文档here

+0

但是,这只会告诉电脑1忽略文件,右键?将此作为另一选项添加到问题中... – piersb 2014-12-05 17:50:14

+0

是的,必须在每个克隆副本上完成 – usha 2014-12-05 17:54:51

+1

不要这样做。国旗意味着别的东西。这种用法是一个不好的副作用,有些命令会检测到这些更改并添加这些文件,可能在您最不期待的时候。我确实有一个补丁正在更新文档,以便更清楚地了解这个标志的用途(并且它不是一个穷人的忽略标志!)。 – 2014-12-11 16:01:46