diadia

興味があることをやってみる。自分のメモを残しておきます。

Gitを使う(改訂版)

まず時間があるならPro Gitを読んだほうが良い

以下は日本語でGitを解説した電子書籍で、無料だった。時間がある時読むのが良い。

Pro Git

時間がなければ以下の2つの動画を見ると、Gitのコマンドのイメージが掴めるようになる。おすすめ。

内容

  1. git 初期設定
  2. 基本的なワークフロー

    1. . ローカル(個人)リポジトリを準備する
    2. . ファイルの変更を行う。
    3. . ファイル(変更)をステージングエリアに上げる。
    4. . ローカルリポジトリに変更を記録する。
    5. . リモート(共有)リポジトリを準備する。
    6. . リモートリポジトリに変更を記録させる。
  3. 各変更を取り消す
  4. gitignoreを運用する

1.git 初期設定

Gitをインストールしたら最初にやることは、ユーザー名とemailアドレスを設定することである。なぜならこの情報を使ってコミットを実行するからである。

詳しくはPro Gitの19ページから参照すると良い。

macの場合

macは基本的にGitがインストールされているのでGitインストールの作業は不要である。gitのバージョン確認すればインストール済みか確認できる。

git --version
//以下の様に返って来たらインストールされている
git version 2.21.0 (Apple Git-122)
#ユーザー情報の設定
#ユーザー名の設定
git config --global user.name "github name"
#user.nameはgithubに登録されている名前を使うようだ。違っていると問題かどうかはわからん。
#ユーザーemailアドレスの設定
git config --global user.email "github email"

#エディターの設定
git config --global core.editor "atom --wait"

#登録内容の確認
git config --list
#または
git config user.name
#または登録情報は~/.git configにあるので以下のコマンドでも確認できる
cat ~/.git config

windowsの場合

端末がwindowsであるならば、git for windowsをインストールするところから始める。 その他の選択肢としてgitHub for Windowsもあるようですが割愛します。

git for windowsのダウンロードはhttps://git-scm.com/download/win。インストールはすべてデフォルトの設定でインストールすれば良い。

詳しく知りたければ、Pro Gitの17ページを参照すること。 詳しく知りたい場合こちらも参照するとわかりやすい。 https://www.sejuku.net/blog/77097

#ユーザー情報登録
git config --global user.name "github name"
#user.nameはgithubに登録されている名前を使うようだ。違っていると問題かどうかはわからん。

git config --global user.email "github email"
git config --global core.editor "atom --wait"


#登録内容の確認
git config --list
#または
git config user.name
#または登録情報は~/.git configにあるので以下のコマンドでも確認できる
cat ~/.git config

2.基本的なワークフロー

  1. ローカル(個人)リポジトリを準備する。
  2. ファイルの変更を行う。
  3. ファイル(変更)をステージングエリアに上げる。
  4. ローカルリポジトリに変更を記録する。
  5. リモート(共有)リポジトリを準備する。
  6. リモートリポジトリに変更を記録させる。

1と5に関しては一回作成したら次回は不要になる。

1.ローカル(個人)リポジトリを準備する

新規のプロジェクトをgitで管理したい場合は、新たにプロジェクトを開始するディレクトリをまず作成する。 練習のためにテキストファイルでも作っておくとなお良い。 それができたら、新たに作成したディレクトリにて、以下のコマンドを入力する。

#以下のコマンドでgitディレクトリを作成する
git init
ls -a
#ちゃんとリポジトリができたか確認するコマンド 
#.gitディレクトリがあれば成功している

2.ファイルの変更を行う

ファイルの編集を行う。編集を行うだけではgitに変更記録は保存されない。 ステージングエリアに移す事が必要になる。

3.ファイル(変更)をステージングエリアに上げる。

ファイルの変更を記録するためにステージングエリアに上げる。

  • git add
  • git rm
  • git mvの種類がある。
