私はgit repoを少し台無しにしています。別のブランチの機能に取り組みました。仕事を終えた後、私はそれをマージするためにマスターに切り替えました、しかし私のパートナーは私のと衝突するようになったいくつかのファイルをプッシュしました。マージ、競合、新しい変更のプッシュの後、パートナーの古い変更もコミットしたことがわかりました。
このコミット/マージをやり直したい。私は試した git reset --soft HEAD^
ですが、プッシュしたいときにこのエラーメッセージが表示されましたMerge the remote changes before pushing again
。
誰か助けてもらえますか?
あなたの機能ブランチはまだあなたの仕事を指しています。これらの変更は失われません。
プレイズが言ったように、あなたはマスターを1つにリセットすることができます
git reset --hard HEAD^
マージせずにブランチから特定のファイルを取得したい場合は、それらをチェックアウトできます。
git checkout yourbranch -- file1 file2 etc
マージ前のマスターからいくつかのファイルが必要な場合は、これらをチェックアウトすることもできます。
git checkout master^ -- file3 file4 etc
これは理想的ではありませんが、必要な場合もあります。/may /マージは、マージのどちらかの側からの変更を拒否することを意味します。適切なマージを実現する最良の方法は、次のとおりです。
git merge --no-commit yourbranch
マスターから、上からgit checkoutコマンドを実行し、最後にコミットします:
git add . -A
git commit
ここでこのブランチをプッシュするとき、force
オプションを追加する必要があります
git Push --force
または
git Push -f
お役に立てれば。
へへ、あなたはほとんどそれを理解しました:
git reset --hard HEAD^
ここでの問題は、すでに中央リポジトリにプッシュした変更を元に戻したいということです。そもそもそれらをプッシュしていなかった場合は、git reset --hard /-soft /-mixed HEAD ^がうまく機能します。
したがって、HEADをリセットすると、オリジンにプッシュして、HEADの祖先ではないリモート参照を更新しようとすると、gitが文句を言います。--forceを使用します。
git Push --force Origin master