おれさまラボスマートフォン用の表示で見るおれさまラボ実際に手を動かして理解を深めるブログ。エディタはじめにGitをドットインストールで勉強してきました。エンジニアのはしくれだし、Gitでバージョン管理やってみたい。バージョン管理の流れを理解しようGitとはGitは、バージョン管理のためのツールです。ファイルを作ったり、修正したりある程度のまとまりになったら履歴データベースに保存する。Gitの状態Gitには、3つの状態が用意されています。以下の通りで行いました。1.9.1Gitで、必須の設定や、推奨の設定を学んでいきます。ユーザ名、メールアドレスの設定(必須)Gitでは、ファイルを作成するときに、必ずユーザ名とメールアドレスが必要になります。以下のコマンドで、グローバル設定を行っておきます。"git-test@example.com"色つけの設定(推奨)GitのUIをカラー表示に設定することで、見やすくなります。設定を一覧表示させる方法を学びます。configコマンドを「-l」オプション付きで実行します。困った時のヘルプの表示させ方を学びます。ロングオプションの--helpをつけると、ヘルプを表示することができます。ヘルプから抜けるには、q(quit)を押下します。helpコマンドでもヘルプを表示可能です。コミットをしてみよう初めてGitを使ってみます。作業ディレクトリの作成まずは、作業用のディレクトリを作成します。※今回は、mywebとします。initコマンドを実行します。repositoryと表示され、リポジトリが作成されたことが分かります。/home/vagrant/myweb/.git/ファイルの作成ファイルを作成します。1ステージングエリアへアップする作成したファイルを、ステージングエリアにアップします。addコマンドを使用します。エラーが発生しなければOKです。index.htmlリポジトリへコミットするステージングエリアからリポジトリの状態へ遷移させます。commitコマンドを利用します。コマンドを実行すると、エディタが起動するので、コメントを記入します。commitと記入しました。logコマンドで確認できます。commit欄にIDが付与され、誰が、いつ、なぜ(コメント)コミットしたのか分かるようになっています。logの見方を学びます。行commitには、一意のIDが付与され、commit行に表示されます。行いつ、誰がコミットしたのかが表示されます。+0000コミットメッセージコミットするときに入力したメッセージが表示されます。メッセージによって、内容が把握できるので、コミットする際には注意して入力しましょう。logを、1コミット1行で表示してくれます。表示される内容は、コミットIDの一部と、コミットメッセージのみとなります。-p-pオプションをつけることで、変更箇所を表示することができます。1+以下、少し細かく解説します。b/index.htmlこの行では、どのファイルとどのファイルを比較しているか分かります。b/index.htmlこの行では、/dev/null、つまり、なにもないところから、index.htmlが生成されたことを示します。@@の行では、どの行に新しい情報が追加されたかを表します。+のついた行は、追加された内容をそのまま表示しています。--stat--statをつけることで、「どのファイルが何箇所変わったか」を表示することができます。現在の状態を把握しようファイル状態の確認方法を学びます。ファイルの編集まずは、ファイルを編集します。2ファイルの状態確認ファイルを編集した後に、ファイルの状態を確認してみます。statusコマンドを使用します。modifiedと表示され、編集された状態であることが分かります。commitと表示されていることから、ステージングエリアにもアップされていないことが分かります。checkout)のコマンドがそれぞれ記載されています。-a")ここで、編集した結果を破棄してみます。checkoutコマンドを使用します。コマンド実行後のindex.htmlは、編集前の状態に戻っていることが分かります。1編集を破棄した後にstatusコマンドを実行すると、変更点がないということが分かります。差分を確認してみようGitでは、編集前と編集後のファイルの差分確認を行うことができます。ファイルの編集まずは、ファイルの編集をします。2状態を確認する現在のファイル状態を確認します。編集はされているが、ステージングエリアにアップされていない状態であることが分かります。-a")差分を確認するこのまま、ファイルをaddしたり、commitしても良いですが、その前に、現在どこが編集されていて、編集前とどう差があるのかをチェックする事ができます。diffコマンドを利用します。2が追加されていることが分かります。diffコマンドは、ステージングエリアにアップしていないファイルに対してのみ使用可能なので、注意が必要です。2ステージングエリアにアップする編集したファイルを、ステージングエリアにアップします。addコマンドを使用します。committed:となっており、コミット待ち状態であることが分かります。diffコマンドでは、確認できません。--cachedオプションをつけることで、コミット前のファイルの差分を表示させることができます。gitでのファイル操作についてGitでのファイル操作について学びます。addコマンドの後にファイル名を指定することで、そのファイルをステージングエリアにアップすることが可能ですが、幾つものファイルをコマンドの後に列挙するのは面倒です。.コマンドを使えば、カレントディレクトリ配下のファイルをすべてステージングエリアにアップする事ができます。rmコマンドを用いて、Gitとして操作するようにしましょう。Linuxコマンドのmvや、rmでファイル操作を行ってはいけません。git管理に含めない設定についてgit管理したくないファイルの扱い方を学びます。.gitignoreログファイルなど、それ自体をバージョン管理する意義があまりないものをgitの管理下から外す事ができます。.gitignoreというファイルをディレクトリ内に作成し、その中に、管理したくないファイルを指定することができます。ファイル指定は、*など、正規表現が利用可能です。statusコマンドを実行すると、error.logファイルは、Gitの管理対象から外れていることが分かります。.gitignoreの影響範囲は、.gitignoreの置かれたディレクトリ以下全てとなります。そのため、サブディレクトリ内のファイルにのみ.gitignoreを適用させたければ、サブディレクトリの中に.gitignoreを作成する必要があります。直前のコミットを変更するちょっとした間違いを見つけたとき、コミットログを増やさず、直前のコミットを変更することができます。コミットメッセージが1行しかない場合は、-mオプションを付けることで、エディタの起動を省略することができます。commitコミットした後に、ちょっとしたミスに気がついてしまった場合、再コミットしても良いですが、直前のコミットを編集することができます。logで表示される内容も多くなるので、ちょっとしたミスであれば、直前のコミットを編集することがおすすめされます。2にインデントを付け忘れたとして、直前のコミットを変更しています。この時、コミットメッセージも変更することが可能です。変更しないことも可能です。(1)Gitはバージョン管理ツールなので、簡単に過去のバージョンに遡ることができます。resetコマンドを使います。オプションには、--hardをとります。直前のバージョンの指定には、HEADを使います。一つ前のバージョンの指定には、HEAD^を使います。コミットIDを直接しているすることも可能です。この場合、頭から最低7桁分のIDを指定すれば問題ありません。(2)コミットした情報は、何かしらの形で残っているので、過去に遡ってから元の最新コミットに戻したいということも可能です。2が含まれていた最新バージョンに戻してみます。オプションには、--hardをとります。最新のバージョンの指定には、ORIG_HEADを使います。ブランチを使ってみようgitでは、ブランチを使って、ファイルバージョンを分岐して管理することができます。branchコマンドで、ブランチを切り替える事ができます。デフォルトのブランチはmasterです。例では、hogeというブランチを新しく作っています。checkoutコマンドを使用します。*がついているブランチが、現在利用しているブランチとなります。新しく作ったブランチhogeでファイル編集を行ってみます。例では、script.jsという新しいファイルを作成してみます。commitをそれぞれ実行し、リポジトリに反映させます。log`を確認すると、`master`のブランチで作成されていたバージョンの上に、今回作ったバージョンが載っていることが分かります。logを確認してみます。2のコメントのついたバージョンまでしか存在しないことが分かります。ブランチをマージしてみようgitでは、分岐することができるだけでなく、分岐したものをマージすることも可能です。マージするmasterブランチに、hogeブランチの編集内容をマージしてみます。マージされる側のブランチ(master)にいることを確認します。この状態では、hogeブランチで作成したscript.jsファイルは存在しません。margeコマンドで、hogeブランチをmasterブランチにマージします。マージされた結果、masterブランチ内にscript.jsができていることが分かります。addedというhogeブランチでコミットした内容が記載されていることがわかります。※コミットIDも同じ。branchコマンドは、-dオプションをとることで、不要となったブランチを削除する事ができます。次の例では、hogeブランチの内容は、masterブランチにすべてマージされたので、hogeブランチを削除しています。--merged」というコマンドを実行します。※削除されたブランチは表示されないようです。--no-merged」を使います。(1)マージが衝突する(コンフリクト)とは、どういうことかを学びます。commitまで情報を戻します。lsindex.htmlブランチを作成する(checkoutコマンドを利用)新しくブランチを作成します。checkoutコマンドで、-bオプションを付けると、ブランチを作成した上で、ブランチの切り替え(checkout)まで一気に行ってくれます。masterhogehogeブランチでファイルを編集する新しく作ったhogehogeブランチで、ファイルを編集します。deletion(-)masterブランチでファイルを編集するmasterブランチへ移動して、hogehogeブランチと同じ箇所を編集してみます。deletion(-)マージする修正後の内容は、hogehogeブランチとmasterブランチで異なります。そのため、この後マージしようとすると編集内容の衝突(コンフリクト)が発生することになります。(2)マージでコンフリクトが発生した場合、どのように修正すればよいかを学びます。statusでファイルの状態を確認してみます。modified:となり、修正が必要である旨が記載されています。-a")ファイルを修正するエディタで、ファイルを開いてみます。コンフリクトが発生している箇所が明示されています。hogehoge採用したい更新箇所だけ残して、他は削除し、保存します。commitを実行し、リポジトリへ反映させます。fixedとコメントしたバージョンが反映されていることが分かります。過去のバージョンをみると、コンフリクトが発生していた両方のファイルが、それぞれバージョンとして管理されていることがわかります。statusコマンドで確認しても、きちんとコミットされていることがわかります。タグを使ってみようコミットに対して別名をつけてみます。commitまでファイルを戻します。コミットいつもの流れでファイルを編集、ステージングエリアへアップ、コミットまでします。tagコマンドを使って、コミットにタグ(別名)をつけることができます。showコマンドの引数にタグ名を指定することで、変更内容を表示することができます。tagコマンドを使って、過去のコミットどれにでもタグ(別名)をつけることができます。過去のコミットを指定するには、タグ名のあとにコミットIDを指定します。tagコマンドの-dオプションを使って、タグを削除することができます。エイリアスを使ってみようgitのコマンドにエイリアス(短縮名)を設定する方法を学びます。configコマンドを使って設定します。configコマンドで設定した内容は、-lオプションを使って確認できます。Tanakauser.email=git-test@example.comcolor.ui=truealias.co=checkoutalias.st=statusalias.br=branchalias.ci=commitcore.repositoryformatversion=0core.filemode=truecore.bare=falsecore.logallrefupdates=truealiasを使ってみる設定したaliasを使って、実際のコマンドと同じことが実行可能です。共同作業gitでは、共有リポジトリを使って、複数名でファイルを管理することができます。通常は、インターネット上の共有リポジトリか、オンプレのサーバを共有リポジトリとして使いますが、今回はローカルに共有リポジトリを構築して見ます。共有リポジトリは、通例.gitをつけることになっているため、ourweb.gitというディレクトリを作成します。initコマンドを実行します。commitの状態へ戻します。共有リポジトリにpushしてみよう作業者Aとして、共有リポジトリにファイルをpushしてみます。addコマンドを使って、共有リポジトリ情報を設定します。引数の名前originは何でも良いです。慣例的にoriginがよく使われます。remoteコマンド実行後は、設定として書き込まれます。rmコマンドを使って、共有リポジトリ設定を削除することができます。origin共有リポジトリにpushする共有リポジトリに作業者Aのローカルリポジトリの内容をpushしてみます。pushコマンドを利用します。エラーが出なければOKです。リポジトリの内容を共有してみよう作業者Bになったつもりで、作業者Aが共有リポジトリにアップした内容を共有してみます。cloneコマンドを使うことで、共有リポジトリの内容を作業者Bの作業ディレクトリmyweb2まで簡単に複製することができます。共有リポジトリ作業者Bがファイルを編集し、その内容を共有リポジトリにpushします。cloneする際に、共有リポジトリ情報含め、設定情報が全て引き継がれます。作業者A共有リポジトリには、作業者Bの変更が反映されているので、その内容を作業者Aのローカルリポジトリに反映させます。pullコマンドを利用します。共有リポジトリ作業者Bがファイルを編集し、共有リポジトリにアップしたとします。共有リポジトリ時同じくして、作業者Aがファイルを編集し、共有リポジトリにアップしたとします。pushすると、エラーが発生してしまいました。pullして、Bさんの内容をAさんのリポジトリに反映してあげます。result.そうすると、衝突(コンフリクト)が発生するので、解消してあげます。addコマンドを省略することができます。masterまとめ内容盛りだくさんだった。使って覚えるしかなさそうだ。Dockerをドットインストールで勉強し直してきました。参加します!IPとかイーサネットのパケット形式図はなぜあのカタチなのか月別アーカイブはてなブログをはじめよう!naoto408さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。