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

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

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

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

GitHub

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3051閲覧

gitにて HEAD detached from 〜状態になってしまいました

sonko

総合スコア2

Git

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

GitHub

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/09/17 08:30

gitについてご教示いただけますでしょうか。
コミット後、コミット内容に間違いがあり一つ前のコミットへcheckoutを行いました。
具体的には太文字の74b5e2cにて間違いがあり、一つ下のdeec327にてcheckoutを行いブランチ作成等行わずcommitを続けていました。
ある時にPushしてもリモートリポジトリに反映されていないことがわかりました。
現在までコミットしているものをPushできる様な手順があればご教示いただけますでしょうか。

同様の状況をテスト用プロジェクトにて作り出すことができ、最新のコミット部にブランチを作成、mainとマージすることでPushできました。見様見真似で行ったため操作と手順に不安があります。

以下git statusとgit reflogの結果です。

% git status
HEAD detached from deec327
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: SubscriptionSearch/Home.storyboard

no changes added to commit (use "git add" and/or "git commit -a")

% git reflog
7585a03 (HEAD) HEAD@{0}: commit: getMonthlyFee内でuidがない場合はスルーする仕様
に変更
7dfdf4b HEAD@{1}: commit: myListVC追加
3947333 HEAD@{2}: commit: コメント時のアラート完成 過去にコメントしていた場合はコメントを更新する仕組みを実装
0e618ca HEAD@{3}: commit: switchMethodOfPayにcase 25: ”週額”を追加
c34fe8f HEAD@{4}: commit: detailVCで未ログイン時に登録中等押下した際のメッセージのOKを選択、dismissで閉じてtabの3番目へ遷移する機能実装
deec327 (origin/main) HEAD@{5}: checkout: moving from main to deec32794ed5efd6fe0e9879a61619b9b444e329
74b5e2c (main) HEAD@{6}: commit: dismissでdetailItemVCが閉じた際にtab3へ遷移するdelegateメソッドを記載
deec327 (origin/main) HEAD@{7}: commit: 未ログイン時に登録中等押下、メッセージのOKを選択するとdismissでdetailItemVCを閉じてtabの3番目へ遷移する機能を実装 
9834825 HEAD@{8}: commit: delegateでtextを変更しようとした際にscope外のエラーの
ためresultLabelをviewDidLoad外へ
10ee15a HEAD@{9}: commit: 月額合計料金取得機能実装
150779d HEAD@{10}: commit: コメント、レイアウト微修正
8cc0481 HEAD@{11}: commit: passFeedsと被るためpassFavoriteDatas削除
288a6a3 HEAD@{12}: commit: コメント追加

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

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

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

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

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

hoshi-takanori

2021/09/17 11:07

git log --oneline --graph --all の結果を貼ってもらえませんか? また、作業フローは基本的に main ブランチのみを使用してた感じでしょうか?
sonko

2021/09/17 11:30

hoshi-takanori様 前回は大変お世話になりました。改めてありがとうございました。 再びの回答誠にありがとうございます。 下記にgit log --oneline --graph --allの結果を記載しました。 仰る通り、mainブランチのみ使用しておりました。よろしくお願い致します。 % git log --oneline --graph --all * 7585a03 (HEAD) getMonthlyFee内でuidがない場合はスルーする仕様に変更 * 7dfdf4b myListVC追加 * 3947333 コメント時のアラート完成 過去にコメントしていた場合はコメントを更新する仕組みを実装 * 0e618ca switchMethodOfPayにcase 25: ”週額”を追加 * c34fe8f detailVCで未ログイン時に登録中等押下した際のメッセージのOKを選択、dismissで閉じてtabの3番目へ遷移する機能実装 | * 74b5e2c (main) dismissでdetailItemVCが閉じた際にtab3へ遷移するdelegateメソッドを記載 collectionVIewのdidSelectItemAt内の遷移先のVCをインスタンス化し、そのプロパティに対してdelegateの委任先をselfへ指定 |/ * deec327 (origin/main) 未ログイン時に登録中等押下、メッセージのOKを選択するとdismissでdetailItemVCを閉じてtabの3番目へ遷移する機能を実装  コメント時のfirebaseのdocumentにauthのuidを追加 * 9834825 delegateでtextを変更しようとした際にscope外のエラーのためresultLabelをviewDidLoad外へ 月額合計表示完成 * 10ee15a 月額合計料金取得機能実装 * 150779d コメント、レイアウト微修正 * 8cc0481 passFeedsと被るためpassFavoriteDatas削除 * 288a6a3 コメント追加 * fbfb975 getMonthlyFee完成 未実装 * 28b7596 登録中、気になるの最後の一つを解除した時にtableViewに残ってしまう問題 を解決
guest

