私のブランチを以前の作業状態(コミット)にリセットする必要があるので、私は次のようにしました。
git reset --hard c70e611
今は理解
HEAD detached at c70e611
nothing to commit, working directory clean
分離されたヘッダーメッセージを修正/理解/バイパスし、c70e611が現在作業中の最新のコミットであり、作業中のブランチ(マスターブランチではない)のHEADを表すようにプッシュする方法は?
答え1
HEAD
コミットツリー内のワークスペースの現在位置は、git
ブランチdetached
に対応していないことを意味します。この問題を解決するには、新しいブランチを作成する必要があります(新しいブランチに割り当てる名前とgit checkout -b branch
置き換えます)。branch
リセット後にコミットを削除するには、マスターブランチを削除して再作成します。
git branch -D master
git checkout -b master
他の場所にプッシュされたリポジトリを処理する場合は、問題を解決するためにさらに作業を行う必要があり、プッシュを強制する必要があります(他のユーザーにワークスペースの再複製を指示する必要があります)共有状態がある場合は、実際に元に戻すコミットを作成する必要があります。以下のコミットで始まるすべてのコミットgit revert
から始めて、元に戻すを参照してください。master
c70e611
答え2
HEAD detached at c70e611
を実行するとき、git reset --hard
その時点でどのブランチにもないからです。別々のヘッドがあり、別々HEAD
のヘッドがコマンドに移動しながら、git reset --hard
同時に作業ツリーをその状態に再作成します。
特定のブランチfoo
に設定するにはc70611
:
git checkout foo
git reset --hard c70611
これが上流にプッシュするのに良い状態であると見なされればfoo
大丈夫ですgit push <remote-name> foo
。
現在の分岐であることを確認せずに強制的にfoo
実行するより直接的な方法があります。c70611
つまり、foo
このgit update-ref
コマンドを使用して指す内容を書き換えることができます。
上記のタスクを実行する前に、私は停止して私が知らないうちにどのようにハリーに陥っているかを確認しようとします。おそらく未完成のリベースかもしれません。最初のステップは、git reflog
記憶を復活させるのに役立つ最後のいくつかの項目を確認することです。