【GitHub超初心者入門】この前初めてGitHubを使い始めたエンジニア見習いが書くGitHubの使い方と実践~とりあえず一緒に動かしてみようぜ!~

この記事は最終更新日から1年以上が経過しています。

たくさんの「いいね」ありがとうございます。
ちょっと別視点からバージョン管理システムの記事を書いてみました。
そちらもよろしければごらんくださいませ。
【Git】オレならこう説明する!Git初心者への用語説明

後、個人ブログもはじめましたのでよろしければ(宣伝)

3年ぶりにこの記事の続きをnoteで書きました。
https://note.mu/nahito/n/nded6e4dd7382

はじめに

「勝利にコミットせよ!」「結果にコミットせよ!」
……は?
何を言ってるかさっぱりわかりません.
コミットって何?つーかコミットって日本語で言うと何?言ってみろよ!!!
そんなエンジニア見習いがとうとうGitHubを勉強し始めました.
一緒にターミナルをいじりながら読んでいくと,理解が深まるかもしれません.

GitHubとは?

要は自分の書いたコードを公開するツールです.
企業では,その会社の中だけで公開し,バグやセキュリティ上の問題がないかなどを他の社員に見てもらい,レビューしてもらったりもしています.

GitHubのおおまかな仕組み

大まなかな仕組み

用語の説明

まず先に,訳の分からない用語の説明からしておきます.
すべて私なりの解釈なので,間違っていたら,ご指摘をお願い致します.

インデックス
これから登録するファイルが,以前とどう変わったかを登録する一時的な場所です

リポジトリ
貯蔵庫.データなどを保存しておく場所です

リモートリポジトリ
GitHub上の,データを保存している場所を指します

ローカルリポジトリ
GitHubに送信するデータを登録しておく,自身のPC上の場所を指します

コミット
GitHubでは,GitHubにデータを送信する前に一時的にローカル環境にデータを登録し,その後一気にGitHub上に送信します.
そのローカル環境にデータを登録することをコミットといいます.

プッシュ
ローカル環境に登録していた(コミットされた)データをGitHubに送信&公開することを言います.

GitHubの流れ

ここでは,GitHubにデータを送信するまでの大まかな流れと仕組みを説明します.

1)あなたのPCで開発した物を,ローカルリポジトリのインデックスに追加(アッド)します.
2)あなたのPCで開発した物を,ローカルリポジトリに登録(コミット)します
3)全て登録し終えた後,それらをGitHubに送信(プッシュ)します

以上です

実際に使ってみる

とりあえずMacintoshでやってみます.
GitHubのアカウントは適当に作れると思いますので,割愛します.

GitHubにリポジトリを作る(リモートリポジトリ)

ではまず,GitHub上にリポジトリを作ります.
TOPページ右下の,「+New Repository」を押してください・
+New Repository

次に,項目をうめて,「Create Repository」を押します.
これでリポジトリの作成が完了です.
Create Repository

表示されたページのURIを使いますので,とりあえずそのことを覚えておいてください.
URI

ローカル環境にリポジトリを作る(ローカルリポジトリ)

次にローカルリポジトリを作成します.
作る場所はどこでも良いのですが,とりあえずHOMEディレクトリの下にでも作っておきましょうか.

ターミナルで以下のコマンドを叩いていきます

terminal
$ mkdir github
$ cd github
$ mkdir gittest
$ cd gittest
$ git init

$ git initを叩くと,ローカルリポジトリが作成されます.

ファイルをローカルリポジトリに登録(コミット)してみる

では実際にファイルをローカルリポジトリに登録してみましょう.
適当にテキストファイルを作成します.
私はこれを作成したホームディレクトリ/github/gittestフォルダに保存しました.

test.txt
hello git!

次に,データの変更点を追加します.
今回の場合は「新規作成」ということになりますね.
これらはgitのコマンドで全部勝手にやってくれます.

$ git add test.txt

上記のコマンドを叩くと,変更点を勝手にインデックスに追加してくれます.
何もエラーが表示されなければ成功です.
例えば
fatal: Not a git repository (or any of the parent directories): .git
が表示されたら,git initが失敗している(ローカルリポジトリが作成できてない)ということになります.

インデックスにデータを追加したら,登録(コミット)します.

$ git commit -m "初めてのGitHub!"

このコマンドで,インデックスの内容が全てローカルリポジトリに登録されます.
ワオ簡単!

この時点では,『ローカル』リポジトリなので,GitHub上には反映されておりません.

GitHubにデータを送信する(リモートリポジトリにデータをプッシュする)

では,GitHubにデータを公開してみましょう.
先ほどのURIを使います.
URI

まず,インデックス(ファイルの変更点などのリスト?)をGitHubに作成.
$ git remote add origin https://github.com/あなたのUSER_ID/HelloGit.git

そしてコミットされたデータをGitHubに送信(プッシュ)します.
$ git push origin master

ここまでエラーなく進めると,GitHubにデータが登録されていると思います.
Push

とりあえずここまでのまとめ

さあ,いろいろコマンドが出てきたのでまとめてみます.(自分用も兼ねて

1)ローカルリポジトリを作成する
$ git init

2)ローカルリポジトリにファイルの変更点を追加(インデックスに追加)
$ git add ファイル名

3)ローカルリポジトリにインデックスに追加したファイルを登録
$ git commit -m "変更点などのコメント"

4)追加したインデックス(ファイルの変更点など)をGitHubに作成
$ git remote add origin リポジトリのURI

5)ローカルリポジトリのファイルをGitHubのリポジトリに送信
$ git push origin master

勝利にコミットせよ!
勝利に,ローカルリポジトリにデータを追加せよ!
うん,やっぱり意味わかりませんね.

プッシュしたデータを変更・更新してみる

せっかくGitHubにデータを公開したのですから,変更してみましょうか.
先ほどのtest.txtを編集してからプッシュしてみましょう.

test.txt
hello git!
Edit test!

1)変更をインデックスに追加
$ git add test.txt

2)ファイルを登録(コミット)
$ git commit -m "変更してみたよ"

3)データの送信
$ git push origin master

エラーなく進めたら,更新出来ていると思います.
変更

ブランチ(枝)とは?

ブランチを切る……マージする……これまたGitにはよく出てくるワードではないでしょうか?
枝を切って結合する?
ってか,「マージ」ってそもそも動詞だから「マージする」 = 「結合するする」じゃねーの?

用語説明

マージ
「結合する」という意味.
複数に分岐させた物をつなぎます

ブランチ
その名の通り「枝」.
一気にバージョンを上げる時などに,失敗した時用にコピーを作っておくイメージ

06.png

実際にブランチを作ってみる

まあ,まずはブランチを作ってみましょうか.

$ git branch testbranch

これで「testbranch」という名前のブランチが作成されます.
上図で言うところの「Ver.2.0β」のイメージですね.

なお,今ある(存在する)ブランチは,

$ git branch

で確認できます.

ブランチを移動する

$ git branchでブランチを確認すると,
「master」と「testbranch」というブランチがありますね?

ブランチを作ってチェックしてみた

今は「master」というブランチに「*」がついています.
これは今プッシュ(GitHubにデータを送信)すると,
masterブランチに全部データが書き込まれますよという意味になります.

いやいや,せっかくコピーを取ったのだからそっちに書き込んでいってもらわないと
困りますよね?

参照&書き換え先のブランチをtestbranchに変えてみます.

$ git checkout testbranch

これで再度$ git branchをすると,「*」の位置がtestbranchに移っていることが確認できます.

ブランチの移動の確認

作ったブランチにデータを送信してみる

では,testbranchにデータを送信(プッシュ)してみます.
まずはテキストを書き換えましょうか…

test.txt
hello git!
Edit test!
branch test!

1)インデックスに変更点を登録
$ git add test.txt

2)ファイルをローカルリポジトリに登録(コミット)
$ git commit -m "ブランチを作ってそのブランチにプッシュ!"

3)GitHubにローカルリポジトリのデータを送信(プッシュ)
$ git push origin testbranch
!注意!
今回は「testbranch」にデータを送信するので,
$ git push origin testbranch
です!

