まず、現在どのブランチにいるのかを確認するにはどうすればよいですか?「gitbranch」と入力しましたが、返されました
* (no branch)
master
では、コミットするとき、これらの変更はどこにコミットされますか?
次に、マスターブランチに加えた変更をどのように取得できますか?
そのような状況で何かをコミットすると、コミットは通常と同じ方法で作成されますが、それを指すブランチはありません。後でコミットを見つけやすくするために(つまり、ハッシュを覚えたりreflogを使用したりせずに)、ガベージコレクターから保護するために、コミットした後でもそのコミットへのブランチを作成できます。
git commit
git branch tmp
その後、変更をマスターに戻す1つの方法は、チェックアウトされたコミットがマスターの親であると仮定して、次のようになります。
git rebase master
git checkout master
git merge tmp
git branch -d tmp
これは、それをローカルマスターに取り込み、リモートオリジンにプッシュするためのトリックを実行する必要があります
git stash
git checkout master
git stash pop
git add .
git commit -m "my changes.."
git push origin master
現在、「デタッチドヘッド」モードになっています。つまり、gitはあなたに嘘をついているわけではありません。あなたはブランチに参加していないか、名前のあるブランチに参加していません。
それにもかかわらず、現在のコミットにはまだ履歴があります。行った変更はすでにコミットされていると想定します。そのため、作業コピーはクリーンです。そうでない場合は、git stash
またはgit commit
それらの変更を邪魔にならないように使用してください。
コミットをマスターに「アウト」するには、2つのオプションがあります。まず、現在のブランチとなるマスターを変更できます。
git branch -d master
git branch master
git checkout master
...これは、「マスター」のすべての変更が現在の名前のないブランチに存在する場合にのみ成功します。
もう1つの方法は、マスターをチェックアウトしてから、現在の変更をマージ/リベース/チェリーピックすることです。
git checkout master
git merge HEAD@{1} # HEAD@{1} is "where HEAD was previously"
git checkout HEAD~1
ブランチのHEADではないものをチェックアウトするなどの操作を行うと、「切り離されたヘッド」状態になります。