かすてらすねお。

見聞録的ななにか。

ソロGitコマンドチートシートを作った

Githubなどを通じての共同開発を前提としたgitの解説ページは検索すれば沢山出てきますが、単独開発のそれはほとんど見当たらず不満だったので、ソロGitを目的としたチートシートを作りました。これでは、次のことがローカルリポジトリで不自由なくできるようにします。

  • 自分の作業内容を記録(コミット)して後から確認できる
  • 任意のコミットの状態に戻せるようにする
  • ローカル環境が壊れた時の保険としてgithubのリモートリポジトリを利用する

一応言っておきますが、他人の事は考えていません。

ブランチについては自分が理解していないので触れていませんが、後々学習したらチートシートを修整するかもしれません。

f:id:suneo3476z_tn:20150315203132p:plain

スペースの関係上この図に書けなかった細かい補足を行います。

git addとgit commitとインデックス

git addとgit commitコマンドは通常セットで行います。なぜなら、git commitコマンドはgit addで選択したファイルだけを見て変更を記録するからです。

下の図を見てください。git commitコマンドは「インデックス」の中身を見て変更を記録します。この「インデックス」にファイルを追加するのがgit addコマンドなのです。

f:id:suneo3476z_tn:20150315210138p:plain

Copyright © 2004-2015 Nulab Inc. All rights reserved.

引用元:http://www.backlog.jp/git-guide/intro/intro1_4.html

ワークツリーと.git

この図には「ワークツリー」という言葉が出ていますが、これは最初にgit initを実行して.gitファイルが設置されたディレクトリまたはフォルダのことです。.gitファイルにはワークツリー、インデックス、(ここではローカル)リポジトリの内容を把握する役割があります。.gitファイルは先頭にドット「.」のつく隠しファイルのため、Windowsでいうエクスプローラのようなファイラでは特殊な設定をしない限り見えません。もし確認したければ、「ls -a」コマンドを用いて存在を確認できます。

git push origin masterとgit remote add

git pushコマンドでは、

git push push先のサーバ名 push先のブランチ名

のように書きますが、pushする度にサーバ名にいちいちアドレスを書くのは面倒です。このままだと、

git push git@github.com:suneo3476/target.git master

というなが~いコマンドになってしまいます。そこで、サーバ名に別名(Alias・エイリアス)をつけるのがgit remote addです。

git remote add

git remote add 自由な名前のエイリアス エイリアスをつけるサーバ名

のようにします。この例では、

git remote add origin git@github.com:suneo3476/target.git master

のようになります。

origin

このエイリアスには慣例的にoriginがよく用いられているようで、gitの解説ページには大体このoriginが使われていますが、別にコマンドの名前でもなんでもありませんので、注意しましょう(ずっと勘違いしてました)。

master

また、ブランチ名となるmasterについては、筆者のブランチの理解が十分でないので触れませんが、初期状態や通常ではmasterで問題ありません。同じリポジトリ複数のブランチを作成する際に、ここを変更する必要が出てくるのかもしれません。

git logとgit revertとgit checkoutとgit clean

チートシートの組合せによって、特定のコミットの状態に戻すことができる、ということが覚えられれば問題ありません。これについては次のページを参考にしましたので、特にgit revertとgit resetコマンドの違いに注意して読んでください。

また、git checkoutはブランチの知識が関係するようですが、ここも触れません。

 

補足は以上になります。チートシートや説明内容に誤りがある場合や、もっと簡潔な方法がある場合などは、コメントやTwitter@suneo3476Pro, @suneo3476Doc)などでご指摘頂けると幸いです。

今後ブランチの知識を身につけた時に、チートシートを修整するかもしれません。

以上。

 

 これは広告であり、今回説明した内容とは一切関係がありません。

Gitによるバージョン管理

Gitによるバージョン管理