私はgitリポジトリに取り組んでいます自分で(だから、そうすることの意味と警告を知っています)そして、どういうわけか、あるべきではないツリーがプッシュされた後、コミットを受けました。
今私は引き戻そうとしていますが、それは何百ものマージ競合について不平を言っています。
Gitにforcefullyを伝える方法はありますか?リモートサーバーからのすべてのファイルをローカルで上書きしますか? git reset --hard HEAD~1
を実行してからプルするよりも速い方法はありますか?
同じメモで、単純なマージで同じことを行う方法はありますか?私が見たすべてのことは、マージ競合解決段階ですべてのファイルをチェックアウトすることを示唆していますが、何百ものファイルがある場合、手動でチェックアウトすることはできません。
リモートリポジトリにある最後のバージョンをコピーして、ローカルで行ったすべての変更を破棄する3つの簡単なソリューションがあります。
リポジトリを破棄して、再度クローンを作成します。これは最も簡単なソリューションですが、リポジトリが大きい場合は時間がかかり、re configure
ingなどの追加の作業が必要になる場合があります。
git reset --hard <hash>
を使用してローカルの変更を破棄し、git pull
を実行します。問題は、回避しようとしている変更履歴に先行するコミットを最初に見つける必要があることです。そのコミットハッシュにリセットした後、git pull
を実行します。
git fetch
を実行して、リモートブランチ(通常はOrigin/master)のローカル参照に更新を反映し、この参照を渡すgit reset --hard
を実行します。つまり、git reset --hard Origin/master
です。
git reset --hard {remote_repository_name}/{branch_name}
例:
git reset --hard upstream/branch1
ブランチで作業している場合は、上記のコードを使用できますが、その前に、ローカルリポジトリに設定(上流またはオリジン)する必要があります。
git remote add upstream https://github.com/lakini/example.git
ここで、 https://github.com/lakini/example.git はリモートのアップストリームリポジトリです。
このように、リモートリポジトリ(Origin)でも作業できます。
git reset --hard Origin/branch1