2013-01-10 7 views
30

私はgitリポジトリで作業しています(そう、はい、私はこれを行う意味と警告を知っています)と何とかして、それは持ってはいけません。マージの競合を解消する:すべてのファイルを強制的に上書きする

今私は取り返そうとしており、何百ものマージの競合について不平を言っています。

gitにを強制的に送信する方法はありますかは、リモートサーバーからローカルに送信されるすべてのファイルを上書きしますか? git reset --hard HEAD~1を実行してからプルを行うよりも速い方法がありますか?

同じメモで、簡単なマージで同じことを行う方法はありますか?私が見たすべてのことは、マージ競合解決の段階で各ファイルをチェックアウトすることを提案していますが、何百ものファイルを手作業で行うことはできません。

+1

なぜあなたは砂場を吹き飛ばしてもう一度クローンを作成しないのですか? – gview

+0

私は時間がかかりませんでした。プロジェクトは大規模で、複製にはかなりの時間がかかります。 – Qix

答えて

53

ローカルで行ったすべての変更を破棄しますリモートリポジトリにある最後のバージョンをコピーするための3つの簡単な解決方法、あります

  1. があなたのリポジトリを破棄し、再びクローンが。

  2. git reset --hard <hash>でローカル変更を破棄して、git pullを行うなど、これが最も簡単な解決策ですが、あなたのリポジトリが大きい場合、それは長い時間がかかること、およびconfigure INGを再ような余分な労力を必要とするかもしれません。問題は、まずあなたが避けようとしている変更履歴に先行するコミットを見つける必要があるということです。そのコミットハッシュにリセットしたら、git pullを実行します。

  3. 、すなわち、リモートブランチのローカルの参照(通常の原点/マスター)への更新を持参し、この参照を渡すgit reset --hardを行うにはgit reset --hard origin/mastergit fetchを行います。

+4

#3はかなりスマートでした。いい答えだ。 StackOverflowへようこそ。ちょうどメモ:バッククォート( ')を使用してコードやコマンドラインの内容を示します。 – Qix

+3

'git checkout --theirs .'は、マージに削除が含まれていないとうまくいくようです。 –

0
git reset --hard {remote_repository_name}/{branch_name} 

例:あなたはブランチで作業している場合

git reset --hard upstream/branch1 

あなたがあなたのローカルリポジトリに(上流または原点)に設定する必要があり、その前にcode.But以上使用することができます、

git remote add upstream https://github.com/lakini/example.git 

ここで、https://github.com/lakini/example.gitは、リモートのアップストリームリポジトリです。

これと同じように、リモートリポジトリ(起点)で作業することもできます。

git reset --hard origin/branch1 
+0

これは他の答えが言ったこととほぼ同じです... – Qix

関連する問題