fjordbootcampのGit・Githubの課題で学ぶことが多くて、混乱しているので、一つ一つ手順を確認しながら、Gitの基本的な操作を試してみました。
この記事では
- ローカルとリモートのリポジトリを繋げる
- リモートでブランチを作る
- stashを試めす
- pull --rebaseを試す
- mergeを試す
1. ローカルとリモートのリポジトリを繋げる
まずは、ローカルのリポジトリを作ります。今回はgit-practiceという名前にします。
ディレクトリを作ったら、git init
でgitのリポジトリを新規に作成します。
次は、そのディレクトリの中に適当なファイルを作ります。
今回は、readme.txt
にします。git status
で確認してgit add readme.txt
で作成したファイルをaddしてみます。そして、git commit
してみます。
ここで、git add
とはワーキングツリーの内容をインデックスに登録させる操作を言います。
Gitでは、ワーキングツリーの内容をコミットする前に、一度インデックスという場所に作業内容を登録する必要があります。この操作を行ってくれるのがgit add
なのです。
一度、インデックスに登録することによってcommit
する必要がない内容などを選んでcommit
することができるのです😆
ここまでは前準備で、Githubを使ってローカルとリモートのリポジトリを繋いで行きます❗️
まずは、Githubにアカウントを作成しましょう(ここでは省略)
右上のNew repository
を選択すると、このような画面が出てきます。Repository name
はローカルのリポジトリの名前と同じにします。そして、簡単な説明を書いて、publicを選択(練習用なのでどちらでも良いと思います)。readmeはあるので、チェックは入れずに、そのままCreate repository
で新しいリモートリポジトリを作ります😆
スクリーンショット
そうすると、このような画面となります。接続方法をHTTPSか、SSHを選べますが、パスワードをいちいち打つのが面倒なため、今回はSSH接続にします。SSH接続を行うためには、GitにSSHキーを登録しなければなりませんが今回は省略します(Connecting to GitHub with SSHに方法が書いてあります。
ここまできたら、ターミナルに戻ります。
git remote add <Remotename> <URL>
でローカルとリモートのリポジトリをつなぐことができます。
この時、<Remotename>
はメインのリモートサーバの場合はorigin
とすることが慣習のようです。
一応、git remote -v
でリモートの設定を確認することができます。
そうしたら、ローカルでの作業をリモートにアップしましょう。この時使うのが、git push <リモートのリポジトリの名前> <アップしたいローカルのブランチの名前>
です。
スクリーンショット
これで、ローカルリポジトリの内容をリモートに反映させることができました😆
2. リモートにブランチを作る
次にリモートにブランチを作る方法です。これはローカルで一度ブランチを作ってから、そのブランチをプッシュすることで作成できます。
まずは、git branch <ブランチ名>
でブランチを作ります。今回は、ブランチ名をadd-greeting
にします。
ブランチが作れたかどうかgit branch
でチェックしましょう。
作れてますね。そしたら、git checkout add-greeting
で、add-greeting
ブランチに移動して、変更を加えましょう。readme.txt
を開いて、適当に変更を加えて行きます。
さっきの手順と同じように、git add <ファイル名>
でインデックスに変更履歴を格納。そして、git commit <ファイル名>
でコミットします。
そして、いよいよ、リモートリポジトリにプッシュします。git push <リモートのリポジトリ名> <プッシュするブランチ名>
です。今回、リモートのリポジトリ名はorigin
です。
成功したでしょうか?Githubをチェック👀
無事にリモートにブランチが作成されました😆
3. stashを試してみます。
stash
とは?
コミットしていない作業内容を一時的に退避させて置くことができる操作のことです。例えば、「このブランチで作業してたけど、急に他のブランチの作業をやらなければならなくなった💦でも、コミットするほど、作業終わってないし・・・」という時にstash
が使えます。
例えば、新しくローカルのadd-greeting
でsample.txt
ファイルを作ります。ですが、いきなりmasterで作業をしなくちゃいけなくなってしまった💦
そこで、stash
です。一度、sample.txt
をaddして、使います。実際にstash
できているかを見るには、git stahs list
でstash
されている作業の一覧が見れ、 git stash show stash@{N}
でN番目にスタッシュしたファイルの一覧がみれます。
しっかりスタッシュできているようです。
このstash
した作業を適用する際には、stash pop
を行います。
適用できました😆
4. pull --rebaseを試す
そもそも、merge
とpull --rebase
とはどう違うのかという話ですが、 それはgit pull と git pull –rebase の違いって?図を交えて説明します!でとても分かりやすく説明されていますので、ご覧ください。
まず、Githubのページから直接リモートリポジトリにファイルを置いてみます。今回はpractice.rb
というファイルを置きます。
これで、リモートリポジトリのみに変更が加わった状態です。ここから、pull --rebaseを試してみます。
git log
で確認して、成功🔥
5. mergeを試す
最後にmerge
を試します。
今はbranchがmaster
とadd-greeting
の2つです。このadd-greeting
をmaster
にmergeしてみます。
スクリーンショット
スクリーンショット
readme
にadd-greeting
の作業内容が取り込まれているため、merge
成功😆
これをpush
してみると、しっかりリモートリポジトリに反映されている!
まとめ
このように自分でまとめてみると、知識が整理されて、頭の中がスッキリした感じになりますね。アウトプットを意識して今後の勉強に取り組んでいきます💪
理解が間違っている部分がありましたら、ぜひ教えてください🙇♂️
参考サイト
【簡単解説】Gitリポジトリの新規作成するinitコマンドの使い方