ではGitHub上に送信されているかどうかを確認してみます.
左のブランチのプルダウンから「testbranch」を選んでください.

ブランチの確認

すると,先ほどプッシュしたものが反映されていると思います.

ブランチの確認

ブランチを本筋に統合する

所謂「マージ」と言うものをしてみます.
ブランチを本筋に反映させます.

masterブランチに,testbranchを取り込みます.

1)まずは取り込み先のブランチを選択します.
$ git checkout master

2)そして,materにtestbranchを結合します.
$ git merge testbranch

3)最後に,結合情報をGitHubに送ります(プッシュ)
$ git push origin master
今回は「master」ブランチにデータをプッシュするため,コマンドは「master」になっています.

では反映されているかを確認してみます.
ブランチの確認

反映されていますね!
このようにしてバージョンデータを管理できるっぽいです.
いやー…便利!!
なのかな?

ここまでのまとめ

今回もコマンドをまとめてみます.

1)新しいブランチを作る
$ git branch ブランチ名

2)今あるブランチを確認する
$ git branch

3)ブランチを移動する
$ git checkout ブランチ名

4)ブランチを結合(マージ)する
$ git checkoutで,結合したいブランチに移動して…
$ git merge 取り込むブランチ名

で,「ブランチを切る」ってどのことですか…?

一旦ここまで

次はGitHub上のデータをローカルリポジトリにダウンロードする「プル(pull)」というのをやってみます.

続きをnoteで書きました!
よかったらぜひ!!
https://note.mu/nahito/n/nded6e4dd7382

nnahito
基本的に技術メモを発信しています。 Qiitaにも書きますが、最近は自分のブログ作ってみました。 そちらもぜひ御覧ください。 PHP書きます。 まれにJSも書きます。Svelteにはまってます。 Nimも書きます。 C言語出身(もうかけないと思うけど)なので、型付き言語に抵抗はそこまでありません。 おっさんです。
https://nnahito.com
nim-in-japan
Nim言語の日本コミュニティです。
https://nim-lang.org/
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
この記事は以下の記事からリンクされています
millefeuille初めてのGithubからリンク
ki01chiGitについて学んだことからリンク
過去の29件を表示する
コメント
(編集済み)

分かりやすい記事をありがとうございます。
Gitは仰るとおり慣れないとホント分かりづらいサービスなので助かります。
( Microsoftが買収した後、UI/UXが悪化しないとイイのですが。)

話を戻し、質問がございます。

参照&書き換え先のブランチをtestbranchに変えてみます.
$ git checkout testbranch

上記でブランチを変更したあと

3)GitHubにローカルリポジトリのデータを送信(プッシュ)
$ git push origin testbranch
!注意!
今回は「testbranch」にデータを送信するので,
$ git push origin testbranch

  • ブランチは testbranch のまま master へプッシュしてしまった場合や、逆にブランチは master のまま、testbranch へプッシュした場合
  • ブランチ変更の意義

についてがまだ理解できておらず、
よろしければ教えていただけませんでしょうか?

@think-a-lot ようこそ、Gitの世界へ!
ご質問、コメントありがとうございます!


  • ブランチ変更の意義

まず、ブランチの意味を覚えます。
masterブランチ」は、「完成品」を置くところです。
基本的にmasterブランチには製品としてリリースしていいものを置くところと考えてください。

ですので、開発中のコードなどは別ブランチで管理し、最後にmaterブランチにマージを行います。
Pull-Requestという機能で、masterへのマージがWeb上でボタン一つでできるようになります。


  • ブランチは testbranch のまま master へプッシュしてしまった場合や、逆にブランチは master のまま、testbranch へプッシュした場合

さて、ブランチ変更の意義の通り、masterブランチは「完成品」を置くところということがわかりました。
なので基本的に、「今自分が作業しているブランチにpush」しないといけません。

これは一人で開発しているときにはありがたみがよく分かりませんが、複数人で開発している場合、
あなたが今書いているコードを勝手に上書きされたら嫌ですよね?

