git 如何完全忽略一个已经有追踪关系的文件是否有改动? .gitignore / exclude / --assume-unchanged 都有局限性~

2017 年 1 月 25 日
 MajestySolor
比如, a 文件已经提交过了,也就是已经追踪了,但是出于某种原因我希望这个 a 文件的后续改动被忽略掉
.gitignore 和 exclude 都是需要没有追踪的情况下才可行,但是我并不希望删掉远程库上的 a 文件
git update-index --assume-unchanged a 文件可行,但是当切换分支的时候仍然会因为 a 文件有过改动而无法切换
研究了好久没合适的解决方法,求指导~~
3184 次点击
所在节点    问与答
7 条回复
wujysh
2017 年 1 月 25 日
git rm --cached a
MajestySolor
2017 年 1 月 25 日
@wujysh 这样会删除远程库的 a 文件,还是不可行的
kiwi95
2017 年 1 月 25 日
如果只是一个文件,可以做一个 a.template 的文件作为 git 追踪的文件,大家公用这个文件,新 clone 的仓库手动复制一个命名为 a 就可以了

用 assumr-unchanged 有点麻烦,要是忘记了这个标记位更麻烦
kiwi95
2017 年 1 月 25 日
append:
把 a 加到 .gitignor 里面
bigpigeon
2017 年 1 月 25 日
以前也遇到这个问题,后来改变思路了,配置文件改名为 xx.conf.bak ,然后 git pull 下来后 cp xx.conf.bak xx.conf
.gitignore 中加入 xx.conf
klesh
2017 年 1 月 25 日
SoloCompany
2017 年 1 月 25 日
用 named stash

git stash save ‘ my checkpoint'
git checkout stash -b my-checkpoint
git checkout master
git stash pop

以后任何时候你希望得到一个 clean working copy 的时候,直接很黄很暴力的(慎重!)
git reset --hard

随时恢复工作环境
git stash apply my-checkpoint

把 stash 保存为单独一个分支是为了避免误操作把 stash 给覆盖或清除了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/336908

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX