私のマスター GIT ブランチにはいくつかのエラーが含まれているため、マスター ブランチが dev のコピーになるように、マスター ブランチに dev ブランチを再チェック、再マージ、または場合によっては複製したいと考えています。
どうやってやるの?どうも。
チェックアウトしたファイルがブランチと一致しないという単純な問題の場合は、git reset
通常どおりに使用してください。
git reset --hard HEAD
それだけで十分です。ただし、マスターを dev で上書きしたい場合は、読み進めてください。
master ブランチを dev ブランチの内容で上書きする場合は、次のgit reset
ように使用します。
$ git checkout master
$ git reset --hard dev
そして、これを別の場所にプッシュしたい場合:
$ git push origin master
dev ブランチが master ブランチから早送りされない場合 (master ブランチにはめちゃくちゃなものがあるとあなたが言ったので、そうはならないと思います)、追加する必要があることに注意してください。--force
プッシュにフラグを立てて、リモートで上書きします。
$ git push origin master --force
ただし、これには履歴の書き換えに関する通常の警告がすべて含まれる可能性があることに注意してください。git rebase
他の誰かがこのリモートを使用する場合、上流のリベースと同等の処理を行う必要があります。
将来この問題を回避するには、使用する必要--force
はほとんどないことを友人に伝えてください。しようとしたときに競合が発生する場合はgit push
、git pull
最初に競合を解決してから、git push
.
あなたのコメントから、次の 3 つのケースが考えられるようです。
まず、すべてをバックアップします。それで:
ケース 1 ではgit reset --hard HEAD
、壊れた作業コピーを破棄するために使用します。
ケース 2 では、作業コピーにすべてを追加してコミットします。
ケース 3 ではgit reset --hard dev
、インデックスと作業コピーの両方を破棄するために使用します。あるいは、git reset --hard SOME_COMMIT_ID_THAT_ISN'T_BROKEN
--force
3 つのケースすべてで、自分が何をしているのかを本当に理解していない限り、絶対に使用しないように友人に伝えてください。
また、裸でないリポジトリ (つまり、作業コピーのあるリポジトリ) にはプッシュしない方がよいでしょう。作業コピーのあるリポジトリに直接プッシュするのではなく、プッシュとプルの両方を行うベア リポジトリをどこかにセットアップすることをお勧めします。git init --bare
裸のレポを作成するために使用します。
私はすべてをバックアップすることに言及しましたか?良い。やれ。
良い質問。私は自分自身の前にこれをやりたいと思っていましたが、やったことはありません。私の最善の推測は、以下を試すことです。注: 私は自分でやったことがないので、これがうまくいくかどうかはわかりません。
git checkout master
git pull origin dev
git commit -a -m "reverted to dev"
上記の方法で行うと、競合が発生する可能性があります。