0

Git リポジトリのコミット履歴全体のファイル テキスト ( to ) を置き換えるために、git を使用して多くの履歴を効率的に書き換え (rebase -i) ました。動作しますが、古いコミット履歴がまだ表示されています。Copyright <author>Copyright <company>

以下のスクリーンショットでは、青いブランチの「新しい」履歴が、紫色のブランチの不要な「古い」履歴の後に続きます。「古い」履歴を取り除くにはどうすればよいですか? (なぜそれが 1 つの連続した履歴に「マージ」されないのか、私は圧倒されます!

<code>git filter-branch</code> コマンドの後

4

3 に答える 3

1

その GUI は Atlassian の SourceTree です。そしてそれは正しかった。問題は、「古い履歴」を参照する他のブランチとタグがあったことです。だから自然にくっつきます!

バック・トゥ・ザ・フューチャーの観点から考えてみてください:)

したがって、「歴史を書き換えることはできない」というのは部分的に正しいですが、それはあなたの見方次第です。

ドク・ブラウン:明らかに時間の連続体が崩壊し、新しい一連の時間的イベントが作成され、この代替現実がもたらされました。

マーティ:イングリッシュ、ドク!

ドク・ブラウン:こちらです。ここで、デモンストレーションしましょう。この線が時間を表しているとしましょう。[直線を引いて場所を指す] 1985年の現在、未来、そして過去。明らかに、過去のどこかでタイムラインがこの接線 (枝) に歪められて [新しい線を引いて 1985A と書きます] 代わりの 1985 (マスター) を作成しました。あなた、私、そしてアインシュタインに代わるものですが、他のすべての人にとっての現実です。これを認識しますか?[Blast from the Past バッグ (タグ) を表示] スポーツブックが入っていたバッグです。レシート(タグ)が残っていたのでわかります。タイムマシンで見つけた…これと一緒に!(その他のタグ)

わーい!Git は BTTF です。

教訓: 参照を削除すると、存在しなくなります!

于 2013-03-11T19:33:11.700 に答える
0

git 履歴を書き換えることはできません。これは権限の問題ではありません。誰もそれを実装することを拒否していません。それは単に実行できないことです。コミット ID は、その特定のコミットの一意の名前です。内容、履歴、または説明のどこかが変更されたために、コミットが異なると、ID が異なります。「マスター」タグ (ブランチは、git が暗黙の親として使用し、git checkout何か新しいものをコミットすると更新される単なるタグです) は、リベースで作成した新しい履歴を参照するようになりました (編集: err、filter-branch で可能性が高い)ここ)。あなたの「svn/trunk」タグはまだ元の履歴を参照しています。レポの svn/trunk を忘れたい場合は、git branch -d svn/trunk.

于 2013-03-11T17:27:00.497 に答える