2017-02-10 8 views
0

私のVM上のスペースが足りなくなったので古いブランチをクリーンアップする最良の方法は何ですか?gitハウスキーピング - マージされたブランチを削除する

git構造体はdevelopmentをメインブランチとして使用し、git flowを使用して機能が作成されます。定期的に私は開発に切り替えてプルを行い、その後に機能ブランチを展開します。

私はgitの方が新しく、古いブランチを整理して整理していますが、空きがなくなってしまっていますが、リモートリポジトリには何もしたくありません。

私はちょうどいくつかのスペースを解放する必要があります、誰も実際のリモートリポジトリからブランチを削除せずにこれを行う方法を教えてもらえますか?

+0

が、私はそれを見て、それが原点にプッシュ示唆し、私はリモートリポジトリから何かを削除したいいけない、プッシュは何をやっているのですか? – berimbolo

+0

実際には重複しているわけではありません。おそらく、ここで問題を解決するわけではありません。 – Vampire

+0

@berimbolo削除したブランチをプッシュする必要はありません。あなたがしたくなければ、ただそれをしないでください。 – sigy

答えて

2

マージされたブランチを簡単に削除することはできますが、まったく役に立ちません。ブランチはコミットのポインタにすぎず、正確には41バイトを消費します。 (shaと改行文字の場合は40バイト)。ブランチがコミットしていないコミットの参照を保持している場合、ブランチを削除してガベージコレクションを行うとスペースを解放できますが、コミットが別のブランチにマージされているとダングリングされずに残ります。それはまったく助けにならないでしょう。ブランチで多くのリベースを行った場合は、ブランチのreflogはダントルなコミットへの参照を保持している可能性があるため、reflogを発行してガベージコレクションを実行することでスペースを解放できます。詳細については、https://git-scm.com/docs/git-reflogおよびhttps://git-scm.com/docs/git-gcを参照してください。

+0

これはなぜローカルにブランチを削除してからgit pullをやり直すと戻ってくるのでしょうか?私の知る限り、ブランチはリモートから削除されません。 – berimbolo

+0

リモートトラッキングブランチをローカルに削除してプルを実行すると、リモートリポジトリにあるので、すべてのトラッキングブランチを元に戻すことができます。これを変更したい場合は、config内のfetch refspecを変更して、指定したブランチだけをプルする必要があります。 'git fetch --prune'を実行すると、フェッチまたは削除されないブランチはローカルリポジトリから削除されます。後でガベージコレクションをすれば、この方法でスペースを節約できます。 – Vampire

+0

また、パックファイルに緩いオブジェクトファイルをパックするためにリパックを行うこともできます。パックファイルはディスク上のスペースが非常に少なくて済むため、これにより大量のスペースを節約できます。 – Vampire

1

これを試してみてください:

# delete the branches that is merged with develop branch 
$ git chekcout develop 
$ git branch --merged | grep -v '*' | xargs git branch -d 

# delete the branches from local that is deleted in remote 
$ git remote prune origin 
+0

これは実際のリモートリポジトリから何も削除しませんか? – berimbolo

+0

いいえ、あなたのローカルのみをクリーンアップします。 –

+0

そして、スペースを節約するのに本当に役立たないでしょう。 – Vampire

関連する問題