2024年4月23日火曜日

detached HEAD 、Reject などよくあるミス対策をまとめてみた 備忘録

 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

$ 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 -

ブランチを介さないで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 件のコメント:

コメントを投稿