26

ブランチをリベースしようとしていますが、失敗したマージ アクションを実行しようとしているため、git がうんざりしています。これを止めるにはどうすればいいですか?

# git rebase -f --onto master~2 master~ master
First, rewinding head to replay your work on top of it...
Applying: r1002 - CS 1.0.23
Using index info to reconstruct a base tree...
M   about.html
<stdin>:68: trailing whitespace.                     
<stdin>:115: trailing whitespace.
<stdin>:201: trailing whitespace.
<stdin>:2369: trailing whitespace.
<stdin>:2385: trailing whitespace.
warning: squelched 2305 whitespace errors
warning: 2310 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging about.html
CONFLICT (content): Merge conflict in about.html
Failed to merge in the changes.
Patch failed at 0001 r1002 - 1002
The copy of the patch that failed is found in:
   /local/melder/tmp/test/.git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

ご覧のとおり、2000 以上の空白エラーがあり、手動でマージするのは簡単ではありません。

編集:マージせずに今のところこれを回避するには:

# git add -A
# git rebase --continue

編集:ばかげた考えであることは気にしないでください。

4

4 に答える 4

26

今日も同じ問題に直面しました。空白エラーが原因で競合が発生したため、リベースが失敗しました。whitespaceオプション ( git rebase --whitespace=fixand )の異なる設定で失敗した試行の後git rebase --whitespace=nowarn、私にとってうまくいった解決策は、再帰的なマージ戦略で末尾の空白エラーを無視することでした (git rebase --abort必要に応じて実行中のリベースを最初に)。

git rebase -Xignore-space-at-eol <newbase>

空白エラー、オプションの種類によっては、より便利な場合があります-Xignore-space-change-Xignore-all-spaceオプションも機能したかどうかはわかりません--ignore-whitespace

于 2015-03-05T11:26:03.567 に答える
5

それは問題を回避しません。これで、ファイルに競合マーカーが作成されました!

空白の問題は警告であり、正当な競合がそれほど多くないはずです。ファイルを解決するのが困難な場合は、手動で再構築する必要がある場合があります。ただし、これはあなたが何をしているかによって異なります。

多くの場合、2 つのベースは非常に異なっているため、リベースするたびにこの巨大な競合に対処する必要があります。私は、リベース ワークフローを避け、マージ/リセットを購読する傾向があります。これが私がしていることです:http://dymitruk.com/blog/2012/02/05/branch-per-feature/

問題が行末などの空白のみの問題である場合は、最初に各側でフィルター ブランチまたはインタラクティブなリベースを実行してリポジトリをクリーンアップし、各コミットの空白を一貫させることができます。

また、競合の解決には、beyond compare 3 または Perforce Merge を使用します。BC3 は構文を認識しており、空白を最適に処理する必要があります。多くの場合、競合が解決され、そのまま続行できるため、開かないことさえあります。

于 2012-11-20T01:45:40.193 に答える
1

ほとんどの差分ビューア (特に GUI を使用するもの) では、空白の変更を処理する方法を選択できると思います。

これらの競合を自動修正するにmeldは、次のようなものを使用することをお勧めします。git mergetoolが起動されたら、(パネルのタブmeldから) 空白処理ポリシーを設定すると、それらの変更が自動調整されます。Text filtersPreferences

于 2012-11-20T05:03:49.703 に答える