使えるツール(IT)

GitとGithub

GitHubってなに??

自分の書いたコードを公開するツールだよ〜〜

企業では、その会社の中だけで公開し、バグやセキュリティ上の問題がないかを他の社員に見てもらい、レビューしてもらったりするよ〜〜

(分散型バージョン管理システム)

いつでも好きな時点に戻せて、各メンバーの修正を合体できるよ〜〜

Git とは  -> ファイルの変更履歴を記録できるバージョン管理を行うためのツールだよ〜〜

GitHubとは -> gitを使ったチーム開発をより便利にするwebサービスだよ〜〜

バージョン管理システムには、いくつか種類があるよ簡単にみて行こう!!

バージョン管理方式 概要 管理ツール
集中型バージョン管理 サーバー上のリポジトリを複数のクライアントが操作して、バージョンを管理する CVS、Subversion
分散型バージョン管理 サーバー上のリポジトリを複数のクライアントがローカル上に複製し、変更結果をリポジトリにマージする事で、バージョンを管理する Git 、MercurialGIthubの大まかな仕組み

 

 

プッシュしたデータを変更・更新してみる

さっきの test.txtを変更した後

変更をインデックスに追加(コミット対象を指定する)

自分のPCで開発した物を、ローカルリポジトリのインデックスに追加(アッド)する

Git add test.txt

ファイルを登録(コミット内容が保存される)

自分のPCで開発した物を、ローカルリポジトリに登録(コミット)する

Git commit -m “変更してみたよ”

データの送信

Git push origin master

作ったブランチにデータを送信してみる

では、testbranchにデータ送信(プッシュ)してみる

さっきのtest.txt を変更した後

インデックスに変更点を登録

Git add test.txt

ファイルをローカルリポジトリに登録(コミット)

Git commit -m “ブランチを作ってそのブランチにプッシュ!”

Github にローカルリポジトリのデータを送信(プッシュ)

Git push origin testbranch

ブランチを本筋に統合する

いわゆる「マージ」というものをしてみる

Masterブランチにtestbranchを取り込む

まず取り込み先のブランチを選択する

Git checkout master

そして、masterにtestbranchを結合する

Git merge testbranch

最後に、結合情報をGithubに送る(プッシュ)

Git push origin master

プルリクエストからマージまで

①フォークする

②クローンする

③作業用のブランチを作ってコミットする

④プッシュする

⑤Github上でプルリクエストを作成する

⑥マージされる

用語

・インデックス

これから登録するファイルが、以前とどう変わったかを登録する一次的な場所

・リポジトリ

貯蔵庫、データ(画像、エクセルやワード、3Dモデリングデータ)などを保存しておく場所

ファイル名.git がリポジトリの形

・リモートリポジトリ

Github上の、データを保存している場所を指す

・ローカルリポジトリ

Githubに送信するデータを登録しておく、自身のPC上の場所を指す

・コミット=ローカルリポジトリ反映

Commitしたら取り消せない

Githubでは、GitHubにデータを送信する前に一時的にローカル環境にデータを登録し,その後一気にGitHub上に送信します.
そのローカル環境にデータを登録することをコミットといいます.

ファイルやディレクトリの追加や変更を、リポジトリに記録する操作

・プッシュ=リモートリポジトリ反映
ローカル環境に登録していた(コミットされた)データをGitHubに送信&公開することを言います.

・フェッチ=リモートリポジトリから更新を取得

・ブランチ->メインとは別の流れで作業を続ける機能

その名の通り「枝」 一気にバージョンを上げる時などに、失敗した時ようにコピーを作っておくイメージ

厳密に言うと、履歴の流れを分岐して記録していくためのもの。

分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができる

Masterブランチから、作業ブランチを作って移動してから作業することをブランチを切ると言う

・マージ

複数に分岐させた物をつなぐ

厳密に言うとブランンチを切って作業して、記録されたcommitをmasterブランチに同期させること

マージ/リベイス=リモートリポジトリの更新をローカルに反映

・HEAD

今チェックアウトされているコミットを指す時の呼びかた。これは今自分がどのコミットで作業しているかを意味する。HEADは常にコミットを指している。ツリーに変化をもたらすほとんどのgitコマンドは、このHEADを動かすことからその動作を始めるHEDF

・フォーク

Github上でリポジトリの複製を作成する行為

フォークすると、他の人が公開しているリモートリポジトリを自分のアカウントにコピーする機能のこと

・クローン

サーバー上のリポジトリをクライアント環境に複製する行為

クローンして、リモートリポジトリをローカル(自分のパソコン)にコピーする機能のこと

