2017-09-18 5 views
0

私はgit update-index --assume-unchangedを作業ディレクトリのファイルに使用する方法を知っています。Git: "assum-unchanged"とマークされている作業ディレクトリのdiffを表示するには? (またはskip-worktree)

私の質問は次のとおりです。HEADが指しているバージョンとファイルの違いを確認する簡単な方法はありますか?

今すぐgit diffを実行する前に、私は一時的に-assume-unchangedを元に戻す必要があります。シーケンスは次のようになります:

git update-index --no-assume-unchanged foo.java 
git diff foo.java 
git update-index --assume-unchanged foo.java 

これは機能しますが、これはちょっとしたことです。

ファイルはgitで追跡されますが、私の開発環境にはローカルに変更されたバージョンが必要です。そして、私はgitにローカルに整形されたバージョンをコミットすることは決してありません。

は、私が代わりにskip-worktree assume-unchangedのを使用するように切り替えても、質問がまだ適用され

を更新しました。私はちょうど、以前のオプション が、ファイルの変更が意図されている方が良いと分かった。 2つのオプションの詳細については、 linkを参照してください。

+0

あなたが使用する 'gitのdiffを--no-index'を実行することができます'ここ

は私のGitの別名がありますgit diff'を普通の 'diff'のより洗練されたバージョンとして使用するか、単に' diff'を実行してください。しかしどちらの方法であれ、あなたは 'HEAD'コミットからの抽出など、あなたが比較したい特定のバージョンのファイルのコピーを通常のファイルのどこかに保存する必要があります。 – torek

+0

@torek - しかし、それは私が使用しているシーケンス(どこかの普通のファイルとしてファイルのバージョンをチェックしなければならない)という手順がさらに不器用だと思われます。とにかくありがとう! – leeyuiwah

+1

私は思っています*正解は '--assume-unchanged'ではなく' --skip-worktree'を使っていますが、わかりません。編集:実際に 'gitの助けになるかどうか(https://stackoverflow.com/questions/13630849/git-difference-between-assume-unchanged-and-skip-worktree)特にdiff。 –

答えて

0

(すべての議論をありがとう。私はここで自分の質問に答えるのですが。)

それには簡単に解決策が存在しないようです。しかし、エイリアス を使用することで、タイピングを少し減らすことができます。これらの別名を持つ

[alias] 
     # show only files that have been skip-worktree 
     lsfswt = !git ls-files -v | grep "^S" 
     uiswt = update-index --skip-worktree 
     uinswt = update-index --no-skip-worktree 

、ここで私が入力するために必要なものです::

git uinswt foo.java 
git diff foo.java 
git unswt foo.java 
関連する問題