ブランチをマージした後に削除する必要がありますか?


94

ブランチをマージした後、リポジトリから削除しますか?
しかし、それは良い習慣かどうか?

現在のリリースを壊したくないので、私は通常たくさんのブランチを作成します、そして私は物事を整理するためにそれらを削除したいと思います。
ただし、AssemblaまたはGitHubを使用している場合、古いブランチからのマージリクエストはサイトに保存されるため、それらを削除すると、それらをフェッチできないため、エラーが発生します...

通常、それをどのように管理しますか?

回答:


72

マージされたブランチを削除しても問題はありません。すべてのコミットは履歴で引き続き利用可能であり、GitHubインターフェースでも表示されます(たとえば、私が持っているフォークを参照するこのPRを参照してください)。 PRが承認された後に削除されました)。


あなたは、すべてのコミットがまだ履歴で利用可能であると言いました。github.comでプロジェクトを表示すると、これが正しいことがわかります。ただし、Mac用のGithubデスクトップアプリでは、マージされたブランチのコミット履歴を表示できなくなったようです。私は間違っていますか?
peacetype 2015

gitクライアントを使用していない場合、特にGUIを使用していない場合は、ブランチがあるとログをよく理解するのに役立つ可能性があることを付け加えておきます。つまり、表示するgithub / gitlab / other guiがないため、ブランチ名を保持すると、コミット履歴に加えて履歴を参照する簡単な場所を確保できます。そうしないと、ブランチを削除すると失われます。この最後のステートメントが間違っているかどうか誰かが私に知らせてください。
Raj 2016年

@Rajは、Merge branch fix-foo-barコミットメッセージの形ですでにそれを持っています。試してからgit log --grep="Merge branch"、を介して関心のある独自のアンカーをドロップしますgit checkout -b curious-change。また、ブランチを削除しても何も失われません-単なる「ブランチ名→commithash」ポインタを除いて(これはブランチが実際に何であるかであり、ローカルまたはリモートに関係ありません)。
ulidtko

@ fred-fooそれが良い習慣であるかどうかという質問には答えられません。(私は同じ質問があります)
Esger

27

ブランチがマージされた後、私は間違いなくブランチをクリーンアップします。

GitLabを使用してリクエストをマージするため、ブランチに関する履歴情報がそこに保存されます。私は彼らが私のブランチリストを乱雑にする必要はありません、そして私が同僚のフォークを見るとき、理想的には彼らの現在活発な開発のブランチだけを見たいです。ブランチ上のコードを調べようとしている場合は、現在アクティブなブランチのいくつかだけを調べて、これまでに作業を開始したすべての機能や修正を調べられるようにしたいと思います。

上記はBitBucketとGitHubにも当てはまります。

マージ後にブランチを削除しない唯一の理由は、特定の機能がどこで終了したかを知るためですが、マージコミット(およびgit merge --no-ff本当に必要な場合)はそれを無関係にします。


3
どうやらGitHubは常に--no-ffを実行するので、そのような状況でもこれがブランチであったという事実を失うことはありません。
joeytwiddle 2014

7
@joeytwiddle:GitHub独自のインターフェースを使用してブランチをマージしていると仮定すると、そうです!
アシェラ2014


0

明確にするために、gitの観点からは、ブランチはコミットへのリンクにすぎません。ブランチを削除しても、gitリポジトリからコミットは削除されません。もちろん、デタッチされたコミットは、しばらくするとgitガベージコレクターを介してクリーンアップされます。

参考:私たちは通常、ビットバケットインターフェイスを介してブランチをマスターにマージしています。そこでdelete feature branch after mergeフラグを設定できます。

古すぎるブランチを処理する必要がある場合は、いくつかのユーティリティ、たとえばこのユーティリティを探すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.