Gitブランチを閉じる方法は?


112

だから私はGit + GitHubを使い始めています。

私たちの小さな分散チームでは、各メンバーが、割り当てられた課題/要件ごとに独自のブランチを作成しています。

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

code codecommitcodecommit、等...

そしてpull requestcode-fixupcommitcodecommit...など

そして最後に...プルリクエストが受け付けられます。

ウット。

しかし..今何ですか?(......ぎこちない......)

ローカルの開発マシンでブランチを作成した人はブランチを閉じる必要がありますか?開発者がブランチ `(... -D ...)を削除してからマスターのプル/リフレッシュを実行するよう提案されました。これにより、すべてのブランチコードが取得されます。

うーん...わからない-助けてください:)


16
Gitのブランチは、特定のコミットの単なるラベルです。つまり、基本的に、不要になった場合は、その「ブランチ」(そのコミットの「ラベル」)を削除するだけです。ローカルでは、a git branch Issue#1 -dを実行するだけで、コードは失われません。リポジトリからラベルが削除されるだけです
marc_s

1
@marc_s私はそれから答えを出すことをお勧めします:)
KingCrunch

つまり、@ marc_s-ブランチを見つけたら、標準的な方法でブランチをプッシュし、ブランチをプッシュしました。削除しますか?マージについてはどうですか?
Pure.Krome

@ Pure.Krome少なくとも私は、「プルリクエストが受け入れられる」とは、すでにマージされていることを想定していました。はい、もちろん、に変更を統合しmasterdevelopあなたの開発ブランチが(マージ、リベース(と/スカッシュなし)、...)と命名されているもの、または
KingCrunch

私が「プルリクエストが受け入れられる」と言ったとき..それはどこかで起こります。(つまり、PRされるすべてのコードを承認する担当の開発者...)。私は私のローカル開発マシンでマスターに切り替えて、マージも行うべきかどうか疑問に思っていました。
Pure.Krome

回答:


181

開発者に、ブランチの削除を希望するプルリクエストの状態を要求するように要求します。ほとんどの場合、これが事実です。ブランチが必要な場合があります(別のリリースブランチに変更をコピーするなど)。

私の指は私たちのプロセスを記憶しています:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

ブランチは仕事用です。タグは時間の場所を示します。各ブランチのマージにタグを付けることで、必要に応じてブランチを復活させることができます。ブランチタグは、変更を確認するために数回使用されています。


8
手順に最近変更を加えました。を使用するgit push --tagsと、すべてのタグがダウンロードされます。これにより、ローカルタグを所有することが難しくなります。代わりにgit push origin branch-<feature-branch>、1つのタグのみをプッシュするために使用します。
Bill Door

したがって、最後の行では、<feature-branch>だけでなく、以前に "branch- <feature-branch>"に設定した機能ブランチのタグ名を使用することを忘れないでください。正しい?
プレミアブロマノフ2017年

@PremierBromanov最後の行はリモートブランチを削除するためのものです。@BillDoorが使用したタグを覚えておいてくださいgit push --tags
Deivide

優れたスクリプト!!
Kike Gamboa

41

はい、実行してブランチを削除しますgit push origin :branchname。後で新しい問題を修正するには、マスターから再度分岐します。


3
ローカルブランチではなく、リモートブランチが削除されます。
KingCrunch

5
これが-2で変更される理由はわかりませんが、これが正解です。彼らは間違いなくリモートブランチを持っていますが、他にどのようにそれに対してPRを発行できますか?
Ana Betts

これを実行してからgit pullを実行すると、ローカルブランチも削除されますか?(編集:nm、git remote pruneを実行しない限り、明示的には実行されないようです。)
Tim Keating

1
ブランチ履歴はどうなりますか?
2016年

40

コードを完了した後、最初にブランチをマスターにマージし、次にそのブランチを削除します

git checkout master
git merge <branch-name>
git branch -d <branch-name>

これは自分の開発マシンにありますよね?新しいコードを受け入れる主な人..彼のマシンは別の場所にあります。
Pure.Krome

2
他の誰かがマージをしている場合、彼は通常、別のリモートにブランチポインタを持っています(例:sender / branch-name)。彼はgit remote prune senderあなたがした後にそれを取り除くためにも使う必要があります-ほとんどの場合、彼は気にする必要はありません。
ヨルゲンセン

1
あなたは、あなたがメインツリーでそれを統合するための責任が1でない限り、あなた自身のブランチをマージすることはありません。そうではなく、他の誰かに統合するように依頼した場合は、マスターブランチを新しいリモートコミットで更新します-プルするように要求されたものがすべて含まれているはずです-次にブランチを削除します。これにより、他の人が変更した場合でも問題は発生しません。
ThiefMaster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.