2017-10-26 3 views
0

リモートブランチがある場合、My_Remote_Branchが最終的にPRでマスターにマージされます。そしてブランチは私だけが働いているので、git pushの起点を作るのは危険ですか?My_Remote_Branch -fgit push origin -f remote_branchを隔離されたブランチに置き換えます。

+1

あなたがこのブランチで作業している場合(共有されていない場合) - 危険ではありません。とにかくリベースやスカッシュをする場合は、実際には強制的にプッシュする必要があります。 – Alexan

+0

危険性なし。しかし、(あなたが自分の仕事を、別のコンピュータから上書きするようなまれなシナリオを防ぐために)ちょっとしたことで、 '' --force-with-lease'(http:// weiqingtoh.github.io/force-with-lease/) – JDB

+0

@Alexan私はいつもリベースしますが、まれにしか私はちょうど-fを押しません。ありがとう=) –

答えて

1

"危険"は相対的な用語です。人々はおよそ--force危ないという話を何

、彼らはあなたが簡単に終わることができる2つの異なるシナリオを参照している:あなたの分岐履歴が効果的にリモートにいくつかのコミット、そのため、あなたのプッシュが含まれていません

  1. その仕事を削除します。

  2. リベースの場合、またはcommit --amendの場合は、コミットハッシュIDを変更して、古いコミットに基づいて作成された他のブランチの混乱を作成します。

ブランチで作業している唯一の人は、問題#2は多分懸念されません。唯一の本当の問題は、複数のrepos(複数のマシン、またはマシン上の異なる場所にある複数の完全なrepos)から作業している場合です。その場合、あなた自身の仕事を上書きする可能性が稀にあります。

幸運なことに、#1の簡単な解決策は--force-with-leaseです(私の意見では、これは本当にデフォルトのオプションになります)。リモートブランチが元のブランチと一致しない場合は、これによりリポジトリにプッシュすることができなくなります。基本的には、あなたが知らなかった変更を上書きしたり、忘れたりするのを防ぐのに役立ちます。

残念ながら、--force-with-leaseは、問題#2に役立たないため、銀色の弾丸ではありません。他の開発者がブランチを使用しているか支店を構えている公開ブランチで作業している場合は、できるだけpush --forceを避ける必要があります。それが何らかの理由で必要と判断された場合は、誰もが驚かされることがないように、すべての人と調整する必要があります。

0

いいえ、特に危険はありません。

まず、あなたが押して歴史を「本当に」失うのは不可能です。 gitコマンドは実際にはコミットを破壊したり上書きしたりすることはありません(ガベージコレクションとは別に明らかに...)。そして、失われたものを見つけるためにgit reflogのようなメカニズムがあります。

git push -fの本当の危険は、他の協力者、特によく知られているチーム構造がないオープンソースソフトウェアのようなゆるやかなコラボレーションに多くの時間を浪費していることです。しかし、何もないので、あなたはそれをするのがぴったりです。

関連する問題