問題タブ [git-dangling]
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リポジトリがありますが、git show
それらを含むブランチを一覧表示しようとすると、何も報告されません。
これは(-Dブランチの結果として)ぶら下がっているコミット/ツリーの問題だと思ったので、リポジトリをプルーニングしましたが、その後も同じ動作が見られます:
出力なし、ぶら下がっているものはありません(右?)。しかし、コミットは存在します
そしてそれはどのブランチからも到達できません
出力はありません。
そのコミットの状態は正確には何ですか?同様の状態のすべてのコミットを一覧表示するにはどうすればよいですか?そのようなコミットを削除するにはどうすればよいですか?
git - GitHubからぶら下がっているコミットを削除するにはどうすればよいですか?
昨日、GitHubのConnectBotのフォークにプッシュしました。私は一度プッシュし、自分が望むように変更を加えていないことに気づき、コミットをやり直して、もう一度プッシュしました。
現在、GitHubには両方のコミットがあります。
- https://github.com/nylen/connectbot/commit/1cd775d –最初の「悪い」コミット
- https://github.com/nylen/connectbot/commit/987671c –保持したいもの
私のマスターブランチは2番目のコミットのみを追跡していますが、最初のコミットは引き続き使用可能であり、アクティビティフィードに残っています。修正されたバージョンではなく、誤ってそのコミットをプルしないようにするには、どうすれば削除できますか?
git - git: ぶら下がりブロブ
最近git fsck --lost-found
、リポジトリで実行しました。
リセットしたところに、ぶら下がっているコミットがいくつかあると予想していましたHEAD
。
しかし、おそらく数千を超えるぶら下がっている blob メッセージを見て驚いた.
リポジトリに問題があるとは思いませんが、これらのぶら下がっているブロブの原因は何ですか? リポジトリの作業を行っているのは 2 人だけで、特別なことは何もしていません。
古いバージョンのファイルが新しいファイルに置き換えられて作成されたとは思いません。履歴を表示できるように、git は両方の blob を保持する必要があるからです。
考えてみると、ある時点で、非常に大きなディレクトリ (数千のファイル) を誤ってプロジェクトに追加してから削除してしまいました。これがすべてのぶら下がりブロブの原因ではないでしょうか?
この謎への洞察を探しているだけです。
git - Git では、ダングリング コミットとダングリング BLOB の違いは何ですか?
を実行するgit fsck
と、ダングリング オブジェクトのリストが表示されます。これらのいくつかはダングリング コミットと呼ばれ、他のものはダングリング BLOB と呼ばれます。この2つの違いは一体何なのか気になりました。
git - Gitでダングリングブロブをファイル名と一致させる方法は?
git rm -rf
最初のコミットなしで実行する別の例があります。(役に立たないファイルをたくさん追加したことに気づき、いくつかのフィルターを追加したいと思いました。)
これで、ツリーのない 23000 個のぶら下がりブロブが残っていますが、完全な Git 履歴が残っています!
スクリプトを使用して ( を使用して) blobnames をループしますが、git show 'blobname' > 'filename'
これらのファイル名を履歴から blob に関連付けることはできますか?
git - Git リポジトリのダングリング コミットと BLOB とは何ですか? また、それらはどこから来るのですか?
ダングリング コミットとブロブに関する基本的な情報を探しています。
私のリポジトリは問題ないようです。しかし、私はgit fsck
それが何をしたかを確認するために初めて実行し、「ぶら下がっているブロブ」と単一の「ぶら下がっているコミット」の長いリストを持っています。
これらは何ですか?彼らはどこから来ましたか?それらは私のリポジトリの状態について異常な (良いまたは悪い) ことを示していますか?
git - git: これらのダングリング コミットはありますか?
最後に、SourceTree ブランチ ツリー ビューから抽出したスクリーンショットを示します (スクリーンショットの中央にギャップがあります)。
その中で、 は#1
かつて分岐していた行を1.7.6.14.X
指し#2
、同じ分岐の現在の状態を指します。
によって参照されたコミットと#3
、その行の前の 8 つのコミットは、以前は branch に関連付けられていました1.7.6.14.X
。その後、別の開発者が同じブランチをチェックアウトし、 で指摘された修正を行ったと思われます#4
。この#4
コミットにより、以前の 9 つのコミットがブランチから削除され、1.7.6.14.X
ぶら下がったままになりました。
その結果、ブランチ1.7.6.14.X
は commit から拡張するのではなく、元の分岐点から開始するようになり#3
ました。
などで実行git fsck
し--unreachable
て--dangling
もエラーは発生しません。私もやってみ--lost-found
ました。
ただし、git fsck <hash of commit #3>
5 つの未解決コミットと多数の未解決タグが生成されます。
2 つの質問があります。
何がこの状況を引き起こした可能性がありますか (ブランチ
#1
が切り離されたなど)?他のリポジトリに同様の問題があるかどうかを検出するにはどうすればよいですか? (などの切り離されたコミットのハッシュを知る必要はありません
#3
)
更新:
質問 (1) に対する答えが見つかりました。この状況は、ブランチの古いスナップショットを持っていた開発者による、中央のベア リポジトリへの強制プッシュによって引き起こされました。