

Git でコミットした内容が消えてしまいました。GitHubの ブラウザのコンソールから新しいブランチ（branch-3）を作りました。

ローカルでbranch-3を修正しました。

[code]

    % git branch
    * (HEAD detached from origin/branch-3)
    branch-1
    branch-2
    
[/code]

git pushしようとしたところ、以下のようなエラーが表示されました。

[code]

    % git push origin HEAD
    
    error: The destination you provided is not a full refname (i.e.,
    starting with "refs/"). We tried to guess what you meant by:
    
    - Looking for a ref that matches 'HEAD' on the remote side.
    - Checking if the <src> being pushed ('HEAD')
    is a ref in "refs/{heads,tags}/". If so we add a corresponding
    refs/{heads,tags}/ prefix on the remote side.
    
    Neither worked, so we gave up. You must fully qualify the ref.
    hint: The <src> part of the refspec is a commit object.
    hint: Did you mean to create a new branch by pushing to
    hint: 'HEAD:refs/heads/HEAD'?
    
[/code]

よくわからず

[code]

    $ git checkout branch-3
    
[/code]

したらommitする内容になってしまいました。  
もう復元不可能でしょうか？

[code]

    $ git branch -a
    * (HEAD detached at origin/branch-3)
    branch-1
    branch-2
    branch-3
    master
    remotes/origin/branch-1
    remotes/origin/branch-2
    
[/code]

[code]

    $ git reflog
    3676487 (HEAD -> branch-3, origin/master, origin/branch-3) HEAD@{0}: checkout: moving from 367648702311ad0e5f0451b582fd895bb68b9d07 to branch-3
    3676487 (HEAD -> issue-7, origin/master, origin/branch-3) HEAD@{1}: checkout: moving from issue-7 to origin/branch-3
    3676487 (HEAD -> issue-7, origin/master, origin/issue-3) HEAD@{2}: checkout: moving from 34345434440ec0daba27f694ce92ffb93a410f to branch-3
    4049480 HEAD@{3}: commit:VERY IMPORTANT MODIFY.
    
[/code]


CC BY-SA 4.0
2021-10-13T01:25:54.320
83056
2021-10-14T01:00:06.877
2021-10-13T05:55:15.437
3060
44839
question
git
Git でコミットした内容が消えてしまいました


(おそらく記載されている情報が正確でないのでは、という気がしていますが…)

`4049480` が復元したい内容でしょうか？(`git show 4049480` や `git log -p 4049480` で確認できます)

であれば次のコマンドで `branch-3` に変更内容を `push` できます:

[code]

    git push origin 4049480:branch-3
    
[/code]

もし `push` したい内容が `4049480`ではない場合でも、 `git reflog` 結果から `commit`
した内容は取り出すことができると思います(のでそのハッシュ値で `push` すれば良いです)。


CC BY-SA 4.0
2021-10-13T17:07:09.973
83082
2021-10-14T01:00:06.877
2021-10-14T01:00:06.877
3060
2808
83056
answer