sironekotoroの日記

Perl で楽をしたい

わかばちゃんと学ぶGit使い方入門 SECTION 01 〜 SECTION 20

2017年ゴールデンウィークの課題図書

  • Git習得には一度挫折。
  • せっかく9連休をとることが出来たので、一念発起して選んだのがこの本。

なぜ「わかばちゃんと学ぶGit使い方入門」を選んだのか?

CHAPTER 1

SECTION 01

  • だいたい把握

    SECTION 02

  • SourceTree 入れたことがある
  • しかし、自己流でやってみて、よく分からんってことでアンインストールした覚えがある

CHAPTER 2

SECTION 03

  • SourceTreeのインストール
  • 「お前のOS古すぎて入れられんわ」エラー
    • 宗教上の理由で未だ買った時の Mountain Lion
      • 初めてかつ唯一の MacOS X で、OSアップデートの経験がなくて怖い
  • まぁ、覚悟はしてた
  • 旧バージョンをダウンロード

SECTION 04

  • リポジトリ・・・プロググラムとかバージョン管理やってないと触れること無い単語だよな
  • サンプルフォルダを作って、選択して・・・エラー!

    git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree init /Users/sironekotoro/Dropbox/git_study/wakaba/sample dyld: lazy symbol binding failed: Symbol not found: strlcpy_chk Referenced from: /Applications/SourceTree.app/Contents/Resources/git_local/bin/git Expected in: /usr/lib/libSystem.B.dylib
    dyld: Symbol not found:
    strlcpy_chk Referenced from: /Applications/SourceTree.app/Contents/Resources/git_local/bin/git Expected in: /usr/lib/libSystem.B.dylib
    Completed with errors, see above

  • ふむ、わからん。

  • もちろんググる大先生に聞く
  • osx - git command-line on Mac OS error “dyld: Symbol not found: ___strlcpy_chk” - Stack Overflow
  • Xcode から Command Line Tool をインストールしてみる
    • Xcode 起動 -> Command + , -> Command Line Tools をインストール
    • ダメ・・・
  • うーん、うーん、と色々やっているうちに、このMacには複数のGitがインストールされていることが判明
  • SourceTreeの環境設定 -> Git で確認すると、
    • 内蔵Gitのバージョン;2.6.2
      • エラー消えない
    • システムGitのバージョン:2.0.1
      • エラー消えない
    • Terminalから git –version で確認:2.5.1
      • さらにTerminalから which git で確認すると /usr/local/bin/git
  • 3種のGit盛り合わせかよ・・・わけわかんねぇ
  • が、とりあえず、SourceTreeの環境設定 -> Git から「システムのGitを使用する」をクリックし、そこで /usr/local/bin/git のGit(2.5.1)を選択
  • ok!

閑話休題

  • ほんと、個々人の環境なんて千差万別だから、万人が動かせるような環境・導入方法案内なんてなかなか無いよな・・・
  • VirtualBoxvhd配るとか・・・?

Section 05

  • エラーは出なくなったが、さすがに 2.0.5.2 と現行バージョンの 2.5 は表示が若干違う。
    • が、表示オプションで本に載っているのと同じレイアウトにすることは可能
  • しかしまぁ、同じことをするツールなので、なんとか頭で違いを吸収しつつこのまま学ぶ
  • すんなり進む

SECTION 06

  • リポジトリ内のテキストファイルをチェックアウトして、過去の履歴にさかのぼる
  • この辺りは、コマンドラインのgitでやった覚えがある
  • チェックアウトしたときに、テキストエディタ内の内容が変わるのが、ちょっと面白かった

SECTION 07

  • GitHubのアカウントは作成済
  • だが、使ってない・・・

SECTION 08

  • GitHubにある、この本の練習用リポジトリからフォーク
    • たぶん初フォーク
    • うちがフォークした時点で27

SECTION 09

  • ブランチについて
  • ブランチが便利というのは理解できる・・・しかし、それをまとめる時は大変なのではないだろうか?
  • ブランチごとにリポジトリの状態を保存している、って理解で良いんだろうか

