git停止追踪文件-最佳实践

git停止追踪文件-最佳实践

有时候我们会遇到这样的场景,失误或是不小心将IDE的一些配置文件(如.idea文件夹)推送到了git仓库.而且你的同事拉取了代码,那么无论他们修改配置文件还是修复路径,他们:

要么提交上去,谁拉代码谁冲突

要么不提,,每次提交的时候小心翼翼不把这些配置文件提上去

为什么.gitignore文件不管用?

也许这时你马上会想,"shit,最好马上把这些文件添加到.gitignore".然后你就做了,结果坑爹的发现:那些已经被添加到仓库的文件,只要修改就会出现在被修改的列表里,根本不管用

这是因为.gitignore的设计就是为了那些没有被追踪的文件(即不在仓库中),如果你将一个已经被追踪的文件添加到.gitignore文件(或者使用add -f强制添加),这个文件还是会像工程里的其他文件一样被追踪的

把文件从仓库当中删除?

那么接下来你还可以尝试将文件从仓库中删除,那么git就不会再追踪这个文件而且可以加到.gitignore文件.

然而,你要如何把文件仅仅从git仓库中删掉呢?因为你不想丢失IDE的项目配置文件(丢了还怎么运行).这些文件应该保留在你的机器上,就像"不提交"它.

(当然你也不能把他们从git仓库中删掉,然后拿着这些文件到处拷贝覆盖,不要自欺欺人了)

其实还有一种方案 git rm --cached filename这种方法确实可以把文件从暂存里移除掉怎么修改也看不到,就好像真的从硬盘上删除了一样,所以你就简单地运行 git rm -r --cached .idea提交,然后搞定,是吗?

错!

怎么才能不被同事鄙视

去搜索的话,你会发现还有一种说法是这样的,而且无耻的度娘全都是这个结果:

git update-index --assume-unchanged filename

.这方法确实很有效果,怎么修改都不会看到,但跟前面的一些方法一样,自欺欺人,治标不治本:

因为是本地设置,所以每个同事只要新拉的代码,都要这么配置

你停止追踪了这些文件并提交上去,git本地仓库并不知道你保留了这些文件,.所以同事们去拉代码的时候,他们机子上的git就会愉快地将那些文件删除掉,然后他们的IDE就shit了.那要怎么防止git这么做呢?

好吧,说实话,做不到.你提交的删除操作会导致git去删除掉每个同事机子上的那些文件.

除非...除非你可以在git之前那样做

在git之前删除

如果另外一个开发者在拉取你的修改之前执行git rm -r --cached .idea然后提交到本地仓库,git发现这两个操作是等价的,就不会去尝试删除了

所以,这就是第一种做法. 告诉你同事你将在下午三点对这些文件停止追踪,然后他们在拉取你的修改之前也进行同样的操作(首先确保这些文件被加到了.gitignore中).但是,万一这没有生效或是有人没收到通知,那这里还有第二种方案.

把文件还原回来

如果文件在机器上被删除了,应该可以很简单地还原回来,毕竟这才是版本控制

git checkout <tree-ish> <file(s)>命令可以使git恢复任何文件在任何时间点的版本.所以如果你的上一次提交使同事本地的那些文件被删除掉了,他可以简单地利用git checkout HEAD^ .idea命令从之前的版本恢复.如果这之间有不止一次提交,那么首先找到文件被删掉的那次提交(git log --stat --diff-filter=D可能会用到),然后恢复这次提交之前的最近一个版本.例如,删除的那次提交是c4f3d00d,那就使用git checkout caf3d00d~1 .idea.

但是稍等,还有一个非常关键的步骤~

因为当你使用git checkout还原文件时,git会把文件加到追踪并放到暂存.没错,即使已经被加到了.gitignore(当然并没有哪条命令可以防止git这样处理).也就是说,如果你一不小心,会再次把这些文件提交到仓库!

幸运的是,有个非常简单的做法.在你把文件还原之后,一切都没有问题了,执行git reset HEAD .idea,由于这些文件已经被添加到了.gitignore(你已经把它加进去了,不是么?),git不会再把它加进去了

参考:

delete-from-repo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,937评论 3 27
  • 迎接盛夏的酷暑是一件令人难过的事情,除了西瓜和冰激凌是恩赐,其他种种皆是考验。 不过周末在空调房里读几本好书,重温...
    如何是可阅读 334评论 0 1
  • 前几天看到雅君的推送——《走,和我一起去台湾游学、写作、跳舞、作戏吧!》,介绍了“中国三明治”这个公众号组织的台北...
    Yo黄澄澄阅读 428评论 0 0
  • 我拿着笔描画着她的模样,而她拿着笔描画着我画她的模样,最后画出来她的模样是我画的,还是她画的,还是到底根本就是镜...
    Mycro阅读 178评论 0 0