プログラミング初心者にGitを伝える

TL;DR

プログラミングを覚えこれからどんどん圧倒的な成長をして行くであろう、 モチベーション300%のエンジニアにgitを紹介したい


注意事項

あくまでgitの紹介に重きを置いているのですでにGit使っている人にはお勧めできません、 スッとブラウザバックをお勧めします。

その他・紹介内容にご指摘、提案、補足などあればコメントいただきたいです


余談


スピリチュアルプログラミングとは

コードの持つ本来の力を高める方法論

  • 一心不乱に祈ることでバグ発生率を抑える。
  • バグは作っていない。 俺が最強
  • 徹夜をすると絶対動くんだ。

マインドセット is 大事


開発しんどい

まぁ。ぶっちゃけしんどいときもあります。

  • 自分が実装したいことできないとか。
  • 作りたい機能の設計がうまくできないとか。
  • 実装できたはずなのに動かないとか
  • わけわからないバグとか
  • 意図してないバグとか
  • バグとか
  • bugね。
  • bug
  • bug..bug...bug.....

Debugしましょうね!!!


エンジニアとして業務に触れて察したこと

やればできる。!!

がんばれば、ちゃんと実装できる →楽しいです。 →しんどい分達成感半端ないなぁと。

わかんなかったら近くのできる人に聞けばいいんですよ。 近くのエンジニアはじゃないよ ><!!


agenda

  • git? 何それおいしいの??
  • git使わなきゃダメなの?
  • Let's git !

git? 何それおいしいの??

'\ ok Google! /' git とは


gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための
分散型バージョン管理システムである。

gitでは、全履歴を含んだリポジトリの完全な複製が作られる。
したがって、ネットワークにアクセスできないなどの理由で
中心リポジトリにアクセスできない環境でも、
履歴の調査や変更の記録といったほとんどの作業を行うことができる。
これが「分散型」と呼ばれる理由である。 
                                    from / wiki

え!!!なに!!!!どういうことなの????


