Gitを使用してコマンドラインでファイルをマージしようとしましたが、マージが中止されたことを示すエラーメッセージが表示されました。
これで終わりだと思いましたが、ファイルにgitmarkがあることに気付きました。そのようです:
start =
expression
validchar =
[0-9a-zA-Z_?!+\-=@#$%^&*/.]
integer =
<<<<<<< HEAD
digits:[0-9]+
{ return digits.join(""); }
=======
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages
ファイルは私ではなく編集されており、次の行が挿入されています:
<<<<<<< HEAD
)=======
)>>>>>>> gh-pages
)さらに悪いことに、ファイルの内容が整然としていないということです。これらのファイルを通常の状態に戻す方法を誰もが知っていますか?また、ghブランチで行った変更がmasterブランチにマージされましたか?
それらは 競合マーカー です。まだマージ中ですが、Gitが自動的にマージできない部分がいくつかありました。 それらの部分を手動で編集する必要があります 必要なものにした後、結果をコミットします。
たとえば、特定のケースでは、おそらく次のように解決する必要があります(注-右側の矢印/テキストは単なるメモであり、ファイルに入力するものではありません)。
integer =
<<<<<<< HEAD <-+ remove the bits here
digits:[0-9]+ |
{ return digits.join(""); } |
======= <-+
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages <-- and this
したがって、ファイルを次のように保存します...
integer =
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
絶対に「git status」から始めて、あなたが持っているものを見てください。マージを中止した(またはマージを中止した)場合、作業ディレクトリに競合するファイルがあると、何かがおかしくなりました。 Gitステータスは現在地を示します。その後、いくつかのオプションがあります。マージコミットは手動で解決する必要がありますが、これは手間がかかりますが、次のようなツールを使用することもできます。
git mergetool
マージが必要とファイルがリストされている場合、マージツールは機能します。
次のいずれかを実行することもできます。
git checkout --ours -- /path/to/conflicted-file # this is probably the one you want
git checkout --theirs -- /path/to/conflicted-file
:1:filename構文を使用して、さまざまなバージョンを確認できます。説明については here を参照してください。しかし、上記のすべては、「git status」がファイルをマージする必要があると表示することを前提としています。
最後に、常に次のオプションがあります。
git reset --hard # sounds like --hard is what you need but check other options
すべての答えは正しいですが、すべての競合マークを自動削除し、HEADを維持するようにファイルを自動変更する場合は、次のような独自のbashスクリプトを作成できます。
スクリプトの例:
# vim /usr/sbin/solve.git
(追記)
#!/bin/bash
for f in $(grep -Rl '^>>>>>>> ' --include="*.php" --include="*.css" --include="*.js" --include="*.html" --include="*.svg" --include="*.txt" .)
do
sed -i -e '/^=======/,/^>>>>>>> /d' -e '/^<<<<<<< /d' $f
sed -i -e '/^>>>>>>> /d' $f
echo "$f Fixed"
done
git add . ; git commit -am "[+] Resolved on `date` from `hostname` by `whoami`" --no-verify
# chmod 755 /usr/sbin/solve.git
解決するには、GITリポジトリ/パスで実行するだけです:
$ cd <path_to_repo>
$ solve.git
注意:-上記のファイル拡張子は、php、css、js、html、svg、txtです。
この質問 から来ています。そして、手動でファイルを編集するのではなく、半分マージされたファイルをマージする自動化された方法が必要でした(他の回答で示唆されているように、これはあまり快適ではありません)。 Netbeansを介して実行することになりましたが、コマンドラインからも実行できます。
今、覚えておいてください、これはmerge->add->commit
、あなたは台無しになったことに気づき、プロセスをやり直したい。
STEP 1:前のコミットにリセットします。
git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e
STEP 2:ブランチを再試行してください
git merge --ff Origin/feature/YOUR-Branch_here
この時点で、GUIを使用している場合は、マージウィンドウが表示されます。その後、通常どおり続行できます。
In Atom私はいくつかのファイルが解決されたマージの競合をドライブに保存しないという問題があったので、手動で「保存」をクリックしなければなりませんでした。