2011-12-23 26 views
88

私はGit + GitHubを使い始めています。Git Branchを閉鎖するにはどうすればいいですか?

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

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

code codecommitcodecommit、...その後

pull requestcode-fixupcommitcodecommit ...など

と最後に...プルリクエストが受け入れられました。

Woot。

でも今は何ですか? (......厄介な......)

ローカルのdevマシンでブランチを作成した人は、ブランチを閉じる必要がありますか?デベロッパーがブランチを削除することを提案しました。(... -D ...)そして、マスターのプル/リフレッシュを行い、すべてのブランチコードを取得します。

Hmmmmm ...わからない - 助けてください:)

+14

Gitのブランチは、特定のコミットのラベルに過ぎないので、基本的にはもう必要ない場合は、その "ブランチ"(コミットの "ラベル")を削除してください。ローカルでは、 'git branch Issue#1 -d'を実行してください。コードが失われることはありません。リポジトリからラベルが削除されます。 –

+1

@marc_s私はちょうどそれから答えを出すことをお勧めします:) – KingCrunch

+0

So @ marc_s - あなたは一度あなたのブランチをfinsihedし、ブランチがプッシュされている標準的な練習を言っている..我々はそれを削除する?マージはどうですか? –

答えて

152

そのブランチを削除し、その後マスターするブランチをマージします。ほとんどの場合、これが当てはまります。ブランチが必要な時があります(例えば、変更を別のリリースブランチにコピーするなど)。

私の指は私たちのプロセスを覚えている:

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> 

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

+7

最近、手続きを変更しました。 'git push --tags'を使うと、重い手で全てのタグをダウンロードします。これはあなた自身のローカルタグであることを困難にします。代わりに 'git push origin branch- 'を使って1つのタグだけをプッシュします。 –

+0

最後の行では、ではなく、以前に "branch- "に設定したフィーチャーブランチのタグ名を使用することを忘れないでください。正しい? –

+0

@PremierBromanov最後の行は、リモートブランチを削除するための行です。 @BillDoorタグが 'git push --tags'を使っていることを忘れないでください。 – Deivide

37

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

+3

これはローカルブランチではなくリモートブランチを削除します。 – KingCrunch

+3

なぜ-2で修正されたのか分かりませんが、これは正解です。彼らは間違いなく離れた枝を持っています、それ以外に彼らはそれに対してPRを発行することができますか? –

+1

@PaulBetts私は同意します。私もそれを投票した。 – gilligan

34

完了した後のコードでは、最初に私たちは、開発者は、彼らが削除されたブランチをたいとプル要求の状態を求めていることを要求

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

これは私自身のdevマシンにありますか?新しいコードを受け入れる主人公。彼のマシンは他の場所にあります。 –

+2

他の誰かがマージを行っている場合、彼は通常、別のリモートにブランチポインタを持っています。送信者/ブランチ名。彼はあなたがした後にそれを取り除くために 'git remote prune sender'を使う必要があります - ほとんどの場合、彼は気にする必要はありません。 –

+1

*メインツリーに統合する責任がある場合を除いて、自分のブランチをマージするべきではありません。あなたがいなくて、他の人にそれを統合するよう依頼された場合は、マスターブランチを新しいリモートコミットで更新します - あなたが引き出しを要求したものを含むべきです - そしてブランチを削除します。これにより、他の人が物事を変えた場合には問題は生じません。 – ThiefMaster

関連する問題