web-dev-qa-db-ja.com

Gitブランチの削除

Gitでは、ブランチの「削除」とはどういう意味ですか?

リポジトリから削除されますか?または、git branchを介して引き続きナビゲートできますか?

私が本当にやりたいことは、ブランチを「行き止まり」としてマークすることです。つまり、ブランチはマスターから遠く離れているため、誰も出発点としてそれを使用するべきではありません。参考のために保管してください。

77
bobobobo

ブランチを削除できますが、最初にタグを付けて、履歴が消えないようにします。この方法では、ブランチリストにブランチが表示されないため、人々が作業するのを思いとどまらせることができますが、作業は永久に消去されません(ガベージコレクションが実行された後でも)。たとえば、無関係になったブランチがあり、それを永久に削除する準備ができていないときはいつでも、「archive/<branch-name>」としてタグ付けします。

masterまたは他のブランチで:

git tag archive/foo foo
git branch -D foo

fooを削除する前に、fooブランチからarchive/fooという名前のタグを作成します。タグにメッセージを追加することもできます。このメッセージは、ブランチ内の内容、なぜ存在したのか、今では行き止まりになっている理由などを説明します。

git tag -m 'Foo is deprecated in favor of bar' archive/foo foo

ブランチが非推奨になっている理由を記録する機能は、おそらくブランチを代替ネームスペースに移動するよりもタグ付けする方が有利です。

この方法でアーカイブされたブランチを復活させる必要がある場合、それは次のように簡単です:

git branch foo archive/foo
git tag -d archive/foo       # Optional

これで、ブランチは削除されなかったかのように戻ります。

154
Dan Moulding

Gitブランチは、リビジョンへの参照として保存されます。ブランチを削除すると、参照は削除されます。そのリビジョンを参照するものが他にない場合、最終的にガベージコレクションされます。また、ブランチを削除すると、(リポジトリから)適切に削除されます。ブランチを非推奨としてマークし、後で使用するために保持したい場合は、ブランチをサブディレクトリに移動できます。

$ git branch
* master
  testing_feature_one
  testing_feature_two
$ git branch -m testing_feature_one deprecated/testing_feature_one
$ git branch
  deprecated/testing_feature_one
* master
  testing_feature_two

または、廃止されたブランチ用に個別のリポジトリを作成し、それらをプルしてから元のブランチから削除することもできます。どちらの場合でも、ブランチをフォローしているユーザーに影響を与えます-リポジトリのコンテンツは変更されません(ブランチ名も変更されません)が、再度プルしようとすると、構成内のターゲットを変更する必要があります。

2
Andrew Aylett

git branch -D <branchName>はリポジトリからブランチを削除します。これを表示したり、移動したりすることはできなくなります。また、そのブランチで行われたすべてのファイル変更は失われます。

https://git-scm.com/docs/git-branch

2
Stewie Griffin

Gitブランチを介して移動することはできず、ガベージコレクションが実行されるまで、リポジトリから失われることはありません。

問題のブランチを行き止まりとしてマークしたい場合は、単にそうします(gitはこれをしないかもしれませんが、確かにできます)!

歴史的な参考資料としてのラベル付け(任意の方法で).