0

かなりの数の変更を加えた git リポジトリがあり、リモートの場所にプッシュしました。

リポジトリを最初から3コミットにリセットしたいので、リモートブランチにpushします。私は次のことを検討しています:-

  • git リセット
  • git push オリジンマスター

同じことに関するいくつかの疑問?

  • これは正しい方法でしょうか?
  • 特定のファイルを削除し、3 回目のコミットの後に (最初から) いくつかのファイルを追加しました。すべてを 3 回目のコミットの状態に戻したい (削除されたファイルを取り戻し、新しく追加されたファイルを削除する)。どうすればそれを行うことができますか?

ありがとう。

[編集] 現時点では、私はこのプロジェクトのソロ開発者です。また、かなりの数のコミットが行われているため、手動でそれぞれを元に戻す必要はありません。

4

2 に答える 2

1

すでにファイルをリモートリポジトリに送信しているgit resetため、他の開発者がローカルリポジトリを更新して新しい更新を取得する必要があるため、実行することはお勧めできません。最善の解決策はgit revert、前のコミットが行ったことを元に戻す新しいコミットを生成するコマンドを実行することです。詳細については、このリンクを参照してください。

ただし、このプロジェクトの開発者があなただけの場合は、コミットを削除できます。git resetこれには、次のコマンドを使用できます。

git reset --hard hash

ここで、hashは、返したいコミットハッシュです。オプション--hardは、渡したコミットハッシュの後にコミットをほぼ完全に削除することです。

プロジェクトの履歴を変更していたため、単純なを実行することはできませんpush。更新を強制するには、フラグ-fが必要です。

git push -f origin master

ただし、一部のリモートリポジトリには、履歴を強制的に更新することを禁止するフックがあります。履歴の更新を実行できるようにするには、このフックを削除する必要があります。これができない場合は、git revertコマンドを使用する必要があります。

于 2013-02-21T06:04:56.373 に答える
1

使用できます

git reset --hard <3rd commit>

すべてのファイルを元に戻し、新しく追加されたファイルを削除します。

次に使用します

git push -f origin master

リモートを強制的に更新します。

于 2013-02-21T06:06:12.390 に答える