2011-11-22 84 views
4

我和我的朋友选择使用git和GitHub在项目上进行协作。我们都很新。配置文件已经在远程git仓库中。想要取消但不删除。怎么样?

我的朋友用他包含的项目配置文件版本初步提交了我们的项目文件。我的配置文件将会不同。我们不希望来回发送这些文件的更改。

我已经发布git initgit pull [email protected]:my_friend/our_repository.git master将我们的项目文件放到我的开发服务器上。

然后我创建了一个.gitignore文件在项目的根我的dev的服务器(这里我做git init):

# this is .gitignore in the project's root directory 
index.php 
config/some_config_file.php 
config/another_config_file.php 

由于这些配置文件已经在仓库中,在.gitignore这些线路不会做任何事。我明白这一点。其他SO答案已经建议这些命令:

git rm --cached index.php 
git rm --cached config/some_config_file.php 
git rm --cached config/another_config_file.php 
git commit -m "hope this works" 
git push 

这个删除这些文件在远程GitHub的仓库!不好。我希望这些文件保留在GitHub上,因此它不会报警我的朋友。 我只想在我的开发服务器上保留我自己的未版本的文件副本,与GitHub存储库中正在进行的任何操作无关。

我该如何用git实现这个设置?

回答

5

你不能这样做,但你可以告诉git忽略对这些文件的进一步(本地)更改。尝试:

git update-index --assume-unchanged <your_file> 
+1

谢谢!这工作很好。顺便说一句,在google搜索之后,我发现'git ls-files -v | grep^[a-z]'会告诉你哪些文件已经被这样设置。这里有更多的信息,包括'〜/ .gitconfig'的两个别名:http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html – markplindsay

+0

' - 放弃 - 不变'技术是一个好的一个,只要你意识到这些问题,比如在切换分支和合并提交文件的位置发生变化时(参见文档)。 –

+0

@Sri:非常有效的一点!无论何时使用上游版本更新本地回购,并且该文件已更改,都必须手动处理。如果有问题的文件经常更改,这可能很烦人。 – jweyrich

3

GitHub只存储回购中的实际内容。您无法从回购库中删除文件,但也可以将其保留在回购库中。

最好的解决方案是让你的同事知道文件已被删除,所以他们可以保持自己的副本完好无损,只需将它们复制回工作树(因为它们现在将被忽略) 。

+0

非常感谢您的回答,但我认为'--assume-unchanged'是我正在寻找的。 – markplindsay

相关问题