koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Gitの基本的な操作を試してみました💪

fjordbootcampのGit・Githubの課題で学ぶことが多くて、混乱しているので、一つ一つ手順を確認しながら、Gitの基本的な操作を試してみました。

この記事では

  1. ローカルとリモートのリポジトリを繋げる
  2. リモートでブランチを作る
  3. stashを試めす
  4. pull --rebaseを試す
  5. mergeを試す

1. ローカルとリモートのリポジトリを繋げる

まずは、ローカルのリポジトリを作ります。今回はgit-practiceという名前にします。 ディレクトリを作ったら、git initでgitのリポジトリを新規に作成します。

f:id:NMP300:20190907110417p:plain
ディレクトリを作ってgitでの管理を始める

次は、そのディレクトリの中に適当なファイルを作ります。 今回は、readme.txtにします。git statusで確認してgit add readme.txtで作成したファイルをaddしてみます。そして、git commitしてみます。

f:id:NMP300:20190907160412p:plain
`git commit`してみる

ここで、git addとはワーキングツリーの内容をインデックスに登録させる操作を言います。

Gitでは、ワーキングツリーの内容をコミットする前に、一度インデックスという場所に作業内容を登録する必要があります。この操作を行ってくれるのがgit addなのです。

一度、インデックスに登録することによってcommitする必要がない内容などを選んでcommitすることができるのです😆

ここまでは前準備で、Githubを使ってローカルとリモートのリポジトリを繋いで行きます❗️

まずは、Githubにアカウントを作成しましょう(ここでは省略)

右上のNew repositoryを選択すると、このような画面が出てきます。Repository nameはローカルのリポジトリの名前と同じにします。そして、簡単な説明を書いて、publicを選択(練習用なのでどちらでも良いと思います)。readmeはあるので、チェックは入れずに、そのままCreate repositoryで新しいリモートリポジトリを作ります😆

スクリーンショット

f:id:NMP300:20190907160539p:plain
Githubで新しいリポジトリを作る

そうすると、このような画面となります。接続方法をHTTPSか、SSHを選べますが、パスワードをいちいち打つのが面倒なため、今回はSSH接続にします。SSH接続を行うためには、GitにSSHキーを登録しなければなりませんが今回は省略します(Connecting to GitHub with SSHに方法が書いてあります。

f:id:NMP300:20190907163358p:plain
新しいリポジトリの作成が完了

ここまできたら、ターミナルに戻ります。

git remote add <Remotename> <URL>でローカルとリモートのリポジトリをつなぐことができます。

この時、<Remotename>はメインのリモートサーバの場合はoriginとすることが慣習のようです。 一応、git remote -vでリモートの設定を確認することができます。

そうしたら、ローカルでの作業をリモートにアップしましょう。この時使うのが、git push <リモートのリポジトリの名前> <アップしたいローカルのブランチの名前>です。

スクリーンショット

f:id:NMP300:20190907163439p:plain
リモート接続が完了

f:id:NMP300:20190907163553p:plain
`git push`が完了

f:id:NMP300:20190907163639p:plain
リモートリポジトリにちゃんと反映されてます

これで、ローカルリポジトリの内容をリモートに反映させることができました😆

2. リモートにブランチを作る

次にリモートにブランチを作る方法です。これはローカルで一度ブランチを作ってから、そのブランチをプッシュすることで作成できます。

まずは、git branch <ブランチ名>でブランチを作ります。今回は、ブランチ名をadd-greetingにします。 ブランチが作れたかどうかgit branchでチェックしましょう。

f:id:NMP300:20190907163734p:plain
ブランチが作れてますね

作れてますね。そしたら、git checkout add-greetingで、add-greetingブランチに移動して、変更を加えましょう。readme.txtを開いて、適当に変更を加えて行きます。

さっきの手順と同じように、git add <ファイル名>でインデックスに変更履歴を格納。そして、git commit <ファイル名>でコミットします。

f:id:NMP300:20190907163942p:plain
`git commit`しました

そして、いよいよ、リモートリポジトリにプッシュします。git push <リモートのリポジトリ名> <プッシュするブランチ名>です。今回、リモートのリポジトリ名はoriginです。

f:id:NMP300:20190907164022p:plain
ブランチをリモートにプッシュしました

成功したでしょうか?Githubをチェック👀

f:id:NMP300:20190907164056p:plain
Githubのリモートリポジトリにしっかりとブランチが作れている

無事にリモートにブランチが作成されました😆

3. stashを試してみます。

  • stashとは?

コミットしていない作業内容を一時的に退避させて置くことができる操作のことです。例えば、「このブランチで作業してたけど、急に他のブランチの作業をやらなければならなくなった💦でも、コミットするほど、作業終わってないし・・・」という時にstashが使えます。

例えば、新しくローカルのadd-greetingsample.txtファイルを作ります。ですが、いきなりmasterで作業をしなくちゃいけなくなってしまった💦

そこで、stashです。一度、sample.txtをaddして、使います。実際にstashできているかを見るには、git stahs liststashされている作業の一覧が見れ、 git stash show stash@{N}でN番目にスタッシュしたファイルの一覧がみれます。

f:id:NMP300:20190907164225p:plain
`git stash show stash@{0}`の結果

しっかりスタッシュできているようです。

このstashした作業を適用する際には、stash popを行います。

f:id:NMP300:20190907164257p:plain
`stash pop`の結果

適用できました😆

4. pull --rebaseを試す

そもそも、mergepull --rebaseとはどう違うのかという話ですが、 それはgit pull と git pull –rebase の違いって?図を交えて説明します!でとても分かりやすく説明されていますので、ご覧ください。

まず、Githubのページから直接リモートリポジトリにファイルを置いてみます。今回はpractice.rbというファイルを置きます。

これで、リモートリポジトリのみに変更が加わった状態です。ここから、pull --rebaseを試してみます。

f:id:NMP300:20190907164345p:plain
`pull --rebase`する前のログ

f:id:NMP300:20190907164554p:plain
`git pull --rebase`後のログ

git logで確認して、成功🔥

5. mergeを試す

最後にmergeを試します。 今はbranchがmasteradd-greetingの2つです。このadd-greetingmasterにmergeしてみます。

スクリーンショット

f:id:NMP300:20190907164640p:plain
`git merge`を実行

スクリーンショット

f:id:NMP300:20190907164712p:plain
`git merge`後のreadmeの様子

readmeadd-greetingの作業内容が取り込まれているため、merge成功😆 これをpushしてみると、しっかりリモートリポジトリに反映されている!

f:id:NMP300:20190907164746p:plain
pushした後のリモートリポジトリ

まとめ

このように自分でまとめてみると、知識が整理されて、頭の中がスッキリした感じになりますね。アウトプットを意識して今後の勉強に取り組んでいきます💪

理解が間違っている部分がありましたら、ぜひ教えてください🙇‍♂️

参考サイト

【簡単解説】Gitリポジトリの新規作成するinitコマンドの使い方

【簡単解説】Git addコマンドの使い方

git pull と git pull –rebase の違いって?図を交えて説明します!

[新人教育] 何も知らない人がGitとGitHubを独学で知る