kekosh’s Study_Log

勉強の記録と日記

勉強ログ ~7/55~

TechAcademyのスクーリングが始まって1週間が経ちました。

本日は前倒しでLesson 3の「Git」までを終わらせました。

 

実際に使ったわけではありませんが、GitはSVNより便利そうですね。

ただ、自前のサーバーに構築できるわけではないようなので、うちの会社では使用不可でしょうが。(そもそも自分は開発部署ではない...)

 

進捗としては可もなく不可もなくといったところでしょうか。

実際に手を動かすというよりは座学な部分が大半でしたので、苦しいのはここからのような気がします。(既にBootstrapとGitコマンドであっぷあっぷですが。)

 

次は初の課題であるポートフォリオ作成となっています。

ネガティブすぎて自己表現が絶望的な私にとって鬼門のような気がしますが、

何とか頑張ります。

 

※アニメ「New Game」を見て、新人時代のやる気が1ミクロン程度思い出せました。

 まあ、あんなに歓迎されなかったですけど。(おっさんしかいなかったし(今も))

 同期の中でも、なぜか私だけOJT中なのに放置プレイ&火事場投入の地獄だった

 思い出も想起されてつらい...

 

時間:15:00~16:20、21:00~23:00

メモ:

15:00~16:20
21:00~23:00
ターミナルコマンド
・ls(List Segment)
 カレントディレクトリ内の一覧
・mkdir(Make Directory)
 新規folderを作成
・cd(Change Directory)
 カレントディレクトリの変更
 ..で一つ上のディレクトリに移動
 cd単体でHomeディレクトリに移動
・touch
 新規ファイルを作成
・nano ファイル名
 Cloud9上のターミナル標準エディタでファイルを開く
 →保存して閉じる場合:ctrl + x
・less ファイル名
 Cloud9の標準ビューア。参照のみの場合はこちらを使用する。
 lessビューアの終了:「q」 上:↑ or k 下:↓ or j
・ターミナル処理の中断:ctrl + c
・sleep 時間(秒):ターミナルの待機指定
・履歴からコマンドを検索:ctrl + r

Git
リポジトリ
→ローカル:ローカル上に作成されるバージョン管理
→リモート:チームでのリポジト共有やバックアップを目的としたネットワーク先のリポジトリ
・コミット
コミットに含まれる情報
 ・リビジョン
 ・コミットした人、日時
 ・ファイルの内容
 ・コミットメッセージ
 ・1つ前のリビジョン
・プッシュ
 ローカルリポジトリの変更履歴をリモートリポジトリに反映
・Git使用時の流れ
 1.リポジトリの作成、または複製
 →「git init」「git clone」
 2.ファイルの作成、編集
 3.変更をGitのインデックスに追加する
 →「git add」
 4.ローカルリポジトリにコミットする
 →「git commit」
 5.ローカルリポジトリの変更をリモートリポジトリに反映する
 →「git push」
・ワークツリー
 →現状ローカルの最新リポジトリ
・インデックス(ステージ)
 →更新が発生したファイルの情報。(git addで作成)
・コミット
 →git add で作成したインデックスファイルをリポジトリに反映する。
・ブランチ
 →リポジトリの内容の分岐。複数チームで分担して開発を行う場合に、
  別々のブランチとして複製したリポジトリで開発を行う。
  (後でマージして本流に反映する。)
・マージ
 →各ブランチの変更内容を統合する。
 →コンフリクト:変更が複数ブランチで重複すること。要手動修正。
・masterブランチ
 →リポジトリの本流となるブランチ。すべてのブランチは最終的にmasterブランチに統合(merge)される。
・ブランチ開発の流れ
 1.ブランチ作成(git branch 新ブランチ名)
 2.作成したブランチに移動(git checkout 新ブランチ名)
 3.移動先のブランチで開発
 4.分岐元(masterブランチ)に戻る(git checkout master)
 5.masterブランチに各ブランチの変更を統合する(git merge 新ブランチ)

Gitコマンド
・git init:リポジトリを作成する。バージョン管理したいプロジェクトフォルダのトップで一度だけ実行する。
 →リポジトリの実体である「.git」がフォルダ内に作成される。
