→Git関連
→GitHub関連
- git remote ... ローカルリポジトリがどのリモートリポジトリと紐づいているか調べる
- git add したのを取り消したいときは git reset または git restore
rebase と merge の違い†
- git rebaseを初めて使った際のまとめ 2018.2
- トピックブランチcheckoutから git rebase master などとする。
- この場合、rebase した master ブランチ側の最新状態をトピックブランチにマージする
- rebase後はトピックブランチはあたかも master 側の最終コミット後から分岐したかのようになる
- こわくないGit 2012
- コミットには1つ前のコミットへのポインタがある。この一連をコミットグラフと言う
- merge には2種類ある。Fast-Forward と Non Fast-Forward
- Fast-Forward(早送り)はmasterのラベルをtopicの最新コミットの位置へ張り替えるだけ。topicのコミットとmasterのコミットが枝分かれしていない場合に使える。
- FFは処理が簡単だが、「ここからここまでマージした」という履歴が残せないため、revert するときにコミット位置をユーザが調べる必要が生じる。
- Non Fast-Forward topicとmasterが枝分かれしていたとき、真面目に普通にマージすること
- rebaseのイメージ↓
- 共有しているブランチ(リモートでブランチ作成したのを共有しているブランチ)でリベースしてはいけない。pushできなくなるため。
- rebaseするとコミットがまとまるので見やすくなるが欠点もあり、pushされたブランチをリベースするとpushできなくなる。マージしたという事実は失われる。マージに比べてコンフリクトの解消が面倒。
revert と reset の違い†
$ git revert <commit>
$ git reset <commit>
- git revert と git reset はどちらもコミットの取消に使えるコマンド。違いは、どのように元のコミットを取り消すかという点
- git revert: git revert コマンドは、新しいコミットを作成して、その新しいコミットで元のコミットの影響を取り消します。そのため、元のコミットの記録は残り、他の人が参照することができます。また、git revert コマンドは、元のコミットを取り消した後に新しいコミットを行うため、再度 push する必要があります。
- git reset: git reset コマンドは、ローカルリポジトリのHEADとブランチのポインタを前に戻すことで、元のコミットを取り消します。そのため、元のコミットの記録は残りません。また、git reset コマンドは、元のコミットを取り消した後に、新しいコミットを行わないため、再度 push する必要はありません。
- git revert は元のコミットを取り消した後に新しいコミットを行うのに対し、git resetは元のコミットを取り消した後に新しいコミットを行わない。
また git revert は元のコミットを取り消した後に他の人も参照できるのに対し git reset は元のコミットを取り消した後に他の人は参照できない。
ブランチの削除†
- git で作ったブランチを削除するには、 git branch コマンドを使用します。
- 1ではローカルブランチを削除します。2ではリモートブランチを削除します。
- 注意: git branch -d は、まだマージされていない変更を含むブランチを削除しようとすると、エラーが発生します。
- その場合は、 git branch -D <branch-name> を使用して強制的に削除します。
- また、git push <remote> --delete <branch-name> で削除する場合、該当のブランチがローカルに存在しない場合にはエラーが発生します。