Gitとは?
Gitとは一言でいえば "バージョン管理システム" のことです。
Gitでは、サーバ上にあるリモート・リポジトリ(1本の木みたいなもの)と言うフォルダに対して、変更を加える(枝付け)ことでリモート・リポジトリ(1本の木)をよりカラフル(変更)にしていくと言うものです。
この枝付けを多数の人と行うのがGitHubです。
(注意)
ここでは、自分の作業場=ローカル・リポジトリをローカルと呼ぶ!
また、一本の木=リモート・リポジトリをリモートと呼ぶ!
(注意)
Gitの流れ
具体的にどのような流れで行うか説明します。
1.ローカル環境が整ったら、リモートからフォルダを自分の作業スペース(ローカル)に持ってきます。
2.リモートで変更点をGit上のissueと言う場所に変更したい内容と共に載せる。
3.ローカルでbranchを作成して、作ったbranchに移動する。
4.そのbranch上で変更を加え,addしてcommitしてpushする。
5.Gitに戻り、最終確認をして変更を許可する。
6.ローカル上にあるフォルダに変更内容を加えるためにmergeする。
Gitのコマンド
以下で[ ]これが登場するが、実際に入力する時は[ ]これを入力しない。
- init
$git init
これは、これから Git をするという宣言のようなもので、 Gitを使用できる環境を作ってくれる。
- remote
$git remote add origin [SSH]
init を行った後にリモートにある [SSH] と共に入力することで自分の作業場(ローカル)を作ることができる。
別の言い方では, **多くある木の中(ネット上には他の人が作ったリモートが沢山)**から, みんなで作業したいリモート(一本の木)を設定するコマンド.
(注意) 下の clone と remote のどちらで環境構築したかで後の進め方が変わってくる!
- clone
$git clone [SSH]
リモートに書かれてあるSSHを入力することで**リモート(一本の木)**を持ってくることができる。
- branch
$git branch [branchname]
[branchname] は例えば issue#1 のように書く。変更作業はここで作ったbranch上で行う。
[branchname] の例では, 追加したい機能の名前など.
(例) ボタン機能を追加したい → [add_button_function]
みたいな感じ. 記法(命名法 or 書き方)は開発メンバーで揃えましょう.
$git branch
このコマンドでローカルにあるbranch(枝)の状態がわかる。
- checkout
$git checkout [branchname]
これで、[ ]ここに指定した branch に移動することができる。
注意:⬇️に書いてることはやってること同じなので深く考えないように.よくわからなかったらスルー.
$git checkout [リモートの移動したいbranchname]
リモートにあるbranchに checkout するとそのbranchをローカルに**コピーする(引っ張ってくる)**ことができる.
$git checkout .
これで、 現在の branch の変更内容を全て消去できる.
注意:作った branch に移動する時は、先に master から離れる。
- status
$git status
このコマンドを入力することでどのファイルを変更したかがわかる。
また、今どのファイルを** $git add しているのか、していないのかも確認できる。
わかるのは、あくまでもファイルで変更内容は確認できない**!!
(注意) $git add をする前に必ず確認しよう!!
- diff
$git diff
これをすることで、今まで加えた変更内容がみることができる。
(注意) $git add をする前に必ず確認しよう!!
- add
$git add [filename]
これをすることでリモートに送りたいファイルを指定する。
この状態ではまだリモートに送ることはできない!
このコマンドをする前に必ず** status と diff** を行い間違いがないか確認する!!
$git add .
これで, 現在のbranchで行なった変更全てを add する.
- commit
$git commit -m "[変更点]"
$git add をした後にこれをすることでリモートに送る準備ができる。
[変更点]は加えた点が誰に見られても理解できるものにする!!
- push
$git push origin master
まず origin というのはリモートの一般的な名前のこと。
接続するRemote環境(一本の木)を設定するコマンドで紹介した、 $git remote add origin [SSH] のoriginのこと!
これによって、変更したファイルを送ることができる。
- merge
$git merge
merge(合流, 統合)という意味.
これをする前に、必ず $git checkout master を行う! 作成した branch 上で行わないように。
これを行うことで、他の人の変更をorigin(リモート)から引っ張ってきて統合することができる。
- pull
$git pull origin master
これによって、更新されたファイルをリモートから持って来て、自分の作業場(ローカル)の環境を更新することができます。
origin はリモート・リポジトリの名前のこと。
$git pull origin [branchname]
実際には⬆︎の意味で捉えられます.
これは, このコマンドを打った時にいるbranchに対して, orgin(リモート)上にある[branchname]で指定したbranchを**現在いるbranchに統合(merge)**することを意味しています.
難しかったらスルーで構いません.
[追加: 2019/6/13]
まとめ
-
addをする前には必ず、status と diffをして最終確認をする。
-
小まめに merge することで conflict(衝突)を回避しよう!!
conflict(衝突)とは他の人と自分の変更点に矛盾が生じたときに起こる問題のこと。 -
他にも多くのコマンドとアプローチの方法があるため調べてみる!!
振り返り
この記事を書いてから1年が経ちました.
今振り返ってみると, 無茶苦茶なこと書いてるな!? と思う箇所もありましたが, Gitを初めて勉強した時は「なにいってるんだこいつ?」 と思いながら学びました.
わかる人が読めば, 「なんだ? この説明は.」と思う箇所もあると思います.
(僕も久々に読んで思いました笑)
しかしこの記事は, わからなくて四苦八苦している自分が書いたものなので, 同じく苦しんでいる人には案外この説明がわかりやすのかもしれません.
なので, あまり書き方・説明方法を変更するつもりはありません.
と言いつつ少し説明を追加したりしたのですが...
この記事が誰かの理解の一助になれば嬉しいです.