2017-12-27 14 views
0

AWS Code Commitには現在masterfeaturesのブランチがあります。私は、プロジェクトのためのより多くのブランチを作成する必要があります。Gitブランチ削除[AWS Code Commit]

新しいui-improvementブランチを作成して数日後に、ブランチをローカルおよびリモートで削除したとします。その後、使用する前に同じブランチ名を作成することは可能ですかui-improvement

答えて

3

gitはブランチ名を再使用するかどうか気にしませんが、実際には潜在的な影響はありません。 dr:あなたがからあなたのローカルとリモートからそれを削除したからといって、すべてのリポジトリから削除されたわけではありません。

なぜそれを行うことができます: gitに分岐するにはrefです。つまり、コミットへのポインタの名前です。 refを削除すると、gitは特定の名前が以前に使われたという事実を追跡しようとしません。 (実際には、分岐のためにもREFLOGは、おそらくまともな理由を持っていますが、不幸な方法である、廃棄されます。)

なぜあなたはおそらくないでください。どのような分岐に関する特別なのは、彼らが期待されていることである、引用文献の中で、移動するには、のデフォルトルールがあります。どのように移動することが期待されています。 (これは、タグのようなrefとは対照的に、通常はではなく、となります)。

具体的には、新しいコミットが作成されると、ブランチは親から子に移動することが予想されます。 2つの異なる瞬間のそれぞれに、指定された名前のブランチが存在する場合、それがより早い時点で指し示したコミットは、後で指すコミットから(親ポインタによって)「到達可能」であると予想されます。

ブランチのすべてのトレースを削除した場合(ローカルおよびリモートから削除した場合)、ブランチ名を再利用するだけで十分なようです。しかし、あなたは分散型のバージョン管理システムを使用しているので、遠隔地を持っているので、少なくともあなたのリモートのクローンだけではない可能性があります。

プロジェクトを開始するとします。

A -- B -- C <--(master) 

、あなたは

A -- B -- C <--(master) 
     \ 
     D -- E <--(fixes) 

ブランチを作成し、あなたが原点にこれをプッシュしたし、他の開発者が自分の地元にこのすべてを引っ張っています。そこで、彼らは

A -- B -- C <--(master)(origin/master) 
     \ 
     D -- E <--(fixes)(origin/fixes) 

は今、あなたは仕事を続けていると、すぐには

   H -- I <--(a_branch) 
      /
A -- B -- C ------------ M<--(master) 
     \    /
     D -- E -- F -- G <--(fixes) 

を持っており、すべての枝のみが前進しているため、これまでのところそれは、すべての良いことです。他の開発者が引っ張って最新の状態です。

   H -- I <--(a_branch)(origin/a_branch) 
      /
A -- B -- C ------------ M<--(master)(origin/master) 
     \    /
     D -- E -- F -- G <--(fixes)(origin/fixes) 

これで、fixesはマージされているので削除されました。 a_branchに何かが表示されるので、新しいfixesブランチが必要と判断します。

    K <--(fixes) 
       /
      H -- I <--(a_branch) 
      /
A -- B -- C ------------ M<--(master) 
     \    /
     D -- E -- F -- G 

だから、他のdevがフェッチし、今

    K <--(origin/fixes) 
       /
      H -- I <--(a_branch)(origin/a_branch) 
      /
A -- B -- C ------------ M <--(master)(origin_master) 
     \    /
     D -- E -- F -- G <--(fixes) 

を持っており、今、ビューの彼らのレポの観点から、fixes分岐が予期しない方法で移動しているようです。これは修正するのが難しいことではありませんが、エラーの中で最も「明白な」方法は間違っており、奇妙な結果を引き起こします。迷惑で、ワークフローはこの条件を日常的に作成すべきではありません。

1

はい、新しいブランチ(すでに削除されたブランチ名 - ローカルとリモートの両方で削除)で同じブランチ名を使用することは可能です。

以前にマージで消去されたブランチを使用した場合でも、ブランチが消去されると、名前の競合は発生しません。

+0

ありがとうLeonardo! – aliyasar

+0

ようこそ。私は助けることができてうれしいです。それがあなたの問題を解決するなら、あなたは答えを受け入れることができます:) –

関連する問題