これからgitのコマンドや使い方についてまとめていきます。
また、トラブルをどのように解決していったのかをまとめていきたいと思います。
私は初めてgitに触れる中で様々なことを学びました。
この記事を書こうと思った理由は大きく分けて2つあります。
1つ目は、gitのコマンドを実行した際にイメージとは大きくかけ離れた動きをしたからです。
2つ目は、gitのトラブルを解決するにつれて対処方法が分かってきたので今のうちにきちんと振り返ってまとめておきたいと思ったからです。
今回はコマンドのイメージと実際の動きを一致させて、gitを使って困った時に見返せるようにまとめていきたいと思います。
内容が多いので前後編分けて書いていきたいと思います。
今回は前半でgitコマンドの使い方についてみていきましょう。
1. wrapとVSCodeでの開発環境の準備
まず、warpとVSCodeをインストールします。 そして、warpを開き以下のコマンドを実行します。 usernameには自分の名前を入力します。 emailには自分のメールアドレスを入力します。git config --global user.name "username"
git config --global user.email "email"
次にVSCodeをエディタとして使うために以下のコマンドを実行します。
git config --global core.editor "code --wait"
2.gitのローカルレポジトリの作成するには
まず、以下のコマンドを実行してディレクトリを作成します。 [ディレクトリ名]には好きなディレクトリ名を入れます。mkdir [ディレクトリ名]
cdコマンドで作ったディレクトリに移動した後に
次は以下のコマンドを実行しローカルリポジトリを作成します。
git init
これでgitが使えるようになりました!
3.リモートリポジトリのcloneを作成するには
まずリモートリポジトリとは、GitHabのことです。git clone コマンドを使うことで、GitHabからレポジトリからコードを持ってくることができます。リモートレポジトリと同じ内容を手元の作業スペース(ワークツリー)に反映することができます。git clone <リポジトリ名[ディレクトリ名]>
4.変更をステージに追加するには
まずgitはワークツリー→ステージ→レポジトリの3段階構造になっています。 ワークツリーは手元の作業場所のことです。ステージは変更を記録する前の段階になります。レポジトリは記録をまとめるところになります。ワークツリーでの変更でステージに上がっていない変更が赤で表示され、ステージに上がった変更は緑で表示されています。ファイルの変更後はcommand+Sで保存することを忘れないようにして下さい。ワークツリーの変更をステージに追加するコマンドが以下のコマンドです。このコマンドを実行することで記録をする前の段階まで持っていくことができます。 私はよく全ての変更をステージに追加してたので .を使っていました。git add <ファイル・ディレクトリ名>
git add .
5.レポジトリに変更を記録するには
さっきの続きになりますが、git add した後は変更を記録するために git commitします。 このコマンドはファイル名やディレクトリ名は指定しないのでそのまま実行することが多いです。 commitするコマンドを実行したあとにエディターが立ち上がりコミットメッセージを入力し保存して閉じるとcommitができます。コミットメッセージの記入後はcommand+Sで保存することを忘れないようにして下さい。また、オプションでよく使っていたのは -mオプションです。-mオプションを使うとエディターを使わなくてもcommitすることができます。以下実行するコマンドです。messageには簡潔でわかりやすいメッセージを入力します。git commit
git commit -m "メッセージ"
6.現在の変更内容を確認するには
先程、赤とか緑とか言ってたのがこのコマンドを使うと表示されます。これは、手元のワークツリーにある変更を赤でステージにある変更を緑で、リポジトリにある記録されている変更はnothing to commitと表示されます。色がついている時は、きちんと変更が記録されていないものがあるということです。現在の変更内容を確認するコマンドは以下のコマンドです。git status
7.変更した箇所を確認するには
変更した箇所だけ確認したい時は、以下のコマンドを使います。 git statusを使うよりピンポイントで変更差分の確認ができます。git diff <ファイル名>
git diff --staged
8.変更履歴を確認するには
以下のコマンドで変更履歴を確認することができます。 コミットメッセージや時間など詳細な情報も確認することができます。 また、便利なオプションもたくさんあります。--onelineを使うと一行で各履歴の概要を表示してくれます。 -n <行数>を指定すると最新の情報から<行数>分だけ表示してくれます。--oneline -n <行数>のように連続してオプションをつけることが可能です。git log
git log --oneline -n 3
9.ディレクトリやファイルを削除するには
ディレクトリやファイルを削除するには以下のコマンドを使います。 ディレクトリを削除するときは -rオプションを忘れずにつけましょう。 Linux触ったことある人は、Linuxのコマンドにgit がついただけなので関連付けると覚えやすいです。git rm <ファイル名>
git rm -r <ディレクトリ名>
10.ファイル名を変更するには
ファイル名を変更するには以下のコマンドを使います。 mvコマンドを使うと消して新しいファイルを作成する手順を一回で終わらせることができるので楽です。git rm <既存ファイル名> <新ファイル名>
11.リモートレポジトリ(GitHab)へ送信するには
今まではワークツリーの操作、ステージでの操作を見てきましたが、ローカルレポジトリの変更をリモートリポジトリ(GitHab)に保存するにはpushコマンドを実行する必要があります。git push origin mainと打つと、originにmainのローカルレポジトリの内容を送りますという意味になります。以下コマンドです。git push <リモート名(originなど)> <ブランチ名(mainなど)>
12.ファイルの変更を取り消すには
間違えて編集しちゃった、元のファイルの状態に戻したいなという時ありませんか。そんな時はファイルの変更を取り消す以下のコマンドを使います。これはワークツリーで作業した変更を削除するコマンドです。.を指定するとワークツリーの変更を全て取り消すことができます。git checkout -- <ファイル・ディレクトリ名>
git checkout -- .
13.ステージした変更を取り消すには
git add を使って間違って変更をステージに上げっちゃった!そんな時は以下のコマンドを使います。 ステージに上げたファイルの変更を取り消しワークツリー(手元)に戻すことができます。git reset HEAD <ファイル・ディレクトリ名>
git reset HEAD .
14. 直前でコミットをやり直すには
間違えてcommitしてしまった、commit戻せないかな。そんな時は以下のコマンドを使います。 直前に行ったcommitをやり直すことができます。ただ、注意点としてpushしたcommitはやり直してはいけないということを覚えておいて下さい。git commit --amend
15.複数のコミットをやり直すには
複数のコミットをやり直す方法もあります。 git rebase -i HEAD~3コマンドを使うとエディターに直近の3つのコミットが表示されるのでやり直したいコミットをeditに変えます。また、エディターで削除したり、順番を変えたりすることもできます。git rebase -i HEAD~3
編集後、amendコマンドを実行し、continueコマンドでリベースを完了させます。
git commit --amend
git rebase --continue
16.コミットをまとめるには
コミットをまとめるにはsquashを使います。 git rebase -i HEAD~3を実行しエディターで1行目以外のpick→squashに変更します。 以下コマンドです。git rebase -i HEAD~3
17.コミットを分割するには
コミットを分割するにはこの順番で実行します。リセットしてコミットをやり直して分割します。git reset HEAD^
git add fail1
git commit -m "fail1修正"
git add fail2
git commit -m "fail2修正"
18.リモートリポジトリから情報を取得するには
リモートリポジトリから情報を取得する方法は2種類あります。 1つ目はリモートリポジトリからローカルリポジトリに情報を持ってきて、ローカルリポジトリからワークツリーに持ってくる方法です。git fetchとgit mergeの二つのコマンドを実行します。git fetch <リモート名(origin main)>
git merge <リモート名(origin main)>
2つ目はリモートリポジトリからワークツリーに持ってくる方法です。 流れはリモートリポジトリ→ローカルリポジトリ→ワークツリーと同じ流れになりますが、git pullの一回だけを実行するだけで手元に持ってくることができます。
git pull <リモート名(origin main)>
2つ目の方法は1つ目の操作より特殊な処理になるので基本的には1つ目の方法がおすすめです。
また、リモート名はgit remote -vコマンドで確認することができます。
発展
git pull --rebaseというコマンドがあります。これはfetch(情報を取ってくるコマンド)+rebase(履歴をきれいに整えて統合するコマンドがあります)
作業の最後に git pull --rebaseコマンドを使って履歴をきれいに整えてGitHabと同じ状態するのでよく使うコマンドです。
19.リモートの詳細情報を表示するには
リモートの詳細情報を表示するには以下のコマンドを使います。 表示される情報はfetchやPushのURL、リモートブランチ、git pullの情報、 git pushの情報などとリモートリポジトリとローカルリポジトリのやり取りを確認することができます。git remote show <リモート名(origin)>
20.リモートを変更・削除するには
リモートもファイルのように変更削除ができます。 リモートの変更削除をするには以下のコマンドを使います。git remote rename <旧リモート名> <新リモート名>
git remote rm <リモート名>
21.ブランチを新規追加する
ブランチとは自分専用の作業スペースのことです。ブランチを作ることで複数人で同時に開発作業が進められてとても便利です。ブランチを新規作成するには以下のコマンドを使います。git branch <ブランチ名>
22.ブランチの一覧を表示する
ブランチの一覧を表示するには以下のコマンドを使います。 自分が何のブランチを作ったか忘れたり、他の人のブランチを確認したりするときに使えます。git branch
23.ブランチを切り替える
ブランチを切り替えるには以下のコマンドを使います。 また、-bオプションをつけることでブランチを新規作成+切り替えを行うことができます。git checkout <既存ブランチ>
git checkout -b <新ブランチ>
24.変更をマージ(merge)するには
2つのブランチの情報を統合するときにマージを使います。一般的には、mainブランチに他のブランチをマージして開発していくことが多いです。例えば、headerブランチで作業した内容をmainブランチに取り込むにはmainブランチに切り替えてgit merge headerを実行します。するとheaderブランチの内容がmainブランチに統合されます。git merge <統合したいブランチ名>
25.変更をリベースするには
リベースとマージが異なる点は、リベースは履歴をきれいに整えて統合するのに対し、マージは履歴はそのままの状態で統合します。状況によって使い分けします。リベースするには以下のコマンドを使います。git rebase <統合したいブランチ名>
26.ブランチを削除・変更するには
ブランチ名を変更するにはまず変更したいブランチに移動します。そこで以下コマンドを実行します。 するとブランチ名が変わります。git branch -m <ブランチ名>
ブランチ名を削除するには以下のコマンドを使います。
-dがついている方はmergeしてないブランチを指定した場合削除できません。
-Dがついている方はmergeしていなくても強制的に削除できます。
git branch -d <ブランチ名>
git branch -D <ブランチ名>
27.タグの一覧を表示する
タグを一覧で表示することができます。git tag
28.タグを作成する
タグを作成するには以下のコマンドを使います。 messageには好きなメッセージを入れます。git tag -a [タグ名] -m "message"
29.タグをリモートリポジトリに送信する
タグをリモートリポジトリに送信するには、以下のコマンドを使います。git push [リモート名][タグ名]
30.作業を一時避難してブランチを切り替えるには
ブランチを切り替えたいけど作業は残しておきたいそんな時は以下のコマンドを使います。
git stash
31.stashした作業を確認するには
一時中断した作業の一覧を確認するには以下のコマンドを使います。git stash list
32.中断した作業を復元・削除するには
中断した作業を復元するには以下のコマンドを使います。git stash apply
また、中断した作業を削除するには以下のコマンドを使います。
git stash drop
git stash clear
33.リモートリポジトリとローカルリポジトリを繋ぐ方法
まずレポジトリを作成します。名前だけつけて他の設定項目はデフォルトのままで作成します。次にtokenを作成します。名前をつけて、Repository accessは、さっき作ったレポジトリを選択します。Repository permissionsは Contents と Pull requsests を Read and writeに設定します。その後、コマンドを打ちます。git remote add origin https://github.com/<username>/github_test.git
git remote -v
git push origin main
pushコマンド実行後usernameとtokenのパスワードを聞かれるので入力します。
これでローカルリポジトリとリモートリポジトリが接続され、情報がGitHabのリポジトリから見ることができます。
以上で前半部分のコマンドの基本的な使い方の解説を終了します。