問題タブ [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.
git - 「git update-index --assume-unchanged file」は実際にこの情報をどこに保存しますか?
任意のコマンドを覚える代わりに、構成ファイル (.gitignore や .git/config など) を直接変更するのが好きですが、Git が "git update-index --assume-unchanged file "。
ご存知の方、教えてください!
git - 私の git assume-unchanged ビットに触れたのは誰ですか?
レポに特定のファイルがあり、変更されていないと仮定するビットをオンに設定しました。
たまに、レポで何らかの作業を行った後、そのビットが設定解除され、ファイルが自動的に設定されなくassume-unchanged
なります。
誰が触ってる?明示的にgitに指示するまで、これを永続的にするにはどうすればよいですか:
何が起きてる?
編集:私は、ローカルで変更される構成ファイルで想定変更されていないビットを使用しており、アップストリームにプッシュされることは言うまでもなく、決してコミットされるべきではありません。git status
それらの1つを編集してコミットしたいことをgitに明示的に伝えない限り、私はそれらを や他の場所で見たくありません。
編集:OK、問題を再現できたと思います。
私は別のレポからファイルをコミットし(それは--assume-unchanged
.
したがって、次の 2 つの疑問が生じます。
- すべてのリポジトリに伝播するように、中央の信頼できるリポジトリにこのビットを設定することは可能ですか?
- リモートで変更した後でも、このビットをスティッキーにすることは可能ですか?
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 が不平を言うからです。
git - Git-「ステージ」の概念を取得する
Git に適用されるステージングの概念に頭を悩ませるのにまだ苦労しています。
SVN と類似点はありますか? Git でステージ レベルを持つ主な目的は何ですか?
git - Git: Git は各ブランチのインデックスをどのように覚えていますか?
たとえば、リポジトリにファイル a を作成し (master ブランチにいるとします)、次に Igit add a
とgit commit
. その後、私git branch copy
とgit checkout copy
。最後に、単語ディレクトリにファイル b を作成しますgit add b
。
master ブランチにチェックアウトすると、Git はスマートに見えgit ls-files
ますが、ファイル b がリストされていません。
リポジトリにはファイルが 1 つしかないので、混乱していindex
ます。どのように git でブランチの異なるステージング領域を同時に維持できますか?
編集:
ステージングされているがコミットされていないファイルを説明する方法は、ブランチごとに記憶されていますか?
git - precommit フックでコミットしようとしているものをテストする
pre-commit
フックが実行されると、リポジトリがクリーンでない可能性があります。したがって、単純にテストを実行すると、コミットしているものに反するのではなく、作業ツリーにあるものに反することになります。
やるべきことは明らかgit stash --keep-index --include-untracked
で、 の最初とpre-commit
最後git pop
にあります。そうすれば、(純粋な) インデックスに対してテストを行うことができます。これが私たちが望んでいることです。
git add --patch
残念ながら、これを使用すると(特にハンクを編集する場合)マージ コンフリクト マーカーが生成されます。これstash@{0}
は、コミット後に の内容が作業ツリーと一致しない可能性があるためです。
もう 1 つの一般的な解決策は、リポジトリを複製し、新しい一時リポジトリでテストを実行することです。それには2つの問題があります:
- まだコミットしていないため、コミットしようとしている状態のリポジトリのコピーを簡単に取得することはできません。と
- たとえば、ローカル環境の構成が原因で、テストが現在の作業ディレクトリの場所に敏感になる場合があります。
git stash --keep-index --include-untracked
マージ競合マーカーを導入せず、 post-commit を変更せずに、作業ツリーを の前の状態に復元するにはどうすればよいHEAD
ですか?
git - git update-index --assume-unchanged を実行しましたが、ファイルのリストを取得したいですか?
私は一時的に特定のコミットのためにいくつかのファイルを取り除きたいと思って実行しました:git update-index --assume-unchanged file_name
ファイルの束で。
次に、端末を閉じました。コマンドを実行したファイルの名前を取得して、git update-index
コマンドを実行できるようにする--not-assume-unchanged
方法はありますか?
git - git update-indexを元に戻す方法は?
ローカルホストと本番環境でconfig.phpファイルの異なるコピーを保持するために次のことを行いました。
残念ながら、config.phpファイルを正確に記述していなかったため、変更を加えてコミットし、ファイルを再度無視できるように、これを逆にする必要があります。
git update-index
コマンドを元に戻すにはどうすればよいですか?
git - gitcheckoutは--assume-unchangedファイルでエラーをスローします
特定のブランチで実行git update-index --assume-unchanged path/to/file
した後、を使用してブランチを切り替えることができませんgit checkout
。
次のエラーがスローされます。
エラー:次のファイルへのローカル変更は、チェックアウトによって上書きされます。
ブランチを切り替える前に、変更をコミットするか、それらを隠してください。
中絶
しかし、両方とも、違いはなく、コミット/スタッシュするものは何もないと教えてくれますgit diff
。git status
ブランチから切り替えるにはどうすればよいですか?
(無視されたくないので、git update-index --assume-unchanged
以外の)より良い代替手段はありますか?.gitignore
(質問2と同じ@ git update-index --no-assume-unchangedは機能しません)