難しいことは置いといて。┐(´-`)┌


git is 分散型バージョン管理システム

いいっしょ?良さそうでしょ??? 集中型より聞こえが良いでしょ??????

分散型: Aくん、Bくん、cちゃんがお互いにメモとりあうのと
集中型: Aくんが責任持ってメモをとる

→ Aくんのノートきえたらやばくない????????

いろいろあるんですが。分散型 is Good!!!


git流行ってます

・ git使ってない企業ってあるんですか?
・ 今時git使えないとエンジニアとしてやばいっすよ(偏見)

git 使いましょうよ!!!!!


ほら。ね。流行ってるでしょ。

  > 青git、赤svn、黄色subversion  

gitとは

  • gitめりっと
  • gitの構造理解など。
  • team開発
  • どうしたら慣れて行くのか


メリット


メリット(特徴?)

  • コーディングしている時にSaveができます
    • Pok○m○nのレポートみたいなね。
    • D○rag○nQuestの協会でのお祈りみたいな

gitを使うと好きなセーブポイントからもどれます。

  • ゲームのセーブストックみたいな感じ?
    • メインのセーブデータ:A
    • Aデータ引き継いで別キャラにする: B
    • (A or B)データ引き継いでネカマする用のキャラ

gitの概念


gitの概念

  • Gitってどうなってんの?
  • branch(枝分かれ)というものがある

→みてみましょう。


git とは

localのgit

なんかわかりにくいのでポップなかんじにしましょうか→


ポップなGit

gitの構造について


gitの構造について


branch(枝分かれ)


team開発


gitを使うチーム開発

  • Github
  • bitbucket
  • Gitlab
  • 自前のGitサーバー

等々ありますが、今回はGithubを利用します。


gitとgithub

gitとgithub(リモートリポジトリ)


どうしたら慣れて行くのか


Git、Githubを使うしかない


gitの教材など。

まとめさいと

【初心者向け】Git入門スライドまとめ|基礎から実践まで学びつくそう

Git 教材 Git 教材


Let's git


git config settings

これしとくと便利っぽいので

$ git config --global user.name "<NAME>"
//usernameはWhen,Who,Whatの情報になるので
//GithubAccountName or 本名がおすすめ
$ git config --global user.email "<EMAIL>"
 //gitのusername && email の設定
$ git config --global color.ui auto
 //なんか見やすくしてくれるので

$ git config --global user.name 
$ git config --global user.email 
 //->ちゃんとひょうじされていればおk

git command not found ってなる人は win : https://www.granfairs.com/blog/cto/install-git-for-windows https://www.granfairs.com/blog/cto/install-sourcetree-for-windows

mac: https://qiita.com/takm-reason/items/1c368d14a76cf1ccedde


では実際に始めましょう

  • まずは作業用のRepoを用意したので下記の準備をしてください
$ cd ~/<dir name>

$ git clone https://github.com/fumihumi/git_practice_repo.git

  //githubにsshkeyを登録している場合はっsshを使ってください

$ git branch
// masterを確認
$ git branch <your name> // branch作成
$ git checkout <your name> //Branchの移動
$ git branch
// 変わってることを確認
$ mkdir <your name>
$ cd <your name>
  // ex:$ git checkout -b fumihumi
  //    $ mkdir fumifumi
  //    $ cd fumihumi

ここから先 \<fumihumi> → yourname に読み替えてください。(疲れたw)

touch sample fumihumi.html

コピペ用


$ git add fumihumi.html
作業ツリーのファイル
→ 右側の `Hunkをステージへ移動`

git add


$ git commit -m 'fumihumi.htmlの作成とテンプレの作成'
$ 左上のコミットからメッセージ入力してコミットボタン

git commit


基本的な操作はこれだけです。

for (var gitExp = 1; gitExp < '覚えるまで'; gitExp++){

-> [Bootstrap入れましょう](https://gist.github.com/fumihumi/54ca0eda54be625ca554b4dc355904f1#file-2-bootstrap)

Add -> Commit

→ [bootstrap使ったボタン置いてみる?](https://gist.github.com/fumihumi/54ca0eda54be625ca554b4dc355904f1#file-3-bootstrap4)

Add → Commit

→ [ButtonClickでAlertしてみて](https://gist.github.com/fumihumi/54ca0eda54be625ca554b4dc355904f1#file-buttonclick-alert)
//javascriptコメントアウトの構文も調べて見てね  : ヒント(ES6 ,AllowFunctions, Variables Scope)

Add → Commit

}

基本的には上記のような add -> commit が基本原則。

gitの構造について

時々右から左のようなコマンドもありますが。うまく使ってればそう必要にならないので今回は深く説明しないので口頭で。

$git reset --hard HEAD^
$git reset --mixed HEAD^ (--softもあるよ)

$git rm <file name>

github

github


git clone をしているとCloneした場所がリモートリポジトリになっています。
→みんなのRepoはgithub.com/fumihumi/git_practice_repo,を見ています。

$ git remote -v 
で確認できるので見て見てください。

このリモートリポジトリにさっきまで編集していた,
Commitを反映することを'Push'
リモートにある変更を受け取ることをpullと言います。

$ git push  

git push --set~~~~~みたいなメッセージでたらそれに従ってください


github上でリポジトリ管理者(ここではfumihumi)にコードを受け入れてもらおう!(PullRequest!)


PRが作られたら -> きっとコメントやなにかをもらうかもしれない → masterBranchにまーじ(統合)されたら開発しゅうりょー \(^o^)/

目を通して見ると雰囲気わかると思います。 英語のコメントや issue で頻出する略語の意味 (FYI, AFAIK, ...) コードレビューを受けるのがつらくなったときは コードレビューの辛さと大切さ コードレビューの際に気をつけること


今回は自分のRepoを使い’git clone’しましたが、じっさいに行う際はこんな感じです↓


## 先にGithubのRepoを作っておく

$ git init #ローカルのgitリポジトリ作成

$ git remote add  "alias" URL (remote repo の登録)
$ git remote -v

$ git status (states of this directory-tree )
$ git add ~~~ (adding staging area)
$ git commit -m'commit message' (commiting file && message)

git push (to pushiing remote repos)

branchの考え方


その他, コマンドを知っているともっとgitが便利に使えます。

git log
git status
git stash
git reset
git rm
git revert
git rebase
git show
git branch
git checkout
git log --oneline --decorate --graph

今回触れていないコマンドもいっぱいあるよ!↓↓↓↓↓ GIT CHEAT SHEET

意外と知らない? Gitコマンド 100本ノック


Gitはとても奥が深いです。実際に触って苦しんでいるときに成長します


Let's gït lífè


readmeにおける画像出展

TKRさんQiita:引用よく使うGitコマンドを図解

あさちゅんのブログ

A successful Git branching model

A successful Git branching model(翻訳版)

こっそり始めるGit/GitHub超入門(終)

はじめようgit

いつやるの?git