Github desktopしか使ってなかった人間のgit学習

github desktopに頼らないgitコマンドたち

今までgithub desktopばかり使っていたため改めて学習。
・git init
リポジトリを作るときの最初のコマンド。
・git add
github desktopでは自動でchangeとしてaddされていたということで改めて便利さを感じる。
・git log
historyを見るようなもの。見慣れるまで時間がかかりそう。
・git commit
-mをいつもつけ忘れるので気をつける。
・git push origin [ローカルブランチ名]
これも流れでやってたのでコンソールで行うと忘れそう。
・git stash
github desktopではrevertと一緒に使うことが多くコミット済みをrevertしてブランチを切り替えてbring してた。コンソールでのbringはどのコマンドになる???
・git checkout
GUIでブランチの切り替え簡単かつ他の操作も一緒にできてたので、まだ慣れない。
・git reset
全部取り消すから危険なコマンドって勝手に認識してたんですがそうでもなさそう。

モード名 HEADの位置 インデックス ワークツリー
soft 変更する 変更しない 変更しない
mixed 変更する 変更する 変更しない
hard 変更する 変更する 変更する

の種類がある。
git reset --hard ORIG_HEADで取り消せる。
ORIG_HEADに保管場所が存在している。

HEADとは

今作業している場所を表す。<<これが今まで全然意識してなかった。

インデックスとは

git addして追加した保管場所

ワークツリーとは

実際にコードをいじっている場所

github desktopでやっているとここらへんの認識が曖昧になりがちです。

・git commit --amend
直前のコミットメッセージを修正。
github desktopではundoしてからコミット名変えてました。。
・git revert hash値
revertはよく触ってましたが、hash値が馴染みがない。
gitをコンソールで使うとhash値をよく使うようになるのでこれは特別覚えなくても良さそう。
・git cherry-pick [移動元のブランチでのハッシュ値]
反映させたい移動先のブランチでコマンドを入力してコミットを移動させる。
コンフリクトに注意!!

***・git rebase -i [ハッシュ値 or HEAD^]
squashを使ってコミットを統合したり、
コミットの順番を入れ替えたりと、コミットに関して色々できる。
コンフリクトに注意!!

git rebase [取り込みたいブランチ名]
コミットIDを変えて履歴を取り込む
git merge [取り込みたいブランチ名]
コミットIDを変えず履歴を取り込む
github desktopでいうcompare branchで取り込む方法と一緒

git でよくつかうチルダ(~)とキャレット(^)の違い

チルダ(~)は一個前のコミットを指す。
HEAD~~だったら今作業しているコミットの2つ前
・キャレット(^)は親コミットのこと
親コミットとは???
Git の HEAD^ と HEAD~ の違い - yu8mada
この記事がわかりやすかったです。