問題タブ [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: インデックスとは
この図から、コミットは他のツリーとブロブへのポインターであるルート ツリーへのポインターです。しかし、インデックスの適切なビューとは何ですか?
質問:
フォルダー構造を持つ同様のツリー風ですか、それともブロブのフラット ビューですか?
インデックスがツリーっぽい場合、コミットとインデックスの間に大きな違いはありますか?
インデックスは完全なスナップショットと差分のどちらに似ていますか?
git - 「ファイルの終わりに改行がありません」という警告が表示されますが、gitguiで行ごとにステージングする方法
git guiを使用して、コミット用にステージングする行を選択します。これは通常、チャームのように機能します。コマンドラインで同じことを行うオプションを知っています。
スクリーンショットに示したように、ファイルの最後に最初に新しい行がない場合は常に、git guiがこれを認識し、エディターに警告メッセージを追加します。
問題
改行の欠落に起因する問題は、個々の行をステージングおよびコミットできなくなることです。右クリックして特定の行を選択Stage line for commitし、コンテキストメニューから選択すると、エラーメッセージがポップアップ表示されます。
エラー:致命的:11行目でパーチが破損しています。
この問題はオペレーティングシステムに固有のものではなく、Windows、MacOSX、およびLinuxで発生する可能性があります。個々の行を選択し続ける前に、ファイルに新しい行を追加してこのバージョンをコミットすると、問題を回避できることを知っています。
問題を再現する手順
- 新しいリポジトリを初期化します。
- それぞれ「Hallo」という単語を含む3行のコンテンツを含むファイルを作成します。ファイルの最後に改行を入れないでください。
- ファイルを追加してコミットします。
- 同じファイルを編集して、3行の間に単語を入れます。
- git guiを開き、変更を1行ずつステージングしてみてください。
リクエスト
問題を回避できるGitの構成があるのだろうか。目的の改行を追加するフックなどの自動化も問題ありません。
バグレポート
バグレポートをGitメーリングリストに送信しました。こちらのディスカッションをフォローして参加できます。
git - Git: インデックス内のファイルの posix パーミッションのみを変更します
と
-x
実行ビットを設定 (または使用時に設定解除) できますが、インデックス内のファイルの完全なアクセス許可を設定するにはどうすればよいですか (例: 744
)?
git - Git-「assume-unchanged」と「skip-worktree」の違い
リポジトリにコミットしたくないファイルにローカルな変更があります。サーバー上でアプリケーションを構築するための構成ファイルですが、異なる設定でローカルに構築したいと思います。当然、ステージングするものとして「git status」を実行すると、ファイルは常に表示されます。この特定の変更を非表示にし、コミットしないようにします。ファイルに他の変更を加えることはありません。
明確にするために、.gitignoreを使用することは、新しいファイルが追加されるのを防ぐだけなので、私が望んでいることではありません。すでにリポジトリにあるファイルへの変更を無視したい。
少し掘り下げてみると、2つのオプションがあります:assume-unchanged
とskip-worktree
。ここでの前の質問はそれらについて話しますが、実際にはそれらの違いを説明していません。
2つのコマンドはどのように異なりますか?なぜ誰かがどちらかを使用するのでしょうか?
git - git diff中にファイル(または少なくともファイルのセクション)をステージングできますか?
git diff
ファイルをステージングする前に、すべてが正常であることを確認するためにを実行するのが好きです。差分を垂直方向にトラバースしている間、ステージングに「OK」である各ファイルのメンタルノートを作成します。特に長いdiffの場合、どれがOKかを追跡するのが難しいので、間隔を置いてdiffを終了し、できる限りステージングする傾向があります。これは少し面倒になります。
このワークフローを改善する方法はありますか?明らかに、そもそも差分を大きくするべきではありませんが、そのように機能しない場合があります(たとえば、多くのファイルで呼び出されるメソッドのメソッドシグネチャを変更するなど)。
たとえば、現在アクティブなgit diff
「セッション」の「トップ」から現在のdiffの現在のポイントまで、すべてをステージングすることは可能ですか?このようにして、diffを終了したり、思考の流れを失ったりすることなく、ステージングを続けることができました。
git - git バグがマージを妨げる
どうすれgit bisect
ば git バグを修正したり、git インデックスを復元したりできますか。最初にエラー メッセージが表示され、次に以下の修正に失敗しました
GIT_MERGE_VERBOSITY=5 で実行するgit merge origin master
と...
git reset --hard
動作しません (その後のマージはまだ失敗します)。- いずれかの方向 (master -> mybranch または mybranch -> weather) でマージすると、同じ BUG が発生します。
- 問題のあるファイルは作業ディレクトリには存在しませんが、master の関連する空のディレクトリ ( ) は、およびted
edb/migrations.broken/
を使用した master のチェックアウトで削除されました(しかし、明らかに git はインデックスに変更を記録しませんでした)修正rm -f
git commit
- 喜びがない
git update-index --force-remove --unmerged --really-refresh --again --remove
git - git:スキップワークツリーファイルをリストする非推奨の方法?
インターネットgit ls-files -v
では、skip-worktree としてマークされたファイルを探すことを推奨しています。
-v
flag of のドキュメントには、「半非推奨」git-ls-files
の flag に似ていると書かれています。-t
スキップワークツリーファイルを探す非推奨の (および/またはスクリプト可能な) 方法はありますか?
git - git update-index --assume-unchanged を元に戻す
次のコマンドを実行して、特定のディレクトリ/ファイルの監視/追跡を無視しました。
これを元に戻すにはどうすればよい<file>
ですか?
git - 変更されたファイルを git インデックスから削除し、単一のステップで変更を破棄するにはどうすればよいですか?
私は最近、間違ったブランチに対してずさんな大きなコミットを実行しました。私は、コミットされた変更を別のブランチに置き、大きなコミットをいくつかの小さなコミットに分割することにしました。この回答git cherry-pick -n
で示されているように実行しました。これにより、現在のブランチに一連の段階的な変更が行われました。これらの変更のいずれも必要ないことはわかっていました。だから私は疑問に思いました: 変更されたファイルをインデックスから削除し、単一のステップで変更を失う方法はありますか? 私が見たほとんどのソリューションでは、 の後に.git reset
git checkout -- path/to/file