- 2021年3月18日
こんにちは、おかだです。
今回は。
業務で導入することになったのでなんとはなしにGitを使っているのですが、しっかりGitについて勉強したことないなぁということで……
「わかばちゃんと学ぶGit使い方入門」を読んでみました。
この記事では本の感想と、よく使うGitのコマンドを備忘録的にまとめましたので、CLIで操作される方にお役立て頂ければいいなぁなんて思います。
「わかばちゃんと学ぶGit使い方入門」の感想
漫画とSourceTreeの操作画面を交えながら丁寧に説明してくれるので、分かり易い&サクサク読めます。
Gitってなんぞや、Git (=ソースコードやドキュメントのバージョン管理) が必要な理由、基本的な操作等、まさに基礎の基礎が学べる内容です。
Gitに触れたことが無い人、触れ始めの人に紹介したい1冊ですね◎
ただこの本では、あくまで入門という位置付けなせいか、コマンドについては全く触れられていません。SourceTreeで操作する前提で書かれています。
CLIで操作する方にとっては実用的でないかも?
ということで、自分の備忘録も兼ねて、普段よく使うコマンドをまとめておこうと思います。
Gitコマンド備忘録
まず、私は最初「gitのコマンドってそもそもどこで実行するのよ?」という壁にぶち当たったのでそこから。
スタンダードなものはBashでしょう。
https://gitforwindows.org/
ここからダウンロードできます。
ダウンロードしたexeを実行して、インストールし、Bashを起動。
起動したてはgitでバージョン管理しているディレクトリに居ないかもしれない(というかたぶん居ない)ので、その場合はcd 'gitでバージョン管理しているディレクトリのパス'
コマンドを実行して、カレントディレクトリを移動してください。
ではさっそく、コマンドをざざざっと記録していきたいと思います。
リポジトリまわり
クローン
公開されているリポジトリをローカルにコピーします。
$ git clone リポジトリのURL
ブランチまわり
ブランチの作成
新たにブランチを作成します。
$ git branch ブランチ名 # または $ git checkout -b ブランチ名 # 「checkout -b」の場合は作成と同時に作成したブランチに移動します。
ブランチの一覧表示
作成済みのブランチを一覧表示します。
オプションの「-a」がない場合はローカルブランチの一覧となるので、自分が作成したものだけが表示されます。
「-a」がある場合は、同一リポジトリ内に存在する公開状態のブランチが全て表示されます。
$ git branch
ブランチの移動
別のブランチに移動します。
$ git checkout ブランチ名
ローカルのブランチ名の変更
タイプミスがめっちゃ多い私の救世主。
# 現在のブランチの名前を変更する場合は「新しいブランチ名」を指定するだけでOKです。 $ git branch -m 古いブランチ名 新しいブランチ名
ブランチのマージ
別ブランチの内容を現在のブランチに取り込みます。
$ git merge ブランチ名
ブランチの削除
ブランチを削除します。
$ git branch -d ブランチ名 # または $ git branch -D ブランチ名 # 「-d」の場合、マージ済みのブランチのみを削除できます。 # 「-D」の場合、どんなブランチでも削除できます。
コミット/プッシュ/プルまわり
ステージング
コミットの準備段階。
変更のある複数ファイルの内、これとこれをコミットしますよ~とピックアップするみたいな。
コミット対象を選択する感じです。
$ git add ファイル名 # または $ git add -A # 「-A」の場合、すべての変更を含むワークツリーの内容をインデックスに追加(ステージング)します。
コミット
ステージングしたファイルをコミットします。
$ git commit -m "コメント"
プッシュ
コミットしたコンテンツをリモートリポジトリにアップロードします。
$ git push リモート名 ブランチ名
プル
リモートリポジトリのコードをローカルリポジトリに取り込みます。
$ git pull
コミット履歴の表示
今までのコミット履歴を表示します。
ハッシュ値とコメントが表示されます。
(なのでコミット時には何を変更したのか分かり易いコメントを付けておきましょう。)
$ git log
コミットのリセット
コミットを取り消します。めっちゃよく使う。
$ git reset --mixed HEAD^ # または $ git reset --soft HEAD^ # 「HEAD^」によって、直前のコミットを指定しています。 # 「HEAD^」の代わりに「昔のコミットのハッシュ値」を指定することで特定のコミットを取り消せます。 # 「--soft」の場合はステージング状態やコミットコメントを維持した状態でリセットされます。 # 「--mixed」の場合はステージング状態やコメントもリセットされます。
コミットをまとめる
本を読んで新たに得た知識!
複数のコミットを一つにまとめます。
これでコミットがキレイになっちゃうなぁ~。
$ git merge --squash ブランチ名 # このコマンドを実行しただけの状態ではコミットされていないので、git commitしてスカッシュマージを完了してください。
Stashまわり
変更の一時退避
ブランチを移動したり、一旦プルやマージをしたい場合、コミットされていない変更があるとエラーとなってしまいます。
そこで、コードを一時的に退避させます。
これはもう、はちゃめちゃによく使う。これがないと生きていけない。
$ git stash
退避したコードの確認
stashした一覧を確認できます。
$ git stash list
退避したコードの取り出し
stash (退避) したコードを取り出し (戻し) ます。
最新のstashであれば「stash@{添え字}」は無くても取り出せますが、ついつい書いちゃいます。
$ git stash pop stash@{添え字}
最後に
どんなツールを使うにせよ、バージョン管理は開発の上でなくてはならない存在です。
機能を追加したけどバグが出たから一時的に前回までの状態に戻したい時、試行錯誤してソースを弄り回して元に戻れなくなった時、自分がどこを変更したのか把握できなくなった時……
いつだって救いの手を差し伸べてくれたのはバージョン管理システムでした( ˘ω˘ )
この記事が、少しでも皆さんの開発のお役に立てますように。
素敵なGitライフを!