万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Tech Guild - Head First Git

    URL: http://devlove.doorkeeper.jp/events/5241

    サブバージョンは

    ローカルリポジトリに反映してから
    二段構え

    アップデート
    mergeまたはrebase 


    fetchとmergeが別

    mergeまたはrebase 

    git
    ゴミのコミットはどんどんやっていい
    subversionはダメ

    fetch -> merge or rebase

    マージさえきちんとしたらpushがきちんとできる

    汎用的にできる
    git知ってる人が即戦しないと破綻する

    ・統合マネージャ型
    メインのマネージャが他の人のを含んでpushを行う。
    pull request

    独裁者と若頭型
    ※Pro Git

    若頭がとりこんで、さらに独裁者がメインリポジトリにマージ
    Linuxはこうやってる。

    GitHub Flow と git-flow

    ◯内部構造
    大事なのは3つ
    1. ワークツリー

    2. ステージング・エリア(インデックス)

    3. Gitリポジトリ


    ◯ローカル環境
    ローカルリポジトリ、ローカルフォルダ


    1. .git (Gitリポジトリ)
    2. ワークツリー (作業ディレクトリ) ただのディレクトリ
    3. index・・ステージングエリア

    Untracked files:
    まだ何もしてない状態

    これからコミットの対象
    → ステージングエリア addすると移動する

    .git/に入っていく
    =ステージされたという

    git statusのメッセージ

    # On branch master
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #	modified:   test1.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")

    まだaddしてないよ

    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #	modified:   test1.txt
    #

    まだコミットしてないよ

    git log --graph --color


    ファイルを新しく追加するときも
    ファイルを修正するときも
    git add


    git rm しないといけない
    普通にrmしてしまうと結局 git rm しないといけない。


    間違って消してしまった場合

    git reset HEAD <file>

    ※Addしたことも戻せる


    修正したファイルが戻される

    git checkout -- dir1/file3


    untracked (未追跡)

    HEADの1つ前のcommitの状態に戻る

    git reset -- hard HEAD^

    HEAD^ ・・・HEADと1つ前
    HEAD^1

    HEAD・・・タグ付けされた状態

    git reflog
    コミットしたものは残ってる

    git branch
    Subversion trank

    すべてがmasterのブランチ

    rebaseだとmergeの結果がなくなるので。
    rebaseだけにしよう、mergeだけにしよう、はプロジェクト次第

    github pullrequestを良くする

    git branch
    今いじってるブランチ

    git branch develop
    → developブランチを作っただけ

    git checkout develop
    → 切り替える


    HEADがどこにいるかが大事

    git merge <他のブランチ> 


    スタッシュ
    まだコミットしてないのを見えないようにする。

    clone
    過去のコミットも全部見られる


    masterをそのまま持ってくる
    masterがそのままきて、origin/master(リモートリポジトリ/マスター名)

    fetchはあまりしない


    ・リモートも終える

    git branch -a
    git fetch origin master

    自分のリモートだけが反映される

    git pull origin master --rebase
    git fetch

    仮想的なファイルを手元に持ってくる。