数日前に同様の質問をしましたが、役に立つ答えが得られなかったので、すべてをより正確にしたいと思います。
Githubのプライベートリポジトリとしての大きなプロジェクトがあります。私と私の友人が現在取り組んでいます。リポジトリ全体をローカルリポジトリとEclipseにインポートすると、マージの競合が発生するまですべてが正常に実行されました。毎回、マージの競合が発生します(たとえば、頻繁に使用されるクラスで作業する前にプルするのを忘れた場合)、Eclipseワークスペースのプロジェクト全体が「Rebase w/merge」状態に切り替わります。
マージの競合が発生するとマークが表示されます。そこで、クラスを開いてマージツールとマージし、変更する必要のあるすべてを編集し、クラスを再度インデックスに追加しました。
次に、すべてのマージ変更をコミットし、すべてをアップストリームのマスターブランチにプッシュしました(gitとvcs/svnの経験があまりないため、ここまではmasterのみを使用しています)。
しかし今、私はmasterブランチに戻ることも、リベースをキャンセルすることも、他のこともできません。
私は試した:
プロジェクトフォルダを右クリック->チーム->切り替え->マスター。
それがエラー通知です。
次に、Gitリポジトリビューでリベースをキャンセルするように言われました。
ただし、ローカルリポジトリにもリモートリポジトリにも、リベースに関連するオプションはありません。
次に、ローカルブランチのメニューで「チェックアウト」を試しました。同じ結果。また、ローカルブランチをアップストリームにプッシュしようとしました。
これはマージ/リベースオプションの私のプリセットですが、これらのオプションは両方とも同じ結果をもたらします:
Githubでリポジトリを調べました-マージ解決を含むすべての変更は既にmasterブランチにプッシュされており、フェッチする準備ができています。私のチームメイトはそれらを引き出して、プロジェクトの作業を続けることができます。ただし、このRebase w/merge状態をエスケープすることはできません。この状態が発生するたびに、すべてのプロジェクトリソースを削除し、ローカルリポジトリを削除し、Eclipseにすべてを再インポートしなければなりませんでした。
だから:このリベースをエスケープするにはどうすればよいですか? btw:リベースとマージの違いは何ですか?
Mergeアップストリームコミットをローカルブランチに使用します。
リベースとは、古いマスターを新しいマスターコードに変更すること(つまり、ブランチのベースを変更すること)を意味し、マージとは変更をマスターに追加することを意味します。
Gitコマンドラインを使用して、このような競合を解決することもできます。
Git Rebase/Mergeプロセスの使用ブランチでの作業中に、すべてのファイルを追加してサーバーにプッシュします
git add .
git commit -m "SSSS"
git Push -u Origin <BranchName>
git checkout master
git pull
[A]マスターは古いコードであるため、コードをマージできます
git merge <your branch name>
git Push
[B]マスターは新しいコードを持ち、サーバーからプルされたファイルのリストを表示します
$ git checkout your_branch Note: make sure you are working in your branch
$ git rebase master
競合に関するメッセージが表示されるので、各ファイルを下から操作して競合を解決し、そのファイルを追加します
$ git add <filename which you just updated>
$ git rebase --continue
すべての競合が解決されるまで、上記の2つのコマンドに従います。マスターの変更がブランチにマージされ、サーバーにプッシュされます<<あなたのブランチ今、マスターブランチを更新する必要があります
$ git checkout master
$ git merge <YOUR_BRANCH>
$ git Push
確認注:現在の変更が上書きされ、続行したくない場合にリベースする場合は、次を実行します-
$git rebase --abort
メッセージウィンドウがコミットステートメントを記述しているように見える場合、マージ/リベースを実行中に、THERE IS NO ESCAPE ...何かを記述してから、次のことを行います。
$git reset --hard HEAD~1
[このコマンドは、現在のコミットヘッドを1レベルにリセットし、最後のマージで発生した状態に戻します]
Gitステージングビューの表示に問題がある場合、またはステージングビューに間違ったリポジトリが表示される場合は、ツールバーのリベースアイコンの横にある三角形をクリックして、中止をクリックします。
リベース状態でブロックされており、Eclipseがそれを中止しない場合(応答なし)、次のチェックを外して、プロジェクトの自動ビルドを無効にする必要があります。
プロジェクト/自動ビルド
これにより、保留中のビルドがすべて停止します。