少し前に、gitで追跡されるファイルへの変更を無視するためにこれを行いました:
git update-index --skip-worktree <file>
今、私は実際にそのファイルへの変更をソースにコミットしたいと思います。の影響を元に戻すにはどうすればよいskip-worktree
ですか?
少し前に、gitで追跡されるファイルへの変更を無視するためにこれを行いました:
git update-index --skip-worktree <file>
今、私は実際にそのファイルへの変更をソースにコミットしたいと思います。の影響を元に戻すにはどうすればよいskip-worktree
ですか?
回答:
ああ!私は単に欲しい:
git update-index --no-skip-worktree <file>
http://www.kernel.org/pub/software/scm/git/docs/git-update-index.htmlによると、
git ls-files -v
特別な文字でマークされた「変更されていない」と「スキップワークツリー」ファイルを表示します。「skip-worktree」ファイルにはが付いていS
ます。
編集:@amacleodが述べたように、すべての隠しファイルを一覧表示するエイリアスを作成することは、覚えておく必要がないようにするための便利な方法です。alias hidden="git ls-files -v | grep '^S'"
.bash_profileで使用しています。それはうまくいきます!
git ls-files -v | grep '^S'
skip-worktreeで「非表示」にしたファイルのみを一覧表示するために使用できます。そのコマンドのエイリアスを「非表示」にすることを望んでいましたが、エイリアスにパイプリダイレクトを設定しても機能しないようでした。
!
ます。このよう[alias] ignored = !git ls-files -v | grep "^S"
に動作します。
grep
わかりません。あなたの殻に依存すると思います。Git Bashにはgrep
と思います。
'
しませんでした"
が、つまりgit ls-files -v | grep "^S"
適用されたすべてのファイルを元に戻したい場合は、ワークツリーをスキップして、次のコマンドを使用できます。
git ls-files -v | grep -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
git ls-files -v
すべてのファイルとそのステータスを印刷しますgrep -i ^S
ファイルをフィルタリングし、ワークツリーのスキップ(S)またはワークツリーのスキップのみを選択し、変更されていない(s)と見なします。-iは大文字と小文字を区別しないことを意味しますcut -c 3-
ステータスを削除し、パスのみを残して、3番目の文字から最後まで切断しますtr '\012' '\000'
行末文字(\ 012)をゼロ文字(\ 000)に置き換えますxargs -0 git update-index --no-skip-worktree
git update-index --no-skip-worktree
元に戻すためにゼロ文字で区切られたすべてのパスを渡しますTortoise Gitを使用している場合:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
。無視したファイル(またはフォルダを右クリックした場合は無視したすべてのファイル)が表示されます。Unflag as skip-worktree and assume-unchanged
Bashエイリアスを愛する皆さんのために、これらをすべてルール化するための私のセットがあります(C0DEF52に基づく)
alias gitskip='git update-index --skip-worktree ' #path to file(s)
alias gitlistskiped='git ls-files -v | grep ^S'
alias gitunskip='git update-index --no-skip-worktree ' #path to file(s)
alias gitunskipall='git ls-files -v | grep -i ^S | cut -c 3- | tr ''\\012'' ''\\000'' | xargs -0 git update-index --no-skip-worktree'
この回答は、Windowsを使用している技術者の少ない方を対象としています。
「skip-worktree」をクリックしたファイルを覚えていない場合は、次のコマンドを使用してください。
git ls-files -v //This will list all files, you are looking for the ones with an S at the beginning of the line.
git ls-files -v | grep "S " //Use this to show only the lines of interest. Those are the files that have "skip-worktree".
問題を解決するには:
ファイルに移動できます->右クリック->以前のバージョンに復元->上部の「git」タブをクリック->「skip-worktree」チェックボックスをオフ->下部の「適用」をクリック
ファイルが多すぎて手動で修正できない場合は、他の回答を参照する必要があります。