我需要克隆到現有的目錄($HOME
,用於管理點文件)的git回購。我正在做一個裸克隆並重新配置它,因爲我需要克隆到現有的不乾淨的工作目錄。 它的工作原理,但是我發現git status
試圖在第一次使用時運行過濾器。爲什麼要這樣做,我該如何預防它?爲什麼'git status'運行過濾器?
試試這個:
# create a test repo
mkdir test && cd test
git init
echo hello > hello.txt
git add .
git commit -m 1
echo 'hello.txt filter=foo diff=bar' > .gitattributes
git add .
git commit -m 2
# clone it bare and configure it
mkdir ../test2 && cd ../test2
git clone --bare ../test .git
git config core.bare false
git config core.logallrefupdates true
git reset
git checkout .
git config filter.foo.clean foo
git config filter.foo.smudge foo
git config diff.bar.textconv bar
這borks
$ git status
error: cannot run foo: No such file or directory
error: cannot fork to run external filter 'foo'
error: external filter 'foo' failed
On branch master
nothing to commit, working tree clean
這不
$ git status
On branch master
nothing to commit, working tree clean
而且,最初做git status
多次快速連續(即git status; git status; git status)
可以產生多個失敗,有時候,
據我所知,可以通過much reading進行確認,只有在檢查輸入和輸出文件時,過濾器纔會運行。
那麼爲什麼git status
運行它們?
你的'git --version'是什麼? –
git版本2.11.0 – starfry
順便說一句,我不會(也不要)以這種方式管理點文件。相反,我的主目錄中有一個名爲'Dotfiles'的Git目錄,它是一個普通的非裸樹,然後將'.whatever'符號鏈接到''Dotfiles/whatever'。 – torek