2

ここでEli Barzilayが提案した方法で、ドットファイルをリポジトリに配置しました。

そこで、最終的に両方の長所を活かす解決策を見つけました。リポジトリをサブディレクトリに配置し、シンボリック リンクの代わりに、「core.worktree」をホーム ディレクトリにする構成オプションを追加します。ホーム ディレクトリにいるときは、git リポジトリにいるわけではなく (したがって、最初の問題はなくなりました)、2 番目のケースのように脆弱なシンボリック リンクを処理する必要はありません。バージョン管理したくないパスを除外するというちょっとした手間がかかりますが (たとえば、「.git/info/exclude」トリックの「*」)、これは新しいことではありません。

私の .git/info/exclude は次のようになります。

*
.*.swp
*~
\#*#
.DS_Store

最初の行の*はすべてのファイルを正常に無視するので、明示的にgit add -f. ただし、これには、無視したいファイルがすり抜けてしまうという副作用があります。

を使用していても、特定のファイルを本当に無視するように git に指示する方法はありますadd -fか?

4

1 に答える 1

0

現在のところ、これを行う簡単な方法はありませ*.git/info/exclude. これは、git を使用したドットファイル管理へのデタッチド ワーキング ツリー アプローチの 1 つの大きな欠点であり、私が個人的にこのアプローチを拒否した理由の 1 つです。代わりに、GNU Stowを介してシンボリック リンク ファームの管理を自動化するプラグインを作成しました。mr

ただし、デタッチド ワーキング ツリーのアプローチに固執したい場合は、vcsh車輪を再発明するのではなく、間違いなく検討する必要があります。 私は現在、git の無視メカニズムをよりスクリプト化できるようにする作業を行っvcshます。この作業は、将来、この問題を少なくとも部分的に解決するためにツールによって消費される可能性があります。(私はvcshの作者を知っており、このアイデアを IRC で彼に提案しました。)

最後に、vcs-homeすべてのオプションをよりよく理解するために、みんなと一緒に過ごすことをお勧めします.

于 2012-09-10T10:47:17.087 に答える