SECTION 10

  • マージ!人生初マージ!

SECTION 11

  • 初プッシュ!初リモートリポジトリへのプッシュ!

SECTION 12

  • 初プル!
  • リモートリポジトリ上の変更をローカルリポジトリに反映するのがプル、ってのはわかった
  • となると。よく聞く「プルリクエスト」とは?
  • 「みんな反映してねー」とか?違う気がする・・・
  • あと、131pの「リモートリポジトリの状態」はどこから見るんだろう?
    • GitHubのファイル一覧の少し上にある「** commits」ってところから同じ画面見ることが出来た

SECTION 13

  • コンフリクトについて

コンフリクトは、同じ行に、同時に別々の修正が成されたときに発生します。 同じファイルでも、行が違えば、コンフリクトが起きずにそのままマージされるわ

  • なるほど、行単位で監視というか比較しているんね
  • ここで、update-newsをチェックアウトして、そこにmasterをブランチを統合してしまうというミスをしてしまう(逆のことをやりたかった

SECTION 14

  • プルリクエストの疑問に対する回答があった。取り込んでもらう相手の立場に立って、ということなのね。
    • 「私の更新を取り込んでくださーい」と。
    • プルリクエスト、不自然とは思わなくなってきた・・・(順応性
  • この本はなんと、プルリクエストからマージまでを体験できる!らしい!ってことで挑戦
  • うちのためしてみた時点でForkは14
  • おぉ!先人のコミットが見える!
  • しかし、自分のテキストファイルをコミット・プッシュしても、自分のGitHub上に反映していない・・・?
    • GitHubのBranchを「master」から「add-myfile」に切り替えたら確認できた
    • プッシュがされてないのかなーと、3回くらいプッシュしてた
  • 153pの「Compare & pull request」ってボタンが表示されない
    • 「compare」 と 「pull request」ってリンクならある
    • 「pull request」のリンクをクリックすることで、本と同じような画面が出た。
    • 一安心。

SECTION 15

  • うちの環境だと、 .gitignore は本に乗ってる内容で追加されてるなぁ
  • とおもったら、もともとのリポジトリに入ってた
  • なるほど、.gitignoreに記載してあるファイルはgitの管理外になるけど、.gitignoreファイル自体はgitで管理されるのね

SECTION 16

  • Bitbucket、以前にアカウント登録はしてたけど、email認証せずに放っておいてた
    • なんでそんな中途半端なところで・・・
    • 2014年の9月のことだったらしい
  • ぐうう、なんか画面が違う・・・メニューが左側にある
  • 初心者本に限らずだけど、サービス提供側のページレイアウトが変わるのは辛いものがあるが、作者さん達も避けようが無いもんなぁ
  • 画面左側メニューの「+」からリポジトリを追加。後は本に乗っているのとだいたい同じ。

SECTION 17

  • あんれ?豚玉とかソースの追加ってコミットしてたっけ・・・?
  • 例ってことで良いんかな?
  • とりあえず、「過去のコミットをチェックアウトしてブランチを分ける」ということは出来た

SECTION 18

  • リバート!そういうことだったのか!

    過去のコミット自体を削除するわけではなく、あくまでも反対の内容で新規コミットを作ることで、過去の変更を打ち消すというところがポイントです

  • 単なる削除、ではないと
  • SouceTree、Windows版とMac版でメニューの項目表示が違うの、なんか嫌だねぇ・・・
    • Windows版は「このコミットを打ち消し」
    • Mac版は「コミット適用前に戻す」

SECTION 19

  • なるほど、リベースは履歴がきれいになって良いなぁ
  • でも、慣れないうちはマージを使うってことで、しばらくは使うことなさそう

SECTION 20

  • 幾つかのコミットを1つにまとめる「スカッシュ」
  • でも、リモートリポジトリ上にあるコミットを変更すると、他のメンバーが持ってるリポジトリと差が出るので(当然だ・・・)、コミットがローカルにしかない状態で行うこと
  • この辺りは実際に試すのは自分でコミット作ってまとめたりが必要なのね
    • まぁ、それが出来るだけの知識はここまでで習っている