私は間違いを犯し、「最後のタグへ」コミットを開始しました。これにより、コミットは「ブランチなし」になります。それらは、既存のブランチのヘッドに適用されるべきでした。 notが私の変更をプッシュしました。コミットがwrongブランチにある場合について他の質問をいくつか見つけましたが、今ではnoブランチがあるので、これを処理する方法がわかりません。
できれば、間違いを完全に消去し、変更を正しいブランチの最後に「移動」したいと思います。間違いを履歴に残さなければならない場合、少なくともそれらをマージする必要があります。
現在、デタッチHEAD状態です。これを解決するには、git branch <branchname>
またはgit checkout -b <branchname>
で新しいブランチを作成するだけです。これにより、ローカルブランチが作成され、プレイできるようになります。また、終了したら削除することもできます。
Gitのブランチはコミットポインターであるため、新しいブランチを作成すると、新しいブランチが現在のコミットをポイントし、マージすることもできます。
あなたの「間違い」は消去する必要はありません、前のコミットの上に新しいコミットを作成するだけです。履歴などは変更しませんでした。
編集:あなたのコメントに応じて、あなたがする必要があるのは:
git branch temp
git checkout master # or any other branch
git merge temp
git branch -d temp
git reflog
を使用してすべてのコミットを表示できます
したがって、単に別のブランチにアクセスして、必要なコミットに対してgit cherry-pick <commit-hash>
を実行できます。
しかし、私はspatz
が述べたような分岐方法を好むでしょう。
注:あなたも持っています
どちらの場合でも、tmp
ブランチを実行し、それを実際のブランチにマージすることが解決策です。
コミットしたいmaster
ブランチがあるのに、誤ってデタッチされたHEAD
にコミットした状況がありました(ここで、コミットハッシュは重要ではありませんが、状況):
$ git branch
* (detached from 29d2cfb)
master
ここに私の簡単な修正がありました:
$ git branch -f master HEAD
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'Origin/master' by 1 commit.
(use "git Push" to publish your local commits)
ケーキ。
このトリックが機能するのは、master
が最初に誤ったコミットを行ったのと同じコミットを最初に指していた場合のみであることに注意してください。そうでない場合は、リベース(またはチェリーピック、またはマージ...)する必要があります。