git add file_name
#変更ファイルすべてをステージエリアに上げる場合は以下のように行う
git add .
git rm file_name
git mv old_file new_file

4.ローカルリポジトリに変更を記録する

変更記録を保存する場合にはcommitを実行する。 以下のコマンドどれでもコミットを実行する事ができる。

git commit
git commit -m "message"
git commit -v 

git commit -mの場合は、editorを立ち上げることなくメッセージを追加できる。git commit -vの場合はどのような変更があったのかを確認することができる。 vimで編集

5.リモート(共有)リポジトリを準備する

リモートリポジトリを作成し、リモートリポジトリをローカルのgitに登録する必要がある。リモートリポジトリはgithubのnewrepositoryボタンを押して作成する。作成後git remote add ...というコマンドの類がgithub,bitbucketどちらでもページ上に表示される。それをコピーしてgit initしたディレクトリにてペーストする。するとgit にリモートリポジトリが登録される。これでプッシュの準備が整う。

git remote add [リポジトリ名] [リモートurl]

[リモートurl]を[リポジトリ名]で登録するって意味である。コピーした内容はoriginという内容で自分が作成したリモートリポジトリを登録している。以下のコマンドでリモートリポジトリが登録できたか確認することができる。

#リモートリポジトリを参照する
git remote
#リモートリポジトリurlを参照する
git remote -v

6.リモートリポジトリに変更を記録させる

git push -u origin master

一度-uオプションを付けたら次回以降はorigin master をつけなくても以下のコマンドで済む。 参考:https://qiita.com/ironsand/items/6c301fef730d53f35bc3

git push

3.各変更を取り消す

変更を取り消すケースは以下の3つに分けられる。

  • ファイルを編集したがそれを元の状態に取り消したい場合
  • あやまってgit addしたけどなかったことに(取り消し)したい場合
  • あやまってgit commitしたけどなかったことに(取り消し)したい場合

ファイルの編集を取り消したい場合には、以下のコマンドを使う。

git checkout  --<ファイル名>
git checkout  --<ディレクトリ名>
#全変更を取り消す場合
git checkout  --.

git addでステージした変更を取り消す方法は以下のコマンドを用いる。

git reset HEAD <ファイル名>
git reset HEAD <ディレクトリ名>
#全変更を取り消す
git reset HEAD .

ステージから取り消すだけなのでこのコマンドを実行したからと言ってワーキングスペースのファイルには影響を与えない。ちなみにHEADとは最新のコミットのことらしい。

直前のコミットをやり直す。例えばコミットメッセージを書き直したいとかのケースに対応できる。

git commit --amend

イメージで言うと前回のコミットをなかったコトにしてこのコマンドで前回のコミットの代わりにするって感じ。リモートリポジトリにpushしたコミット内容はやり直してはだめ。

流れ git commit >>>>>間違いがわかる>>>>>ワークスペースで治りたいファイルに再編集>>>>git add.>>>>git commit --amendこういう感じ

4 .gitignoreを運用する

どうやらファイルが重いとgit pushに時間がかかる。 そこでキャッシュファイルやsqliteファイルをgitリポジトリ対象外にしようと考えた。 .gitignoreは以下のように作成する

vi .gitignore
touch .gitignore 

不要なファイルをすでにコミットしてしまっているケース

git rm --cached hoge.txt

を使い、その後に取り消したファイルを.gitignoreファイルに書き加える。

vi .gitignore

git rmコマンドだけを使うと作業ディレクトリからファイルを削除するコマンドなのでファイルを作業ディレクトリから消したくない場合にはgit rm --cached を使う。

ブランチについて

Git - ブランチとは ブランチの参照を行う方法

git branch

新たなブランチを作成する方法

git branch <branchname>

ブランチに切り替える方法

git checkout <branchname>

ブランチしたものを作り終えた時

#マージしたいバージョンに切り替えてgit mergeを実行する
git checkout master
git merge  <branchname>