自分のブランチ以外にpushするとそういう事が起こってしまいます。
なので、自分のブランチに対してpushするようにします。

蛇足

この記事を書いたとき、私もGitなんて全く知らず、「おお!動いた動いた!よし、コミカルに記事書くか!」という感じでした。
そろそろ書き直し&追記をしなきゃなー……

ご返答 誠にありがとうございます。

恐れ入りますが、質問内容について補足させてください。
より適切な言葉を考えましたところ、
"ブランチ変更の意義"というよりは、
"ブランチ移動の意義"と申し上げた方が良かったかもしれません。

記事にて

今は「master」というブランチに「 * 」がついています.
これは今プッシュ(GitHubにデータを送信)すると,
masterブランチに全部データが書き込まれますよという意味になります.
これで再度$ git branchをすると,「 * 」の位置がtestbranchに移っていることが確認できます.
~
参照&書き換え先のブランチをtestbranchに変えてみます.
$ git checkout testbranch

と書かれておられました。
これはブランチを testbranch に移動してしまえば、
master へのプッシュはできないという認識でよろしかったでしょうか?
つまり
$ git push origin master
と打ってもプッシュはされずエラーになると思いました。

そしてもし、testbranchに移動後 "masterへのプッシュができない" のであれば
$ git push origin testbranch
というように、testbranch にしかプッシュできないのに、
再度コマンドに testbranch のワードを入力することに違和感を覚えました。
もしかすると testbranch のワードを省略できるのかもと思いました。

また逆に、testbranch に移動後 "masterへのプッシュができてしまう" のであれば
ブランチを移動する必要性が不明となります。

言葉が至らず申し訳ありません。
宜しければこの点についてはいかがでしょうか?

@think-a-lot コメントありがとうございます!

これはブランチを testbranch に移動してしまえば、
master へのプッシュはできないという認識でよろしかったでしょうか?

確かにそのとおりです!
今いるブランチにpushするなら、git pushのみでできますね!

他のブランチにPushするには、
git push orign 元ブランチ名:push先ブランチ名
としなければいけませんね!

なるほど。理解できました。ありがとうございます。

初めまして。質問させていただきたいのですが、
”ローカル環境にリポジトリを作る”の項目で、
「ターミナルで以下のコマンドを叩いていきます」とご説明されていますが、
この「ターミナル」は、Windowsにおける「コマンドプロンプト」と読み替えて問題ないでしょうか。
また、その他、ご説明の中でMacとWindowsで何かしら読み替えが必要な箇所はございますでしょうか。

@yasuhiro8814

この「ターミナル」は、Windowsにおける「コマンドプロンプト」と読み替えて問題ないでしょうか。

問題ないです!
Linuxだと「端末」ですね!

多分他に読み替えはないと思いますね……
実際やってみてエラーになったらそのときにご質問いただければと!

(編集済み)

何を読んでも「分からない」+「出来ない」だったけど、あなた様の記事ではじめて一通りのことができるようになりました。感謝感謝…

@maxtaq
そう言ってくださる方がいるから、こうやって記事を公開したくなるんですよね!
こちらこそ感謝感謝!!

こんにちは。GitHubに登録してみたもののなんやねんこれわからんわい状態だったのですが、ようやく使うことができました。非常に感謝しています。この記事見ながら繰り返しトライしてみます!素敵な記事をありがとうございます!

@sakuron コメントありがとうございます!
こちらこそ、励みになるコメントありがとうございます!
頑張って便利に使えるようになってくださいね!

わかりやすい記事を書いていただきありがとうございます。質問なのですが、一つのリモートリポジトリには同一のディレクトリ内のローカルリポジトリのみからしかpushできないのでしょうか?
具体的に言うと、/home/usr/python/からpushされたローカルリポジトリに別のディレクトリ/home/usr/bashから同一のリモートリポジトリにpushすることが可能なのかということです。

@8M5MgHqNywfgw7q
できると思いますよ!
やってみてください~

@Mtk0g3 コメントありがとうございます!
お力になれてよかったです!

あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした