[解決済み] git push" でリモートファイルを強制的に上書きする
質問
私は自分のローカルファイルをプッシュし、マージコンフリクトに対処することなく、リモートリポにそれらを持ちたいと思います。私のローカルバージョンをリモートバージョンより優先させたいだけです。
Gitでこれを行うにはどうしたらよいでしょうか?
どのように解決するのですか?
を使用して、ローカルリビジョンをリモートリポジトリに強制することができるはずです。
git push -f <remote> <branch>
(例
git push -f origin master
). を省く
<remote>
と
<branch>
を設定したローカルブランチはすべて強制的にプッシュされます。
--set-upstream
.
ただ、他の人がこのリポジトリを共有している場合、彼らのリビジョン履歴は新しいものと衝突することに注意してください。そして、もし彼らが変更点以降のローカルコミットを持っていれば、それらは無効となります。
更新情報 : 余談を付け加えておこうと思いました。他の人がレビューするような変更を加える場合、その変更を含むブランチを作成し、定期的にリベースしてメインの開発ブランチと最新の状態に保つことは珍しいことではありません。他の開発者に、このようなことが定期的に起こることを伝えておけば、何を期待すればいいのかがわかるでしょう。
アップデート2
: 視聴者が増えてきたため、あなたの
upstream
は、フォースプッシュが発生します。
あなたのレポをクローンして、こんな風にいくつかのコミットを追加したとします。
D-----Eトピック / A----B----C 開発
しかし、後に
development
ブランチがヒットします。
rebase
を実行すると、このようなエラーが発生します。
git pull
:
オブジェクトを解凍します。100% (3/3), 完了しました。 レポロケーションから。 * ブランチ開発 -> FETCH_HEAD 自動結合 <ファイル> CONFLICT (内容)。<locations> のマージが競合しています。 自動マージに失敗しました。競合を修正し、結果をコミットしてください。
ここでは、コンフリクトを修正し
commit
しかし、そうするとコミット履歴がとても醜くなります。
C----D----E----F のトピック / / A----B--------------C' development
を使うのは魅力的に見えるかもしれません。
git pull --force
が、そうするとコミットが滞留してしまうので注意が必要です。
D-----Eトピック A-----B-----C」開発
ですから、おそらく最良の選択肢は
git pull --rebase
. この場合、以前のようにコンフリクトを解決する必要がありますが、コミットする代わりに各ステップで
git rebase --continue
. 最終的には、コミット履歴がより良く見えるようになります。
D'---E'トピック / A----B----C' 開発
アップデート3:
また
--force-with-lease
オプションは、quot;safety" 強制的に
を押してください。
でCupcakeが言及しているように
回答
:
リースを使った強制プッシュは、以下のような場合に失敗する可能性があります。 が予想外のリモートの新規コミットであった場合(厳密には リモート追跡ブランチにまだ取り込んでいない場合)、これは を誤って上書きしたくない場合に便利です。 のコミットについてまだ知らないので、単に を上書きしてください。
git push <remote> <branch> --force-with-lease
の使用方法について、より詳しく知ることができます。
--force-with-lease
によって のいずれかをお読みください。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git を使ってタグをリモートリポジトリにプッシュするには?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
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, fatal: リモートエンドが予期せずハングアップしました。
-
[解決済み】Git:コミットに何も追加されていないが、未追跡のファイルが存在する
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み】gitの「not something we can merge」エラーの解決方法
-
[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。
-
[解決済み] git stashを元に戻す
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] ssh-keygen' は内部コマンドまたは外部コマンドとして認識されません。
-
[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?
-
[解決済み] Gitのプッシュを正しく強制する方法は?