TGTGInsighttelegram intelligenceLIVE / telegram public index
← Hypercube's Channel
Hypercube's Channel avatar

TGINSIGHT POST

Post #45

@SmartHypercube_channel

Hypercube's Channel

Views126帖子阅读量
发布12月19日2021/12/19 07:23
Post content

帖子内容

我觉得有很多情况下存在这种需求:在一个全新 clone 得到的 git 仓库中做某件事情(比如编译或者 docker build 或者测试),以避免 untracked files 和 ignored files 的干扰。虽然我知道很多人用 CI 解决这种问题(CI 自然会在全新的 clone 后做),但如果不想用 CI,我整理了 3 种比较简单的在本地的做法: 1. git clean 加合适的参数,可以删掉 untracked files 和 ignored files。我觉得这种做法并不吸引我,因为随意删掉这些文件会有坏处。有人可能会说 git stash 是一个替代方案,但如果文件比较大/有 git 无法保留的元信息(比如权限、属主等),也不好用。 2. git archive 可以产生一个包含 git 管理的文件的压缩包,很适合用于一些场景(比如你就是想做一个代码压缩包发给别人,不希望带上别的文件),但如果想作为一个目录使用就不得不再解压开,有点曲线救国。 3. git worktree add --detach <tmp path> 是我觉得最理想的选择,它可以在指定的目录 checkout 一份内容,里面只多了一个 .git 文件。如果目录被删除,之后这个 worktree 相关的配置信息会被 gc,不会对原本的项目目录产生任何影响。