・git add:更新されたファイルを指定してインデックスに追加し、次のコミットのために準備する。
 →単体:git add ファイル名
 →その他:「git add *.txt」「git add .」
・git commit:インデックスに追加された内容をリポジトリに反映する。コミットメッセージの登録は必須。
 →-m の付加でエディタを立ち上げずにコミットメッセージを追加してコミットすることも可能。
・git status:変更されたファイル一覧を表示する。
・git log:コミットログを参照する。
・git commit --amend:直前のコミットメッセージを修正する。
・git reset 過去のコミット:コミットを取り消し、過去のコミットの状態にまで戻す。
オプション(指定なしの場合は--mixedと同意)
→git reset --soft 過去:ファイルの変更は戻らず、コミットのみ取り消される。(ファイルの変更はインデックスへ)
→git reset --mixed 過去:ファイルの変更は過去に戻らず、コミットのみ取り消される。(ファイルの変更はワーキングツリーへ)
→git reset --hard:ファイルの変更も過去に戻り、コミットも取り消される。(指定したコミットまでのコミットがなかったことになる)
・git status:リポジトリの状態を確認する。
・git diff:ファイルの変更差分を確認する。
オプション
・git diff:ワーキングツリーとインデックスの差分
・git diff --cached:インデックスと直前のコミット(HEAD)の差分
・git diff Head^..Head:直前とその前のコミットの差分
・作業フロー
1.git diffでツリーとインデックスを比較
2.問題なければgit add .でインデックスに追加
3.git diff --cachedでインデックスと直前のコミット内容を比較
4.問題なければ、git commit でコミットする。
5.git diff HEAD^..HEADで直前とそのひとつ前のコミット差分を確認する。
・git log:コミットの履歴を表示する。
オプション
・git log --stat:ファイルの増減情報を表示に追加

・git branch ブランチ名:ブランチの作成
・git checkout ブランチ名:指定したブランチに移動
 →-b オプションを付与すると作成とともに移動する。
(gitのcheckoutはWindowsのチェックインのイメージ)
・git branch:ブランチの一覧を表示
 →-a オプションでリモートリポジトリも含めて一覧を表示
・git branch -d ブランチ名:ブランチの削除
・git merge:ブランチの統合(gitでは、現在のブランチに指定したブランチの変更を反映する形式がとられる)
 →1.git checkout master
  2.git merge ブランチ名
 上記の場合、masterに「ブランチ名」の変更が取り込まれコミット履歴が更新される。「ブランチ名」の方には変化なし。
・コンフリクト
コンフリクトが発生した場合、対象ファイルのコンフリクト個所にタグが記載される。
 →<<<<HEAD ・・・取り込み元側
 →==== ・・・ 区切り
 →>>>>SUB ・・・被取り込み側末尾
上記競合箇所を修正後、add→commitの順で再登録(再マージ)する。

Gitコマンド~リモート
・git clone:リモートリポジトリの複製
 →方式は「Https方式」と「SSH方式」の2種
リモートリポジトリの操作
 →「git pull」「git push」等コマンドでリモートリポジトリと通信するために必要
・リモートリポジトリの登録
 →git remote add 登録名 リモートリポジトリ
・登録名の慣習
 →自己管理:origin
 →他者管理:upstream
(例)$ git remote add origin https://github.com/ユーザ名/リポジトリ名.git
 →-v オプションで登録したリポジトリの詳細を表示
・登録したリモートリポジトリの削除
 →$ git remote rm 登録名
 →ローカルリポジトリに登録したリポジトリ情報を削除するものであり、リモートリポジトリ自体は削除されない。
・git push 登録名 ブランチ名
 →「登録名」リポジトリに「ブランチ名」ブランチのコミット履歴を反映させる。
・git pull 登録名 ブランチ名:リモートリポジトリの更新分をローカルリポジトリのブランチにマージする。
→プルする際は反映先(ローカルリポジトリのブランチ)をカレントディレクトリにしておく必要がある。
(例)
1.$ git checkout master
2.$ git pull origin master