1. ホーム
  2. ギット

[解決済み】gitでブランチを削除すると、履歴から削除されるのでしょうか?

2022-04-10 17:24:29

質問

svn から来て、git に慣れ始めたところです。

git でブランチを削除すると、履歴からも削除されるのですか?

svnでは、削除操作を元に戻す(逆マージ)ことで、簡単にブランチを復元することができます。svnのすべての削除と同様に、ブランチは実際には削除されず、現在のツリーから削除されるだけです。

git の履歴からブランチが実際に削除された場合、そのブランチからマージされた変更はどうなるのでしょうか? それらは保持されるのでしょうか?

解決方法は?

ブランチは、gitにおけるコミットへのポインタに過ぎません。git では、各コミットは完全なソースツリーを持っています。svn では、すべてのブランチとタグは(規約により)リポジトリの別々の「フォルダー」に、特別な「トランク」とともに格納されますが、これは非常に異なる構造になっています。

もしそのブランチが削除される前に別のブランチにマージされていた場合、最初のブランチを削除しても、すべてのコミットは別のブランチから到達可能なままです。そのままの状態で残ります。

他のブランチにマージされずに削除された場合、そのブランチのコミットは (まだ到達可能なコミットからフォークされた時点までの) 表示されなくなります。

コミットはまだリポジトリに保持され、削除後すぐに復元することが可能ですが、最終的にはガベージコレクションされることになります。