web-dev-qa-db-ja.com

Egit-今すぐチェックアウトできません-リベース状態のままです

数日前に同様の質問をしましたが、役に立つ答えが得られなかったので、すべてをより正確にしたいと思います。

Githubのプライベートリポジトリとしての大きなプロジェクトがあります。私と私の友人が現在取り組んでいます。リポジトリ全体をローカルリポジトリとEclipseにインポートすると、マージの競合が発生するまですべてが正常に実行されました。毎回、マージの競合が発生します(たとえば、頻繁に使用されるクラスで作業する前にプルするのを忘れた場合)、Eclipseワークスペースのプロジェクト全体が「Rebase w/merge」状態に切り替わります。

Rebase w/merge state of the project

マージの競合が発生するとマークが表示されます。そこで、クラスを開いてマージツールとマージし、変更する必要のあるすべてを編集し、クラスを再度インデックスに追加しました。

次に、すべてのマージ変更をコミットし、すべてをアップストリームのマスターブランチにプッシュしました(gitとvcs/svnの経験があまりないため、ここまではmasterのみを使用しています)。

しかし今、私はmasterブランチに戻ることも、リベースをキャンセルすることも、他のこともできません。

私は試した:

プロジェクトフォルダを右クリック->チーム->切り替え->マスター。 Checkout fail

それがエラー通知です。

次に、Gitリポジトリビューでリベースをキャンセルするように言われました。

Git Repo View

ただし、ローカルリポジトリにもリモートリポジトリにも、リベースに関連するオプションはありません。

次に、ローカルブランチのメニューで「チェックアウト」を試しました。同じ結果。また、ローカルブランチをアップストリームにプッシュしようとしました。

enter image description here

これはマージ/リベースオプションの私のプリセットですが、これらのオプションは両方とも同じ結果をもたらします:

enter image description here

Githubでリポジトリを調べました-マージ解決を含むすべての変更は既にmasterブランチにプッシュされており、フェッチする準備ができています。私のチームメイトはそれらを引き出して、プロジェクトの作業を続けることができます。ただし、このRebase w/merge状態をエスケープすることはできません。この状態が発生するたびに、すべてのプロジェクトリソースを削除し、ローカルリポジトリを削除し、Eclipseにすべてを再インポートしなければなりませんでした。

だから:このリベースをエスケープするにはどうすればよいですか? btw:リベースとマージの違いは何ですか?

20
Cydhra

Git Stagingビューには、リベースを中止するオプションがあります。

enter image description here

37

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レベルにリセットし、最後のマージで発生した状態に戻します]

1
anand mishra

Gitステージングビューの表示に問題がある場合、またはステージングビューに間違ったリポジトリが表示される場合は、ツールバーのリベースアイコンの横にある三角形をクリックして、中止をクリックします。

ここをクリック

0
Johnny

リベース状態でブロックされており、Eclipseがそれを中止しない場合(応答なし)、次のチェックを外して、プロジェクトの自動ビルドを無効にする必要があります。

プロジェクト/自動ビルド

これにより、保留中のビルドがすべて停止します。

0
Denis S.