Gitとはなに?どうって使う?素人がGitについて理解する

Gitとは

Gitは他の人と一緒にWeb開発したりするときとかに役に立つ機能みたいですね。ファイルの共有とかバージョン管理ができるみたいですね。

Gitの操作

git 共有

gitでファイルを共有するにはいくつかの手順を踏まないといけないようです。gitの操作はターミナルで行うようです。

git init gitを立ち上げる
git add index.html 共有するファイルを選択する
git commit -m “メッセージ” コミットする
git remote add リモート名 リモートのurl リモートを選択する
git push リモート名 master リモートにファイルをアップロード
git pull リモート名 master リモートからファイルをダウンロード

把握と選択

git status 自分が変更したファイルを表示する
・addしたファイルは緑色
・addしてないファイルは赤色
git diff 変更した内容(ファイルを編集した内容)を表示する
git log コミットの履歴を表示
ログを終了するには Qキー を表示する
git log -p コミットの変更内容を表示する

リモートにファイルをアップロードするには上表の上から下をターミナルで実行すればよいようです。

リモートとは

git remote

Gitでは「リモート」というものにファイルがアップロードされる仕組みのようです。またダウンロードもリモートから行うことができるようです。

ファイルをリモートからダウンロードする


リモートからファイルをダウンロードするには pull を使えばよいようです。ダウンロードしたい人がpullを使えばよいみたいです。

Gitのコマンド操作まとめ

この記事はプログラミング学習サービスProgateの学習内容をもとに記事をつくっていますが、入門記事としてコンテンツを随時追加しています。

基本

作業ディレクトリ
ステージングエリア(インデックス)
リポジトリ(ローカル, リモート)

設定

#名前の設定
$ git config --global user.name "hoge"
#メールアドレスの設定
$ git config --global user.email "hoge@mail.com"
#色の設定
$ git config --global color.ui true

エディターの設定

gitが使用する標準のエディターを変更したいときは以下のようにします。emacsを使用する例です

$ git config --global core.editor emacs

設定の確認

$ git config -l
################
user.name=hoge
user.email=hoge@mail.com
color.ui=true

操作の流れ

$ git initを実行するとディレクトリに .git/configファイルが作成される

$ git init

適当なファイルindex.htmlを作成して $ git addを実行します。

$ git add index.html

次はコミットします。$ git commitを実行するとエディターがたちあがるのでメッセージを書いて保存します。

$ git commit #エディターがたちあがるのでメッセージを書いて保存
#$ git commit -m "hoge" の場合エディターが立ち上があらない
#$ git commit --amend コミット履歴をのこさずにコミットする

ちゃんとコミットされているかlogを確認します。

$ git log
#log#
commit 2bd4382071b3eca68bdcb68c5cf20ebc0370e6ec
Author: hoge <hoge@mail.com>
Date:   Fri Nov 9 14:51:22 2018 +0900
initial commiit

ログ

$ git log –oneline 1ライン表示
$ git log -p     内容をみる
$ git log –stat

状態の確認

$ git status ステータス
$ git diff アドしてない状態
$ git diff –cashed アドした後の状態

ファイルを削除したくなったら

gitではファイルを削除したり移動したりする場合はコマンドのまえに必ず git をつけておこないます

ignore

ignoreはgitに履歴に残さないための仕組みです。.gitignoreというファイルを作成して、そこに無視したファイルを書いていきます。

$ vi .gitignore
##ファイルの内容##
#*.css と書いて保存
$ git status #.cssのファイルは無視される

前のバージョンに戻す

前のバージョンんに戻すには $ git reset を使用します。

$ git reset --hard HEAD           #1個前に戻る
# $ git reset --hard HEAD         #2個前に戻る
# $ git reset --hard idididididid #idを指定してバージョンを戻す
# $ git reset --hard ORIG_HEAD    #リセットの取り消し

平行開発

平行で開発するにはbrunchを作成しbrunchを変更して開発する。commit結果はbrunchごとに残るようになる

$ git branch hoge      #branchの作成
$ git branch           #現在のbranchの表示
$ git checkout hoge    #branchの変更
$ git branch -d hoge   #branchを消す
$ git checkout -b hoge #branchの作成とチェックアウトを同時に行う

$ git merge hgoe #hogeの変更をmasterにも反映させる

<h3>コンフリクト</h3>
コンフリクトは違うbranch同士で同じ場所を変更して merge しようとするとおこる

$ git merge fuga
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
<<<<<<< HEAD hello jon ======= hello bob >>>>>>> fuga

コンフリクトの解決↓コンフリクトを解決して、その後コミットする。両方に反映されるわけではない

hello jon

tag

$ git tag v1.0          #直近のコミットにタグづけする
$ git tag v0.9 idididid #idを指定してタグづけする
$ git tag -d v1.0       #タグを消す
$ git tag               #タグの一覧を表示する
$ git show v1.0         #v1.0の詳細を見る
$ git reset --hard      #v1.0に戻る

alias

gitのコマンドをalias登録することができます

$ git config --global alias.co checkout
$ git config --global alias.st status
$ git config --global alias.br branch

共有リポジトリ

ポイント

  • 共有リポジトリでは作業は行わない。
  • remoteを設定するまえにまず git initを実行する
  • 共有リポジトリにpushしたりpullしたりするにはremote addを実行しておく必要がある
$ git init --bare #共有リポジトリにする。共有リポジトリにしたいディレクトリに移動してから行う
Initialized empty Git repository in 
$ git remote add remotename <path or url> #リモートリポジトリに設定する
$ git remote rm remotename #登録されているリモートを消す
$ git remote    #登録されているリポジトリの確認(名前のみ)
$ git remote -v #登録されているリポジトリの確認(名前とパス)

$ git clone remoterepositorypath hogedirectory #クローンを作成する。リモートの情報もひきつがれる
$ git push remotename master #共有リポジトリにプッシュする
$ git pull remotename master #共有リポジトリからひっぱってくる

gitのメッセージ

gitをおぼえたてだとでてくるメッセージがそもそもエラーなのかただのメッセージなのかよくわからないことがあります。gitのメッセージを書いておこうかと思います。

なにも変更していないのにcommitしようとすると以下のメッセージがあらわれます。

# On branch master
nothing to commit (working directory clean)

その他知っておくとよいこと

git addのオプションについて以下のサイトが参考になりました。
git add -u と git add -A と git add . の違い | note.nkmk.me

まとめ

Gitの操作はadd, commit, push, pullのサイクル。リモートにアップロードしたりダウンロードしたりする。以上です。