gitでよく使うコマンドまとめ(基本中の基本編)
理解しとかないと仕事にならないレベル
git add
gitのステージにファイルの変更を登録するのに使うコマンド
基本的には
git add "{登録したいファイルの名前}"
git add "{登録したいディレクトリ}"
以上のようにステージに登録したいファイル、もしくはディレクトリをaddの後ろに書くことで使う。
git add .
と入力すると、現在のディレクトリを指定することが可能である。
ただ、一々ファイルやディレクトリを指定するのはめんどくさいと言う人もいるだろう。
そう言う人たちのための便利なオプションがある。
それが-Aと-uである。
-Aと-u
git add -A <path>
git add -u <path>
-Aとは、allのことであり、すなわち作業ツリー全てをステージングするオプションである。パスを指定することでステージングする範囲を限定することもできる。
ただし、このオプションを使う場合は意図しないファイルが紛れ込む可能性があり、注意が必要である。
そのため、このオプションを使う場合は"git status"等でステージング状況を確認してから使うことをお薦めする。
ただ、それでも事故が起きてしまうことがあるため、私はuをお薦めする。
-uは、updateの略であり、一度ステージングされたファイルの中で編集されたもののみをステージングするオプションである。新しく作られたファイルはステージングしないため、-aを使うよりも若干安全である。
git commit
ステージングされた変更をローカルリポジトリに登録するコマンドである。
git commit
このコマンドを打つと自動的にエディタが立ち上がり、コミットメッセージ(コミットを打った際に残すことが出来るメッセージ、通常はなにを変更したのかを明言するために使われる)を記入するように促される。コミットメッセージを保存すると、その後ステージにある変更がリポジトリに登録される。
ただ、一々エディタが起動してしまうのが煩わしい人も多く(かくいう私もその一人)、大概は『-m』オプションと共に使われることが多い。
-m
git commit -m "{コミットメッセージ}"
-mとはmessageの略であり、この後の"(ダブルクォーテーション)か、'(シングルクォーテーション)で囲まれた文字列はコミットメッセージとみなされ、エディタが開かれることなく、コミットが実行される。
なお、『-a』という横着者向けのオプションもあるが、これを使うことは絶対に勧められない。このオプションは"git add -a"と同様にワーキングツリー全てのファイルをステージングし、そのままリポジトリに登録してしまう。つまり、"git add -a"と同様に事故を起こしやすいのだ。それどころか、そのままリポジトリに登録してしまうため、これよりもずっと危険性が高い。繰り返すが、『-a』は絶対に使ってはいけない。
魔物が棲むコマンドだが、これを使わなければ話にならない
git push
ローカルリポジトリをリモートリポジトリに登録するコマンド
git push "{リモートリポジトリ}" "{ブランチ名}"
このコマンドを使う際は上のように、まずプッシュしたいリモートリポジトリと、そこに登録したい『ブランチ』を指定する。
つまり、リモートリポジトリに変更を加えたブランチごと登録するという流れになり、過去に登録した複数のコミットがまとめて登録されるということになる。
リモートリポジトリの指定には事前にリモートリポジトリを事前にローカルリポジトリに登録済みであれば、**"origin"**というキーワードを挿入すれば自動的にリモートリポジトリのURLを当てはめてくれる。
なぜ、pushが危険か。
なぜ危険なのかというと、このコマンドを打った瞬間、自分の変更がリモートリポジトリにアクセスできるすべてのエンジニアに公開されてしまうからだ。
それはすなわち、自分の行った変更が全てのエンジニアに影響をすることであり、もし誤った変更がプッシュされると、その変更の上に他のエンジニアも変更を行ってしまい、その後のプロジェクトに影響が出てしまう。
中でも怖いのが、gitは稀に先祖返りと呼ばれる現象を起こす事がある。
開発中、同時期に違うエンジニアが同じファイルに変更を行うことがある。このとき、git pushを行うと、『コンフリクト』と呼ばれる、いわば『変更の競合』が起こる。このとき、これを解消するために後からプッシュを行ったエンジニアが競合箇所を直さなければならないが、これを無闇に直すと、自分よりも前の変更が全て『無かったことになる』ことがある。
これが先祖返りと呼ばれる現象である。
以上の理由から、"git push"は最も慎重に取り扱わなければならない。
これを防ぐには、必ずgit pushを打つ前にgit statusや、git log、git diff等のコマンドを用いてできる限りの確認を行うことが必要である。
そして、ミスを見つけたときはgit reset等のコマンドを用いて間違いを正すことを覚えておかなければならない。
Discussion