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

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

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

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

GitHub

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

Q&A

解決済

2回答

7123閲覧

git mergeのやり直してについて教えてください

yoppy0066

総合スコア293

Git

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

GitHub

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

0グッド

2クリップ

投稿2017/04/20 05:51

編集2017/04/20 05:52

現在、以下のような状態となっているのですが、aaaaaのマージをやり直す方法を教えていただけないでしょうか。リモートにプッシュ済みとなります。

* commit aaaaa |\ Merge: bbbbb ccccc4 | | | * commit ccccc4 | * commit ccccc3 | * commit ccccc2 | | | * commit ccccc1 |/ * commit bbbbb

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

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

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

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

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

guest

回答2

0

ベストアンサー

git revert -m 1 aaaaa
で、取り消しのコミットを作って、プッシュするのが良さそうです。

投稿2017/04/20 08:07

imokurity

総合スコア297

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

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

0

pushした内容を上書きしてもよいのであれば、再マージを行って--forceオプションをつけてpushすればokですよね。
ただしこの方法だと、他の作業者のローカルレポジトリとサーバのレポジトリが不整合を起こす可能性があります。

bash

1git reset --hard head^ # マージ取り消し 2git merge --no-ff [commit ccccc4] # 再マージ 3 4git push --force

pushした内容を上書きできない場合は、別ブランチでもう一度マージを行い、その内容をmasterの次のコミットとして追加するという手順でやってみてはどうでしょう?
再マージした結果を強制的に新しいコミットにしているので、デグレードなどが起きていないか注意する必要があります。

bash

1# 現在のブランチがmasterである前提 2 3# workブランチを作成して、そっちでマージコミットを取り消し+再マージ 4git checkout -b work 5git reset --hard head^ 6git merge --no-ff [commit ccccc4] 7 8# masterブランチに戻ってきて、 9# workブランチ(再マージした結果)の内容でコミットを作成 10git checkout master 11git reset --hard work 12git reset --soft orig_head 13git commit 14 15# サーバに再マージした結果をpush 16git push 17 18# 作業用ブランチ削除 19git branch -D work

投稿2017/04/20 11:09

編集2017/04/20 11:11
ku__ra__ge

総合スコア4524

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問