初心者のためのgit
とあるプロジェクトをするためにgitのコマンドの説明をする必要があったためまとめてみました。
おおまかに
そもそもgitというのはファイルの変更を保存するためのアプリケーションです。
まず仕組みとしてはリモートとローカルに分かれています。
- リモート:オンラインで保存する場所。ほかの人も見れる。
- ローカル:自分のパソコンの中。ほかの人見れない。
また開発者はブランチなるものを使って開発します。
ブランチとは履歴の流れを分岐して記録していくためのものです。
ブランチとは【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
そんでもっておおまかには4つのコマンド+αさえ覚えればgitを使えると思っています。
- checkout:ブランチを変更するコマンド
- add:変更を記録する・しないを選択するコマンド。
- commit:変更を記録するコマンド。
- push:変更をリモートにあげるコマンド。
- +α:後で説明します。
基本的にファイル変更→add→commit→pushという順に実行していけばなんとかなると思っています。
今回はそれらを使用頻度順に並べて紹介していきたいと思います。
★★★必須コマンド
checkout
ブランチを変更するコマンド。
具体的な使い方としては
git checkout [行きたいブランチ名]
とか
git checkout -b [新しく作るブランチ名]
後者のコマンドは新しくブランチを作る&そのブランチに移動するという合わせ技です。
そのほかにもブランチ名の代わりにファイル名を付けると、そのファイルを最終コミット時まで戻すことができます。(これは取扱注意コマンド)
add
ファイルの変更を記録するで~というのを宣言するコマンド。
使い方としては
git add [ファイル名]
とか
git add -p
とか。
後者はすごい便利で変更があった場所を個別にあげるかあげないかきいてくれる。
これについてはちょっと面白いのでまた別にブログをあげようかなと思ってます。
これさえ覚えとけ!といっても過言じゃない。
逆にだめな使い方としては
git add -A
とか。
これは変更を全部記録するっていうコマンドで、バグも動作が不安なとこも全部ごったまぜで入れてしまうから禁忌。タブー。
commit
addで宣言したファイルの変更を記録するコマンド。主な使い方としては
git commit -m "[メッセージ]"
です。
メッセージは必須ですよ!
慣れてきたらamendオプションで一つ前にコミットした分について追加し忘れたファイルをコミットするとかコミットメッセージ書き換えるとかできます。
push
commitで作ったファイルの変更の記録をリモートにあげるコマンド。
これはミスるとなかなかややこしくなるのでやや取り扱い注意。
fオプションで強制的に変更したりできるけど、こんなのしかたないとき以外絶対使っちゃだめよ(使わざるを得ないときはいくつかあります。)
主な使い方はこんな感じ。
git push origin [ブランチ名]
★★☆時々使うコマンド
clone
一番最初にしか使わないコマンド。
git clone [リポジトリのURL]
status
現在の状態(変更があったファイルとか未プッシュのコミットがあるなど)を知るためのコマンド
git status
remote add
フォークしたリポジトリの変更を知る時などに使います。
フォークをしたリポジトリというのは本家のリポジトリとは別物になってしまいます。
なのでこのコマンドでその変更内容を知れるようにします。
以下は本家リポジトリとupstreamという名前で登録しているコマンド。
git remote add upstream [本家リポジトリのURL]
reset
間違えてaddしてしまったファイルとかを取り下げるコマンド。
他にもこのコミットまで戻したい!とかいろんな隠蔽ができるコマンド。
ミスると努力の結晶が消えてしまって取り消せなくなることもあるのでやや取り扱い注意。
git reset [取り下げたいファイル名]
branch
ブランチを確認するコマンド。
使用頻度は高めだけど覚える数を最低限にするために星二つ。
以下のコマンドでローカルにあるブランチを参照でき、aオプションではリモートも合わせてすべてのブランチを参照できる。
git branch
pull
リモートの変更を反映させるコマンド。
git pull origin [ブランチ名]
で、変更が取り込める。
取り扱いには注意。
merge
別のブランチの変更を取り込むコマンド。
ちょっと危険なので取り扱いは注意。
git merge [取り込みたいブランチ]
log
地味に重要コマンド。
resetでこのコミットまで戻したい!というときとかにコミット番号というものを知るために使ったりする。
git log
★☆☆覚えていれば便利なコマンド
列挙していくので細かい使い方は気になったときに調べてください。
diff
差分を確認する。
rebase
mergeとは違う変更取り込みコマンド。
詳しいことは割愛しますが、mergeより履歴がキレイに取り込めます。
その分少し手順は複雑です。
また間違えたとき修正が難しいので賛否両論あったり
fetch
リモートの変更状況が知りたいけれど、ローカルには反映したくないなぁって時に使います。
stash
作業中に別のブランチに変更したいときなど、作業状況を保存しておきたい時に使う。
最後に
色々駆け足でおおかたのコマンド説明をしました。
ただここ書いたものは最低限の最低限だと思ってください。
ちょっと難しいけどすごい便利なコマンドとかたくさんあります。
この記事でgitの勉強の踏み台になればいいなと思います。
P.S. たぶんmergeとかrebaseとかfetch、pullの違いがよく伝わっていないと思うのでもしかしたらまた記事を書くかもしれません。