1

この質問が以前に尋ねられたことは知っていますが、指定された回答git reset --hard HEAD~1は機能しますが、サーバーが先にあるため、サーバーにプッシュできません。引っ張ると、明らかに元の場所に戻ります。

サーバーをリセットするにはどうすればよいですか?

4

3 に答える 3

3

それはすべて、プロジェクトの規則に依存します。git revertそれがポリシーである場合は、後でコミットをいつでもドロップできるため、使用するのが安全な方法です。マージを元に戻したい場合は、元に戻す親 (「メインライン」) を で指定する必要がありますgit revert --mainline <parent-number>

プロジェクトのメンテナに、特定のケースで何をすべきかを説明するよう依頼する必要があります。


私たちのチームでは、次の一連のルールを使用しています。

  • リベース ( branch.autosetuprebase=always)を使用してのみプルする
  • master唯一の「パブリック」ブランチです
  • 開発ブランチは、共有サーバーにプッシュされても「プライベート」のままです

これは、誰もが自分のプライベート ブランチで自由にやりたいことを実行できることを意味します。必要に応じて、リベースしたり、コミットを削除したりできます。一方、共有サーバーは、マスターへの強制プッシュを拒否するように構成されています。

master を決してリセットしないと言っているわけではありません。時には (1 年に 1 回程度) 誰かが誤ってマージをプッシュし、それが私たちの歴史をひどく台無しにしてしまうかもしれません。このような例外的なケースでは、私たちの git 専門家の 1 人がチーム全体に電子メールを書き、何が起きようとしているのか、ローカル クローンを更新するためにどのような手順を踏めばよいのかを説明します。

于 2013-09-26T09:58:01.640 に答える
2

同僚が自分のローカル ブランチを新しいオリジン/マスターにリセットすることに同意した場合、強制プッシュはオプションです (その「マスター」ブランチについて話していると仮定します)。

git fetch
git reset origin/master

( ではありませんreset --hard。進行中の作業とプライベート ファイルが消去されるためです)
(既にインデックスに追加されているものはすべてステージング解除されることに注意してください)


もう 1 つのオプションは、「コックアップを元に戻す」(既に間違ったコミットをプッシュしている場合)、それを元に戻し、前のコミットをキャンセルする新しいコミットを作成することです。
を参照してくださいgit revert

その後、コミットを元に戻すプッシュ (通常のプッシュ) を行うことができます。

于 2013-09-26T09:25:34.807 に答える