LoginSignup
2
2

More than 5 years have passed since last update.

gitメモ

Posted at

恥ずかしくも今までgitの基本をちゃんと勉強しないできたので夏休みの一日を使ってgitを叩き込んでおこうと思います。disclaimer: 自分で分かればいいと思って殴り書きでまとめてあるのでしっかりと学習したい方は一番下に貼っておいた参考にしたサイトを見てもらったほうが早いと思います。

目次

Gitとは

不特定多数の人と共同でファイルをいじる際にいじった内容や履歴などを一括管理してくれるバージョン管理システムの一つ。

Scannable Document on Aug 5, 2016, 10_30_43 PM.png

どうやって

ディレクトリ毎にレポジトリを作って内容の変更履歴を保存、管理する。

基本的な操作一覧

  • ls自分が今いるディレクトリにあるファイル一覧を表示
  • cd [(下層)ディレクトリの先]
  • cd ~ホーム画面へ戻る
  • pwd自分が今いるディレクトリがわからない時に
  • cd ..自分が今いるディレクトリのひとつ前(上層)のディレクトリへ
  • ls -la文字通り全てのファイルを表示(ファイル表示でも見れないようなファイル、そういうファイルは基本いじらないほうがよし!)

簡単なチュートリアル

新しく作ったファイル/ファイルの変更をコミット

mkdir exでプロジェクトを作りcd exでそのディレクトリに行きgit initでgitを起動。適当なテキストファイルを作り保存。git add .(gitに変更箇所があることを教えるコマンド)

git log --author="username"で特定のユーザーからのコミットのみを表示

git statusでレポジトリと今いるディレクトリを比べて何か変化があったかどうかを確認できる。たとえばディレクトリにex.pyとex2.pyがあったとして二つに変更を加えてgit statusを行ってみたところ...
Screen Shot 2016-08-05 at 10.41.53 PM.png

untracked filesというのはつまりコミットされていないファイル。つまりコミットしてないから変更履歴を管理できてないよと教えてくれている。

そこでコミットするためにはgit add [file]で一度ローカルレポジトリに入れてからgit commitで変更を追加する。

working copy > staging area > repositoryの順番。詳しくは上の(下手な)画像を参照。。。

Screen Shot 2016-08-05 at 10.46.13 PM.png

git commit -m "[comment goes in here]"でコミット完了。
git commit -m "adding all the files to the repository"

Screen Shot 2016-08-05 at 10.47.20 PM.png

git logで確認可能。

変更したファイルの違いを確認

ファイルを変更すると勿論git statusでレポジトリのファイルを違うよ!と警告が出る。具体的にどんな違いがあるのかを一括で確認したい時に使えるのがgit diff

Screen Shot 2016-08-05 at 10.57.41 PM.png

ここではex.pyのファイル内にあるdef bar(): return 2からdef bar(): return 345に変わってるぞと教えてくれている。赤字が現在レポジトリに入っているデータで緑色が作業ディレクトリに入っているデータの内容。git diff作業ディレクトリとレポジトリを比較しているのであってその中間に位置しているステージングエリアにあるファイルではないことに注意。言い換えると一度git add [file]をしたらそのファイルはgit diff上では表示されないことを覚えておく。もしstaging areaと比較したい場合はgit diff --stagedで確認可能。

ファイルの削除

git rm [file name]でレポジトリと作業ディレクトリにあるファイルを削除してくれる。削除した後もコミットするのを忘れずに!

Screen Shot 2016-08-05 at 11.13.09 PM.png

ファイルの移動/名前の変更

git mv [file name] [new file name]で名前の変更。git mv [file name] [directory name]でファイルの移動。git mv ex.py test/ex.pyもしくはgit mv ex.py test/ex2.pyで名前変更とファイルへの移動を同時に行える。

ちょっとした実践

youtubeのチュートリアルにあったファイルを使って実際にgitを使ってみるよ!ダウンロードはここから(all credits goes to Bucky) 。

Dogs_Siteディレクトリまで行きgit initgit add .からのgit commit -m "comment"でレポジトリに全てのファイルを追加。
Screen Shot 2016-08-05 at 11.36.11 PM.png

こんな感じでぐわーーって出てくれば大丈夫。

git commit -amでstagingを通さずにレポジトリへ

任意でファイルを選んで(自分はindex.htmlを)コメントアウトの行数でも何でも適当に変える。git statusで変更を確認してgit commit -am "Cleaned up the HTML commentsするとステージングエリアにいちいち送ることなく一気に変更したファイルをレポジトリに送ることが出来る。git statusで確認してみると綺麗に反映されていることが分かる。

ただこのコマンドを使うと全ての作業ファイルをレポジトリに送ってしまうことを頭に入れておく。またファイルをシンプルに編集している時以外は使わないこと方が良い。

変更を取り消す

git statusで変更点を確認しgit checkout -- [file name]

ステージングしたファイルの取り消し

変更したファイルをgit add [file]でステージングへと送ったはいいがやっぱりコミットはしたくない。取り下げたい!なんてときにはgit reset HEADで最新のファイルをステージングから取り下げて作業ディレクトリへと持ってこれる。

(コミットした後の)変更を取り消して古い方のファイルをレポジトリに持ってくる

git logでどのコミットに戻りたいかを確認。

commit 739cc67b99beecfbae4271028065263db4251818
Author: xxxxxxxxxxxxx
Date:   Fri Aug 5 23:40:15 2016 -0700

    cleaned up the HTML comments a bit

commit c71d29002ade2e0806f5aab96e7262d61bed2a5e
Author: xxxxxxxxxxxxx
Date:   Fri Aug 5 23:36:07 2016 -0700

    our first commit

行きたい先のcommitの横にあるidをコピーして(もしくは最初の何個かの文字を入力)git checkout [id] -- [file name]で指定したファイルを持ってくる。git statusで確認した後commit。

Githubを使ってみる

githubとgitの違いは下記の参考リンクを見ると分かりやすいが、簡単にいえばオンラインネットワークを介してパブリックに共有できるgitと考えてもらえれば良いと思う。

githubの右上にあるドロップダウンバーにあるcreate a new repositoryをクリック。

creen Shot 2016-08-06 at 12.16.32 AM.png

適当な作業ディレクトリを作りいつもの手順でgit commitまで行う。ここからgithubへpush(オンライン上に持ってくことをpushと呼ぶ。pullの代わりにfetch)する。先ほどのウェブページに戻って上にあるリンクをコピー。git remote add [リンクの名前を任意で(わざわざリンクを毎回打つのが大変なので] [リンク]具体的にはgit remote add github_test https://github.com/xxxxxxxxxxxx/test.gitgit push -u [オンラインレポジトリ]でオンラインレポジトリへと持っていく。

Screen Shot 2016-08-06 at 12.29.00 AM.png

参考にしたサイト

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2