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

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

用 assumr-unchanged 有点麻烦,要是忘记了这个标记位更麻烦
kiwi95
2017-01-25 19:21:57 +08:00
append:
把 a 加到 .gitignor 里面
bigpigeon
2017-01-25 19:58:22 +08:00
以前也遇到这个问题,后来改变思路了,配置文件改名为 xx.conf.bak ,然后 git pull 下来后 cp xx.conf.bak xx.conf
.gitignore 中加入 xx.conf
klesh
2017-01-25 22:26:03 +08:00
SoloCompany
2017-01-25 22:49:37 +08:00
用 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://www.v2ex.com/t/336908

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

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

© 2021 V2EX