0

私はブランチで働いていますmaster。変更は既にリモート リポジトリにプッシュされています。私の履歴は次のようになります。

*----*----*----* master

それから、私は何か間違ったことをしたかもしれないことに気付き、別のアプローチから始めたいと思っています. これを行うには、新しいブランチを作成します。

*----*----*----* master
     \
      *----*----* different-approach

いくつかの新しいコミットの後、新しいアプローチが master ブランチのものよりもうまく機能すると判断したので、今後はそれをブランチで使用したいと考えていますmaster。だから私はマージを行います:

git checkout master
git merge different-approach

競合が発生した場合に備えて、私は常にdifferent-approachマージからバージョンを選択します。問題は、一部のファイルでは競合がないため、git が自動マージを実行して、masterブランチからの悪いものを残すことです。

この場合、どうすればよいですか?git のすべてのファイルを手動でマージする方法はないようです。もちろん、マージをコミットする前に、リポジトリを別のディレクトリに複製し、そこからすべてのファイルを元のディレクトリにコピーできます。しかし、これを行うためのよりクリーンで簡単な方法はありませんか?

4

2 に答える 2

2

不要なコミットを元に戻すことで修正します。

// Revert all commits in master one-by-one
$ git checkout master
$ git revert --no-edit different-approach..master
$ git merge different-approach

// Revert all commits in master at once
$ git checkout master
$ git revert --no-commit different-approach..master
$ git commit -m "Revert foo"
$ git merge different-approach
于 2013-07-17T14:22:28.790 に答える