回答1

0

ベストアンサー

現状はこういうことですね。(コメントは省略しました。)

% git log --oneline --graph --all * 7585a03 (HEAD) * 7dfdf4b * 3947333 * 0e618ca * c34fe8f | * 74b5e2c (main) |/ * deec327 (origin/main) * (以下略)

以下の手順でいけると思います。

  1. git branch -m main old_main で、間違えてコミットした main ブランチの名前を old_main に変更
  2. git branch main で、現在の HEAD を main ブランチにする
    追記: これだけだと detached HEAD のままなので、さらに git checkout main する必要があります。
    (というか、git checkout -b main ならその 2 つの操作を同時にできます。)
  3. 状況を確認した上で、git push -u origin main で、ローカルの main ブランチをリモートに push
  4. 問題がなければ、git branch -D old_main で old_main ブランチを削除

途中で適宜 git log --oneline --graph --all などを実行して、状況を確認しながらやることをお勧めします。
ちなみに、3 の後はこうなってるはず。

% git log --oneline --graph --all * 7585a03 (HEAD, origin/main, main) * 7dfdf4b * 3947333 * 0e618ca * c34fe8f | * 74b5e2c (old_main) |/ * deec327 * (以下略)

なお、間違えてコミットしたのをなかったことにしたい場合は、git checkout HEAD^ ではなく、git reset HEAD^ すると良いでしょう。
参考: Gitで誤ってCommitしてしまった時の取り消し方法 | Awesome Blog

投稿2021/09/17 11:49

編集2021/09/18 00:02
hoshi-takanori

総合スコア7901

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

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

sonko

2021/09/17 13:37

hoshi-takanori様 丁寧で詳細なご回答、本当にありがとうございます。 ご教示いただいた通り、進めたところorigin/main , main が最新のコミットに設定され上手くいったように見えます。本当にありがとうございます。 一つ気になるのがgit statusを確認するとHEAD detached from deec327といったメッセージが返ってきます。git log --oneline --graph --all で確認するとHEADは最新のコミットにあり問題がないように思えますがいかがでしょうか。よろしくお願い致します。 % git status HEAD detached from deec327 nothing to commit, working tree clean % git log --oneline --graph --all * 510c399 (HEAD, origin/main, main) 微修正 * 7585a03 getMonthlyFee内でuidがない場合はスルーする仕様に変更 * 7dfdf4b myListVC追加 * 3947333 コメント時のアラート完成 過去にコメントしていた場合はコメントを更新する仕組みを実装 * 0e618ca switchMethodOfPayにcase 25: ”週額”を追加 * c34fe8f detailVCで未ログイン時に登録中等押下した際のメッセージのOKを選択、dismissで閉じてtabの3番目へ遷移する機能実装 * deec327 未ログイン時に登録中等押下、メッセージのOKを選択するとdismissでdetailItemVCを閉じてtabの3番目へ遷移する機能を実装  コメント時のfirebaseのdocumentにauthのuidを追加
hoshi-takanori

2021/09/18 00:04 編集

あ、ごめんなさい、git branch main しただけでは detached HEAD のままですね。 その後何も commit してなければ、git checkout main すれば治ると思います。
sonko

2021/09/18 00:41

ご返答いただきありがとうございます。HEAD detached は解消いたしました。 お陰様で不安が解消致しました。ご迷惑をおかけせぬ様勉強致しますが、またお力添えを頂くかもしれません。その時は何卒よろしくお願い致します。 この度はご丁寧に回答いただき本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問