[解決済み】現在のブランチの先端がリモートブランチより遅れているため、更新が拒否されました。
質問
私たちのワークフローはこのようなものです。 というブランチがあります。
dev
で到達できる
origin/dev
. 変更を行う際には、devからブランチを作成します。
git checkout -b FixForBug origin/dev
というブランチを作成しました。
FixForBug
を追跡している(という表現が適切だと思います)。
origin/dev
. したがって、もし私が
git pull
から新しい変更を取り込むことになります。
origin/dev
というのは素晴らしいことです。 さて、自分の修正が終わったら、同じ名前のリモートブランチにプッシュします。
まず
origin/dev
を作成し、リベースを行います。
git pull --rebase
そして、その変更を同じ名前のリモートブランチにプッシュします。
git push origin FixForBug
さて、リモートサーバー上にブランチがあるので、その変更を承認してもらい、devブランチにマージしてもらうためにプルリクエストを作成することができます。 しかし
これまで
に何もプッシュしない。
origin/dev
を自分なりに考えてみました。 これはかなり一般的なワークフローだと思います。
を行う。
git push
を実行すると、正常に動作し、リモートブランチが作成されます。 しかし、もし
セカンド
の時間(例えば、コードレビュー中に誰かが問題を指摘したとします)には、次のようなエラーが発生します。
error: failed to push some refs to 'https://github.mydomain.info/Product/product.git'
hint: 現在のブランチの先端がリモートのブランチより遅れているため、更新が拒否されました。リモートの変更を統合してから (たとえば hint: 'git pull ...') 再度プッシュしてください。
詳しくは 'git push --help' の 'ファストフォワードに関する注意' をご覧ください。
しかし、もし私が
git status
の前にいると表示されます。
origin/dev
を1コミット差で実行すると(これは理にかなっている)、ヒントに従って
git pull
というメッセージが表示され、すべてが最新であると表示されます。 I
思う
これは、私が上流のブランチとは異なるブランチにプッシュしているためです。 実行することでこの問題を解決することができます。
git push -f origin FixForBug
この場合、変更をリモートブランチにプッシュし、次のように表示します。 (強制更新) と、すべて 現れる は、リモートブランチでは良好です。
私の質問
なぜ
-f
は、このシナリオで必要なのでしょうか? 通常
強要
それは、あなたが何か間違ったことをしているか、少なくとも標準的な慣習に反することをしているからです。 リモートブランチを混乱させたり、私のものを最終的に開発版にマージする人に迷惑をかけたりしないか......こんなことをしてもいいのでしょうか?
解決方法は?
その
-f
は
は、リベースのために実際に必要です。 リベースを行うたびに強制プッシュを行う必要があります。なぜなら、リモートブランチはあなたのコミットに早送りすることができないからです。その場合
常に
しかし、もし master や dev に強制的にプッシュするのが嫌なら、新しいブランチを作ってそこにプッシュし、マージするか PR を作成すればよいのです。
関連
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] git rebase の取り消し
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] なぜ `--set-upstream` を常に実行する必要があるのですか?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ローカルにない作業がリモートに含まれているため、アップデートが拒否された
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
[解決済み】マージが終了していません(MERGE_HEADは存在します)。
-
[解決済み] "would clobber existing tag "を取り除くには?
-
[解決済み] VSTS Git Fetch Failed with exit code: 128
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] git ls-remote と git ls-remote origin の違い。
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"