質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

2回答

3459閲覧

rebase --continueと打ったらファイルに変な文字列が書き込まれてしまいました

Run_ner

総合スコア16

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

1グッド

1クリップ

投稿2016/04/14 17:36

github初心者です。(ド素人)

タイトルの通り、rebase --continueと打ったら「=======」など「>>>>>>> commit」と勝手にファイルに書き込まれていました。
手動で消そうと試みたのですが、よく見ると追加されただけでなくコードも同じ行が幾つかあったり異様でした。

これを元に戻す方法はありますか?
どなたかご教授ください......

mpyw👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

競合が発生しています.「git 競合 解決」でググるといろいろ知見が得られると思います.

絶対に読むべきページ

この順番で読むことを推奨

想定する状況

  1. あるコミットからブランチがmasterとsubに分岐した
  2. それぞれのブランチで同じ部分に対して異なる編集をコミットをしてしまった
  3. subのコミットを全部masterのほうに取り込みたい

とりあえずやること

git rebase --abortでリベース作業を中断 (編集内容は破棄されます)

解決策A: リベースの代わりにマージを使う

"こわくないGit" にて「ブランチは先頭コミットの別名」とされていますが,便宜上ここでは「ブランチの先頭」という言葉を使って説明します. (厳密には正しくない言葉です)

  1. git checkout masterで「masterブランチの先頭」に移動
  2. git merge --no-ff subで「subブランチの先頭」+「masterブランチの先頭」の合成結果を「masterブランチの先頭」の上に追加する (ここで競合が発生)
  3. すべての競合したファイルに関して以下のどれかを実行し,git add ファイル名する

(3-A)手動で競合部分を編集する
(3-B)git checkout ファイル名 --oursを実行して「masterブランチの先頭」を優先的に反映する
(3-C)git checkout ファイル名 --theirsを実行して「subブランチの先頭」を優先的に反映する
4. すべての競合を解決したらgit commit -m 'コミットメッセージ'で2の作業を完結させる

解決策B: リベースを頑張る

  1. git checkout subで「subブランチの先頭」に移動
  2. git rebase masterで「分岐点からsubブランチの先頭」までのすべてのコミットを適用するためのパッチを作成し,それをもとに「masterブランチの先頭」の上に逐次コミットを追加していく (ここで競合が発生)
  3. すべての競合したファイルに関して以下のどれかを実行し,git add ファイル名する

(3-A)手動で競合部分を編集する
(3-B)git checkout ファイル名 --oursを実行して「subブランチの先頭」を優先的に反映する
(3-C)git checkout ファイル名 --theirsを実行してパッチを優先的に反映する
4. すべての競合を解決したらgit rebase --continueで次のパッチの適用作業に進む (これが終わるまで2〜4の繰り返しが続く)

投稿2016/04/14 20:59

編集2016/04/14 21:00
mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

git rebaseコマンドがまだ完了していない(git statusと実行して、何やら"Unmerged paths:"などとファイル名が表示される状態)なら、

sh

1git rebase --abort

で、元に戻せます。
https://git-scm.com/docs/git-rebase

もう完了してしまったなら、

sh

1git reset --hard ORIG_HEAD

で、戻せます。
https://git-scm.com/docs/git-reset

git rebaseコマンドが完了して、さらに別の変更を加えてしまっている場合は、、
もっと詳しい状況を教えていただかないと、何とも言えません。

投稿2016/04/15 11:04

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問