https://kaityo256.github.io/github/advanced/index.html
を参考にさせていただいた。(以下抜粋)
1)detached HEADの対処
git switchとgit restoreは追加された機能。以前はgit checkoutが使われていたが、git checkoutに役目が多すぎたためにコマンドが分けられたとのこと。
$ git log --oneline
9b662ef (HEAD -> main) test
9b662ef (HEAD -> main) test
$ git checkout 9b662ef すると、以下の説明が出てくる
Note: switching to '9b662ef'.You are in 'detached HEAD' state.
git switch -c <new-branch-name>
Or undo this operation with: git switch -
Or undo this operation with: git switch -
ブランチを介さないでGitを操作するのは事故のもと。
git switchは直接コミットを指定することはできず、コミットハッシュとブランチ名を同時に指定する必要があるので、安全。
$ git switch -c newbranch 9b662ef というように。
git checkoutの代わりにgit switchを使った方が良い。
(同様な理由でファイルの修正を元に戻すのもgit restoreを使った方が良い。)
※detached HEAD になったら「ブランチをつけてmainに戻る」が原則。
2) Rejectの対処
git push で ! [rejected] すでに、originが変更されているのに気づかず、pushするとrejectされてしまう。
git fetchで ローカルのorigin/mainがリモートの作業を反映したコミットを指す。ローカルのmainと、origin/mainは、同じコミットから歴史が分岐した状態になる。
あとはマージする。
git merge origin/main 衝突したら、適切に修正してgit add、git commit
これで、リモートのmainと歴史を共有しているので、そのままgit pushができる。
0 件のコメント:
コメントを投稿