問題タブ [git-plumbing]
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 rebase」はどのように機能しますか?
私は最近、いくつかのタスクを自動化する目的で、作業ディレクトリを変更せずにコミットを構築するために、git ツリーと一時インデックス ファイルを使用し始めました。最終的な目標は、いくつかのブランチを効果的にリベースすることです (たとえばfeature/x_y_z、 の上にmain)。ただし、作業ディレクトリを変更する必要はありません。明らかに、私はまだ競合を検出したいと思っていmainますgit commit-tree。本の「Git Internals」の章を読みました。これは、ツリー、ブロブ、インデックスなどに関して非常に教育的でしたが、リベースがどのように機能するかを明示的に説明していませんでした。
(余談: これの動機は、1)はるかに高速であること、および 2) 開発者が、作業ディレクトリを壊すことなく、最新の正規の変更を使用して、コミット/ブランチのテストをすばやく開始できるようにしたいことです。)
git rebaseそのために、ボンネットの下でどのように機能しますか? どの配管コマンドを使用しますか? 競合を検出するためにツリーをどのように分析しますか? 有用なソースへのリンク、および/またはこれらのことの直接的な説明は非常に役立ちます.
git - フェッチに含まれなくなったリモート ブランチのローカルでのみ削除
たとえば、次のブランチがあります。
- メイン -> 追跡元/メイン
- feature/f1 -> 追跡元/feature/f1
- feature/f2 -> 追跡 origin/feature/f2 および .gitconfig 内
今は機能ブランチのみを表示したいので、.gitconfig を次のように更新します。
リモートサーバーで削除せずに、ローカルに保存されたメインブランチを削除する方法はありますか?
git - `git update-ref -d` が空の親ディレクトリを削除しないのはなぜですか?
git にはさまざまなタイプの ref があり、最も一般的なのはブランチ ( に格納されている.git/refs/heads)、リモート追跡ブランチ ( .git/refs/remotes)、およびタグ ( .git/refs/tags) です。
しかし、他の場所に存在する任意の非標準参照を作成して使用することも可能.git/refsです。これは、ユーザーが直接操作する必要のないカスタム メタデータをリポジトリに格納する場合に役立ちます。たとえば、GitHub はこれらの種類の参照を使用してプル リクエスト ブランチへの参照を公開し、Emacs git クライアントMagitはそれらを使用して、適切な設定が有効になっている場合にコミットされていない変更を定期的に保存します。このような参照は、通常、いわゆる git の「配管」コマンドを使用して操作する必要があります。これは、ユーザー向けの「磁器」コマンドがそれらを認識していないか、サポートしていないためです。
配管コマンドを使用して非標準の参照をいじっていたgit update-refところ、奇妙な動作が見つかりました。
ref を作成したときにrefs/foo/bar/baz、git update-ref必要な親ディレクトリを作成しました。barref を削除したとき、空になった親ディレクトリを削除するのは賢明でした。fooただし、削除後に空になった「祖父母」ディレクトリを削除するほど賢くありませんでしたbar。
これはバグですか?