・コンフリクト

同じ行に、同時に別々の修正がなされたときに発生する

・プルリクエスト

自分がした変更を取り込んでもらうよう、提案すること

・リベース

履歴を一直線にしたい(履歴を改変するので若干の危険性あり)

・スカッシュ

コミットを一つにまとめる

・スタッシュ

未コミットのファイルを一時退避する

・チェリーピック

別ブランチから特定のコミットのみを取り込みたい

・タグ

コミットに目印をつける

・フェッチ

コマンド

・ローカル環境にリポジトリを作る(ローカルリポジトリ)

$ git init    これでローカルリポジトリを作成する

・リポジトリに追加したい対象を指定する

コミットするファイルはファイル名であるとgitに教えている

$ git add ファイル名

・ファイル(更新内容)をローカルリポジトリに登録(コミット)する

$ git  commit -m “コメント”これでローカルリポジトリにコミットする

このcommandはコミットするファイルはfilenameであるとgitに教えている

-m オプションを付け加えずにコミット実行すると任意のテキストエディタが自動で開かれるので、そこにコメントを付け加えることができる(コミットメッセージを付け加えないと怒られる)

適当にtxtにファイルを用意する

$ echo hello git!  > test.txt

$ git add test.txt   これで変更点を勝手にインデックスに追加してくれる

fatal: Not a git repository (or any of the parent directories): .git
が表示されたら,git initが失敗している(ローカルリポジトリが作成できてない)ということになります.

インデックスにデータを追加したら、登録(コミット)する

$ Git commit -m “始めてのGitHub”

このコマンドで、インデックスの内容が全てローカルリポジトリに登録する

この時点では「ローカル」リポジトリなので、github上には反映されてない

・githubにデータを送信する(リモートリポジトリにデータをプッシュする)

$ Git push origin master

・ファイルを削除する

$ git rm filename

・ブランチを作る

$ git branch testbranch

これでtestbranch という名前のブランチが作成される

・gitのブランチを作成して切り替える

$ git checkout -b <new> <old>

・ブランチを確認する

$ Git branch で確認できる

・ブランチを移動する

$ Git checkout  testbranch

これでtestbranch というブランチに移動する

git branch で確認すると「master」「testbranch」というブランチがある

masterについている *(アスタリスク)は、今master ブランチに全てのデータが書き込まれている

参照&書き換え先のブランチをtestbranchに変えてみる

Git checkout testbranch でブランチを移動する

これで再度 git branch すると *の位置がtestbranchに移っていることが確認できる

・ブランチを結合(マージ)する
※$ git checkout ブランチ名 で,結合したいブランチに移動して…
$ git merge 取り込むブランチ

・現在のブランチを指定のブランチからリベースする                   あるブランチに入っている作業内容をそのまま直接masterブランチ上の内容に移動する。こうすることで、実際には並行して開発された2つの別々のブランチ上のフィーチャを、あたかも1本のブランチ上でシーケンシャルに開発されていたかのように見せることができる. 今いるブランチをmasterにrebaseする

$ git rebase <branch>

・ワークツリーの状態を見る

$ git stutas

・コミットログを見る

$ git log

・ステージングエリアをgitリポジトリの状態に戻す

$ git reset HEAD filename

・ワークツリーをステージングエリアの状態に戻す

$ git checkout – filename

・ファイルやディレクトリを移動する

$ git mv

・データ領域を指定のコミットの状態に戻す

$ gut reset –<mode> <commit>

○リモート操作のコマンド&データ領域の動き

・リモートリポジトリをローカルに複製

$ git clone <url>

・リモートリポジトリに変更を送信

$ git push <remote> <refspec>

・リモートブランチを最新に更新

$ git fetch <remote> <refspec>

  • その他
  • バージョン管理が必要ないファイル

中にはバージョン管理したくないファイルやディレクトリもあるだろう。

例えば、OSや自動生成するファイルやキャシュ、容量が大きすぎるもの

.gitignore

▼特定のファイルを無視したい

#自分用のメモファイルを無視する

Memo.txt

▼特定の拡張子を無視したい

#.rbcという拡張子が付いているファイルが無視される

*.rbc

▼特定のファイルを無視しない

#例外としてtest.rbc は無視されない

!test.rbc

▼特定のディレクトリ以下を無視したい

#templates_cというディレクトリ以下が無視される

Templates_c/

▼ルートディレクトリの直下にあるものを指定したい

#ルートディレクトリにあるlogというディレクトリ以下が無視される

/log/

▼コメント

#行頭に#を入力するとコメントが書ける