強制アップデート後のGit pull 質問する

強制アップデート後のGit pull 質問する

私はいくつかのコミットを で押しつぶしてgit rebaseを実行しましたgit push --force(これは悪いことだとわかっています)。

現在、他のソフトウェア エンジニアは異なる履歴を持っており、 を実行するとgit pull、Git はマージします。 を実行する以外に、これを修正する方法はありますか?rm my-repo; git clone [email protected]:my-repo.git

の反対のようなものが必要なのですgit push --forceが、git pull --force意図した結果が得られませんでした。

ベストアンサー1

新しいコミットを受け取るには

git fetch

リセット

を使用してローカル ブランチのコミットをリセットできますgit reset

ローカル ブランチのコミットを変更するには:

git reset origin/main --hard

ただし、ドキュメントには次のように記載されているので注意してください。

インデックスと作業ツリーをリセットします。<commit> 以降に作業ツリー内の追跡されたファイルに加えられた変更はすべて破棄されます。

実際にローカルで行った変更をすべて保持したい場合は、--soft代わりにリセットを実行します。これにより、ブランチのコミット履歴は更新されますが、作業ディレクトリ内のファイルは変更されません (その後、コミットできます)。

リベース

次のコマンドを使用して、他のコミット/ブランチの上にローカルコミットを再生できますgit rebase

git rebase -i origin/main

これにより、対話モードでリベースが呼び出され、リベースする履歴に含まれていない個々のコミットをどのように適用するかを選択できます。

削除したコミット ( を使用git push -f) がすでにローカル履歴にプルされている場合、それらは再適用されるコミットとしてリストされます。それらはリベースの一部として削除されるか、または単にブランチの履歴に再度含められる必要があり、次のプッシュ時にリモート履歴に再び表示されます。

git command --help上記のコマンド(またはその他のコマンド)の詳細と例については、ヘルプを使用してください。

おすすめ記事