プログラミング初心者に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の協会での
お祈り
みたいな
- Pok○m○nの
gitを使うと好きなセーブポイントからもどれます。
- ゲームのセーブストックみたいな感じ?
- メインのセーブデータ:A
- Aデータ引き継いで別キャラにする: B
- (A or B)データ引き継いでネカマする用のキャラ
gitの概念
gitの概念
- Gitってどうなってんの?
- branch(枝分かれ)というものがある
→みてみましょう。
git とは
なんかわかりにくいのでポップなかんじにしましょうか→
ポップなGit
branch(枝分かれ)
team開発
gitを使うチーム開発
- Github
- bitbucket
- Gitlab
- 自前のGitサーバー
等々ありますが、今回はGithub
を利用します。
gitとgithub
どうしたら慣れて行くのか
Git、Githubを使うしかない
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 commit -m 'fumihumi.htmlの作成とテンプレの作成'
$ 左上のコミットからメッセージ入力してコミットボタン
基本的な操作はこれだけです。
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 reset --hard HEAD^ $git reset --mixed HEAD^ (--softもあるよ) $git rm <file name>
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はとても奥が深いです。実際に触って苦しんでいるときに成長します
Let's gït lífè
readmeにおける画像出展
A successful Git branching model