問題タブ [git-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2996 参照

git - 「git update-index --assume-unchanged file」は実際にこの情報をどこに保存しますか?

任意のコマンドを覚える代わりに、構成ファイル (.gitignore や .git/config など) を直接変更するのが好きですが、Git が "git update-index --assume-unchanged file "。

ご存知の方、教えてください!

0 投票する
2 に答える
3385 参照

git - 私の git assume-unchanged ビットに触れたのは誰ですか?

レポに特定のファイルがあり、変更されていないと仮定するビットをオンに設定しました。

たまに、レポで何らかの作業を行った後、そのビットが設定解除され、ファイルが自動的に設定されなくassume-unchangedなります。

誰が触ってる?明示的にgitに指示するまで、これを永続的にするにはどうすればよいですか:

何が起きてる?


編集:私は、ローカルで変更される構成ファイルで想定変更されていないビットを使用しており、アップストリームにプッシュされることは言うまでもなく、決してコミットされるべきではありません。git statusそれらの1つを編集してコミットしたいことをgitに明示的に伝えない限り、私はそれらを や他の場所で見たくありません。


編集:OK、問題を再現できたと思います。

私は別のレポからファイルをコミットし(それは--assume-unchanged.

したがって、次の 2 つの疑問が生じます。

  1. すべてのリポジトリに伝播するように、中央の信頼できるリポジトリにこのビットを設定することは可能ですか?
  2. リモートで変更した後でも、このビットをスティッキーにすることは可能ですか?
0 投票する
3 に答える
12810 参照

git - ステージングせずに新しいファイルを git add するにはどうすればよいですか?

git を効果的に (そして意図したとおりに) 使用するために、小さなアトミック コミットを行いますが、1 つのことだけを変更するよりも長いセッションを行います。したがって、私は を多用しますgit add -p。ただし、これは完全に新しいファイルでは機能しません。後でそれらを忘れる傾向があるためです。

私がやりたいこと、新しいファイルがあることを伝えるgitことです。追跡したいのですが、ステージングは​​しません:

例: 実行するとgit status以下が生成されます。

C セクションにファイルfooがあり、A セクションに移動すると言いgit add fooます。AとBの両方に行くと言ったらgit add -N foo、少なくとも新しいファイルがあるという事実として、それは次のコミットに含まれることを意味します。

git add -p後でor git add foo(または何か)を使用して A に追加できるように、セクション B だけに入れたいと思います。

編集

解決策に関してはadd -N、これは機能しません。言った後にコミットしようとするとadd -N、適切に追加していないため、空のファイルの処理方法がわからないため、git が不平を言うからです。

0 投票する
3 に答える
1548 参照

git - Git-「ステージ」の概念を取得する

Git に適用されるステージングの概念に頭を悩ませるのにまだ苦労しています。

SVN と類似点はありますか? Git でステージ レベルを持つ主な目的は何ですか?

0 投票する
2 に答える
2993 参照

git - Git: Git は各ブランチのインデックスをどのように覚えていますか?

たとえば、リポジトリにファイル a を作成し (master ブランチにいるとします)、次に Igit add agit commit. その後、私git branch copygit checkout copy。最後に、単語ディレクトリにファイル b を作成しますgit add b

master ブランチにチェックアウトすると、Git はスマートに見えgit ls-filesますが、ファイル b がリストされていません。

リポジトリにはファイルが 1 つしかないので、混乱していindexます。どのように git でブランチの異なるステージング領域を同時に維持できますか?

編集:

ステージングされているがコミットされていないファイルを説明する方法は、ブランチごとに記憶されていますか?

0 投票する
5 に答える
5049 参照

git - precommit フックでコミットしようとしているものをテストする

pre-commitフックが実行されると、リポジトリがクリーンでない可能性があります。したがって、単純にテストを実行すると、コミットしているものに反するのではなく、作業ツリーにあるものに反することになります。

やるべきことは明らかgit stash --keep-index --include-untrackedで、 の最初とpre-commit最後git popにあります。そうすれば、(純粋な) インデックスに対してテストを行うことができます。これが私たちが望んでいることです。

git add --patch残念ながら、これを使用すると(特にハンクを編集する場合)マージ コンフリクト マーカーが生成されます。これstash@{0}は、コミット後に の内容が作業ツリーと一致しない可能性があるためです。

もう 1 つの一般的な解決策は、リポジトリを複製し、新しい一時リポジトリでテストを実行することです。それには2つの問題があります:

  1. まだコミットしていないため、コミットしようとしている状態のリポジトリのコピーを簡単に取得することはできません。と
  2. たとえば、ローカル環境の構成が原因で、テストが現在の作業ディレクトリの場所に敏感になる場合があります。

git stash --keep-index --include-untrackedマージ競合マーカーを導入せず、 post-commit を変更せずに、作業ツリーを の前の状態に復元するにはどうすればよいHEADですか?

0 投票する
3 に答える
506 参照

git - git update-index --assume-unchanged を実行しましたが、ファイルのリストを取得したいですか?

私は一時的に特定のコミットのためにいくつかのファイルを取り除きたいと思って実行しました:git update-index --assume-unchanged file_nameファイルの束で。

次に、端末を閉じました。コマンドを実行したファイルの名前を取得して、git update-indexコマンドを実行できるようにする--not-assume-unchanged方法はありますか?

0 投票する
1 に答える
6676 参照

git - git update-indexを元に戻す方法は?

ローカルホストと本番環境でconfig.phpファイルの異なるコピーを保持するために次のことを行いました。

残念ながら、config.phpファイルを正確に記述していなかったため、変更を加えてコミットし、ファイルを再度無視できるように、これを逆にする必要があります。

git update-indexコマンドを元に戻すにはどうすればよいですか?

0 投票する
2 に答える
5582 参照

git - gitcheckoutは--assume-unchangedファイルでエラーをスローします

特定のブランチで実行git update-index --assume-unchanged path/to/fileした後、を使用してブランチを切り替えることができませんgit checkout

次のエラーがスローされます。

エラー:次のファイルへのローカル変更は、チェックアウトによって上書きされます。

ブランチを切り替える前に、変更をコミットするか、それらを隠してください。

中絶

しかし、両方とも、違いはなく、コミット/スタッシュするものは何もないと教えてくれますgit diffgit status

ブランチから切り替えるにはどうすればよいですか?

(無視されたくないので、git update-index --assume-unchanged 以外の)より良い代替手段はありますか?.gitignore(質問2と同じ@ git update-index --no-assume-unchangedは機能しません