ローカルブランチを削除した後の警告メッセージをよりよく理解したいだけです
'old_branch'
警告:にマージされているが'refs/remotes/origin/old_branch'
、まだ にマージされていないブランチを削除していHEAD
ます。
ローカルブランチを削除した後の警告メッセージをよりよく理解したいだけです
'old_branch'
警告:にマージされているが'refs/remotes/origin/old_branch'
、まだ にマージされていないブランチを削除していHEAD
ます。
これは、 のブランチにプッシュされた変更があることを警告しているだけですがorigin
、それらは現在チェックアウトされているブランチにマージされていないため、ローカルでのみ削除しています。
そのブランチのローカル コピーはもうないことを警告していますが、存在します。origin
リモートブランチも削除したい場合は、git push --delete origin old_branch
master
現在チェックアウトしていると仮定すると、 で行った変更が にold_branch
存在しないことを意味しますmaster
。ただし、それらはold_branch
on に存在しorigin
ます。
これは、ローカル ブランチがリモートのリモート ブランチでold_branch
最新であることを意味しますが、リポジトリのメイン ブランチと見なされるブランチにはマージされません。old_branch
origin
master
これは git からの単なる予防措置です。ヒントが得られます: トピック ブランチで作業を行い、それをメイン ブランチにマージするのを忘れたのではないでしょうか?
アップデート
Git は、変更が失われないように警告します。たとえばold_branch
、マスター git がない場合は、マスターにマージされていないブランチを削除することさえ許可しないでください (許可されますが、キー-D
はforce-delete
オプションです)。
他の回答に追加すると、これは変更がマスターにマージされる可能性があることも意味しますが、マスターのローカルコピーにはまだ反映されていません。どちらの方法でも、これは、マスターのローカル コピーに、オリジンにプッシュした変更がないことを通知するだけです。マージされた/マージされていない...多分、多分ない
ここでのいくつかの回答は完全に正しいですが、質問を完全に解決していないようです。ということで、また挑戦してみます。
プル リクエストを実行し、GitHub/Bitbucket/etc のブランチを削除した後。PR を完了することによって自動的に、ブランチをローカルで削除すると、次のエラーが表示されます。
warning: deleting branch 'old_branch' that has been merged to 'refs/remotes/origin/old_branch', but not yet merged to HEAD.
GitHub やその他のリモート リポジトリは、マシンのローカル状態を把握していません。
プル リクエストが完了し、元の PR ブランチを削除するよう提案された場合、ローカル ブランチは認識されません。
この時点で、ローカル ブランチを削除します。あなたのローカルレポ/コンピュータはこのタイムラインを知っています:
myfeature
==> origin/myfeature
(myfeature
リモートリポジトリにプッシュされました)myfeature
削除されますorigin/myfeature
表現がなくてもまだ存在しますもちろん、origin/myfeature
PR が完了したときにブランチが破棄されたため、これは正しくありませんが、ローカル コンピューターはこれを認識していません。そのため、Git は警告を表示します。
なぜなら
PR 完了 ==> リモート ブランチが削除されました
パラダイムは非常に一般的です。おそらく、リモート ブランチがローカル ブランチにこの発生を何らかの方法で通知した場合に便利です。しかし、Git は、情報を要求するだけで要求されていない情報を送信しない「一方向通信」で非常にうまく機能しています。ある領域での「双方向」通信は、人々が他の領域でもそれを望むようになる可能性が高く、すぐに Git に戻り、SVN や他の「中央リポジトリ」パラダイムのように見えるようになりました。私よりもよく知っている人なら、この「双方向通信」が引き起こすすべての問題をより詳しく説明できるでしょう。