ほぼ全員が、一時的なブランチを作成するソリューションを提案しているようです。ここで、この「切り離された状態でコミットされた」問題が発生するたびに、通常は1回のコミット後に検出されることを認める必要があります。そして、その1つの小さなコミットのために1つのブランチ全体を作成します-あまりにも聞こえますよね?特に、すでに多くのブランチの間を飛び回っているプロジェクトでは。
それでは簡単な方法は何ですか?コミットハッシュを使用してください!
どうすれば入手できますか?
- を実行します
git log
。次のようなものが表示されます。
commit 10bf8fe4d17bb7de59586a7abb6db321f0786bb3 (HEAD)
Author: Someone <someone@something.com>
Date: So/me/day SO:ME:TI:ME
A commit message that doesn't mean much
commit a3cd1cedf1962916cdc2945f2bd2b271ec8b919d (origin/master, master)
Author: Someone <someone@something.com>
Date: Some/other/day SOME:OTHER:TIME
Another commit message that doesn't mean much
commit 1bfabbe09c70419070fe29ff1ed276c0207bbe10
Author: Someone <someone@something.com>
Date: Thu Jul 8 08:38:12 2021 +0530
Enough reading the example, focus on the answer!!
さて、それは通常の場合のように見えますが、あなたがそうするとき、git push
それは「すべてが最新である」と言うでしょう。
注意深い人は、それが「最新」ではないことに気付くでしょう。HEAD
マスター以外の場所です。
- それで、次は何ですか?ハッシュの最初の文字をコピーするだけ
10bf8fe4d1
です。そして、最初に、を実行しgit checkout master
ます。master
これにより、ブランチに移動します。そして今、あなたはすでにハッシュをコピーしているので。あなたはすることができますgit merge <hash>
。git log
今すぐやる
そしてVOILA:
commit 10bf8fe4d17bb7de59586a7abb6db321f0786bb3 (HEAD -> master)
Author: Someone <someone@something.com>
Date: S/om/eday SO:ME:TI:ME
A commit message that doesn't mean much
commit a3cd1cedf1962916cdc2945f2bd2b271ec8b919d (origin/master)
Author: Someone <someone@something.com>
Date: Some/other/day SOME:OTHER:TIME
Another commit message that doesn't mean much
commit 1bfabbe09c70419070fe29ff1ed276c0207bbe10
Author: Someone <someone@something.com>
Date: Thu Jul 8 08:38:12 2021 +0530
Enough reading the example, focus on the answer!!
今、HEAD
適切な場所にあるようです。
誰かが「ハッシュがない場合はどうなりますか?ぶら下がっているコミットについて何も知らず、ただ実行しただけです」と尋ねるかもしれませんgit checkout master
。心配しないでください、私はあなたをカバーしてもらいました。コミットハッシュは次の2つの場所にあります。
- あなたがしたとき
git checkout master
、あなたはgit
このように警告していました
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
10bf8fe A commit message that doesn't mean much
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 10bf8fe
Switched to branch 'master'
あなたはあなたの宝物を見ることができます(hash
)、そうですか?
- あなたがそれを見つけることができないと私に言わないでください。そこにあります。しかし、本当にできない場合は、を行うことができます
git reflog
。次のように表示されます。
a3cd1ce (HEAD -> master, origin/master) HEAD@{0}: checkout: moving from 10bf8fe4d17bb7de59586a7abb6db321f0786bb3 to master
10bf8fe HEAD@{1}: commit: A commit message that doesn't mean much
探していた宝物があることがわかります...ハッシュ。
これは、ダングリングコミットを使用してデタッチ状態で発生する可能性のあるすべてのシナリオをカバーしていると思います。次回は気をつけて!