3

スパース チェックアウト シナリオでは、このコマンドgit checkout .は無視すべきディレクトリを復元します。これは仕様によるものですか、それとも Git の潜在的な問題ですか? 作業コピーに加えた変更を破棄するために使用git checkout .しています。同じことを行い、この問題に悩まされない別のコマンドはありますか?

再現可能な例を次に示します。

rm -rf test
git init test
cd test
for f in a b c; do
  mkdir $f
  touch $f/$f
  git add $f/$f
  git commit -m "added $f"
done
git config core.sparsecheckout true
echo a > .git/info/sparse-checkout
echo b >> .git/info/sparse-checkout
git read-tree -m -u HEAD
ls
a b

ここまでは順調ですね。問題は次のとおりです。

git checkout .
ls
a b c

ところで:

git --version
git version 1.7.10.4

質問除外されたファイルが git sparse チェックアウトで再表示されるのはなぜですか? 関連していますが、はるかに古く、私が見ているものを完全に説明していません.

4

2 に答える 2

0

これは仕様によるものだと確信しています。あなたは積極的にgitにそれらすべてのファイルを作成するように命令しているので、それはそれを行います。最後のコミットの状態に戻るための正しいコマンドは次のとおりです。

git reset --hard

また、スパースチェックアウト設定も考慮に入れる必要があります。

于 2013-03-07T07:30:56.313 に答える