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

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

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

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

Q&A

解決済

3回答

3757閲覧

gitで放置状態になったmasterブランチ

退会済みユーザー

退会済みユーザー

総合スコア0

Git

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

0グッド

0クリップ

投稿2015/11/30 04:59

編集2015/12/02 01:15

gitで放置状態になっているmasterブランチがあり、他のブランチで開発が進んでおります。恐らくミスでそのような状態となっております。
masterが最新のコミットじゃないのは気持ち悪いので修正したいのですが、masterブランチをコミットが枝分かれしている箇所までリセットして、もう片方のブランチの最新のコミットをマージし、その後pushするとエラー(エラーの参考サイト)がでます。
どのように対処すればいいでしょうか。

=============追記====================
・gitの操作するツールにSourceTreeを使用してます。
・ブランチが枝分かれする前のコミットを選択し「このコミットまでmasterを元に戻す」をリセットモード「HARD」を選択し実行しました。
・最新のコミットを選択し「マージ」を実行しました。
・その後pushを実行すると参考サイトに記載されているエラーと同じ内容のエラーが表示されました。

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

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

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

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

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

KiyoshiMotoki

2015/11/30 09:10

もっと詳しい状況が知りたいので、以下を追記願います。 1. 実行したコマンド、またはツールの操作手順 2. 表示されたエラーメッセージ
guest

回答3

0

ベストアンサー

masterが単純に過去の最新でないだけであればpushすれば素直に反映するはずですので、枝は別れし、masterと現在の最新のレポジトリで歴史が違うものになったと考えております。

出来たとしても本来推奨される方法ではないですが、「git push -f origin master」のような方法で、強制的に上書きは出来ないのでしょうか。

投稿2015/12/02 02:01

rontec

総合スコア169

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

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

退会済みユーザー

退会済みユーザー

2015/12/02 05:30

ご回答ありがとうございます。git push -fで解決しました。
guest

0

情報の追記、ありがとうございます。

masterブランチをコミットが枝分かれしている箇所までリセットして、もう片方のブランチの最新のコミットをマージし、その後pushするとエラー

ということから、恐らく、masterブランチにだけあり、"もう片方のブランチ"にはないコミットが存在するのだと推測します。

そのため、リモートリポジトリ上のmasterブランチとローカルのmasterブランチの状態に不整合が生じ、
pushできなくなったのかと。

対策としては、
0. 【最新】のmasterブランチに対して、もう片方のブランチをマージする。
0. 不整合の原因となっているコミットを特定し、
0. そのコミットの打ち消しコミット(※)を作成する。
とやれば、リモートのmasterブランチにpushできるようになるはずです。

※打ち消しコミットを作成する。

sh

1git revert 該当コミットのハッシュ値

https://git-scm.com/docs/git-revert

もっとも、状況によっては上記の操作は難しい作業になる可能性があります。

代替案としては、rontec様の回答の通りgit pushコマンドに-fオプションを追加してやれば、強制的にpushできます。
しかし、その場合、他のメンバーがmasterブランチをpullする際にエラーが発生する可能性が生じますので、
いったん、ローカルのmasterブランチを破棄してからpullしてもらうなどの対応が必要になります。

投稿2015/12/02 04:08

KiyoshiMotoki

総合スコア4791

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

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

退会済みユーザー

退会済みユーザー

2015/12/02 05:29

ご回答ありがとうございます。 ご提示頂いた方法でmasterを最新のコミットすることができましたが、他に作業してい る人もいないのでコミットの履歴がスッキリするgit push fを採用しました。こちらで 解決しました。
KiyoshiMotoki

2015/12/02 05:39

ご報告ありがとうございます。 > 他に作業している人もいないので それなら、安心ですね。
guest

0

Git初心者なので、外していたらごめんなさい…

masterブランチをコミットが枝分かれしている箇所までリセットして

とは具体的にどのようなコマンドを実行されたのでしょうか?ローカルリポジトリ側でリセットされていてもリモートリポジトリ側がそのままの状態でpushしたら競合を起こしますよね?
それで、以下のいずれかを試してみてはいかがですか?
0. リセットした状態で一旦pushしてからブランチをマージ→さらにpushする
0. 下記を参考にリモートのmasterブランチを削除してしまってから、ブランチをマージして最新化したmasterをpushする
Gitでリモートリポジトリを巻き戻す

投稿2015/11/30 22:31

pi-chan

総合スコア5936

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

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

退会済みユーザー

退会済みユーザー

2015/12/02 02:02

ご回答ありがとうございます。 1に関してはリセットからのpushの時点で参考サイトのエラーがでておりました。 2に関してはmasterブランチを削除を行おうとすると下記参考サイトのエラーが参考サイ トの対処方法を行ってもでます。SourceTreeだと消せないのでしょうか。もう少し調べてみます。 http://kreisel.fam.cx/webmaster/clog/2015-02-04-1.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問