Gitを勉強するときに役立ったもの

Git勉強中ですが、いろいろなページやスライドを見てすごく参考になりましたのでまとめました。

Git入門編

この方のスライドは本当にわかりやすかったです。コマンドことに作業ディレクトリ、ステージングエリア、Gitディレクトリの流れを図で説明していただけるのでイメージを掴むことができました。

 
 
 
こちらのアシアルさんのブログ記事も非常にわかりやすかったです。以前はSubversionを使用していたので2つのいいとこ取りをしているというとことに納得でした!

blog.asial.co.jp

コマンド編

基本的なコマンドを知るにはドットインストールがいいと思いました。

dotinstall.com  
 
 
ブランチやmarge、rebaseの違いについて学ぶには以下のスライドわかりやすかったです。何よりスライドが見やすくて、スライドの作り方としても参考になるものでした。

 
 
 
transitive.info【Git 使い方 見出し一覧】はコマンドごとにオプションや使い方を記載しているので、とても参考になりました。

transitive.info - Git 使い方 見出し一覧  
 
 

本格的に学習する

書籍としてはGithub実践入門が入門書としては良いかと思います。

www.amazon.co.jp  
 
 
Pro Gitという書籍のPDFが無料で配布されていてとてもありがたいです。

Pro Git 日本語版電子書籍公開サイト  
 
 

その他

Gitチートシートもありましたので時々参考にしています!

ndpsoftware.com

Gitコマンドについて調べる【git checkout】

git checkout

ブランチを切り替えるコマンドです。

subversionを使用していた方は、チェックアウトというとリモートからローカルにコピーするイメージですが、gitのチェックアウトは意味が違い、ブランチを切り替えるコマンドになりますのでお気をつけください。

$ git branch [変更したいブランチ名]

ローカルの作業ブランチを切り替えます。変更したいブランチがローカルに存在しない場合はブランチの切り替えをすることができませんが、リモートには存在していた場合はリモートからブランチを取り込み、その取り込んだローカルブランチに切り替えることができます。

Gitコマンドについて調べる【git branch】のエントリーでも書いたとおり、-bオプションをつけると、新しくブランチを作成してからそのブランチに作業ブランチを切り替えることができるので便利です。

# ブランチを新しく作成して切り替える
$ git checkout -b [新しく作成するブランチ名]

ファイルの変更を取り消す

$ git checkout [変更を取り消したいファイル]

git checkoutの後にファイル名を指定すると、指定したファイルの現在の修正を取り消し、最後のコミットの状態まで戻します、変更はしたけどもう一度最初からやり直したい場合になどによく使います。

すべてのファイルを強制的に元の状態に戻すには-fオプションを使います。

$ git checkout -f

Gitコマンドについて調べる【git branch】

git branch

ブランチ名を一覧で閲覧できたり、新たにブランチを作ったりブランチを削除したりできるコマンドです。

ブランチの一覧を見る

$ git branch

git branchコマンドでブランチの一覧を見ることができます。 見ることができるのはローカルリポジトリに存在するブランチの一覧です。下のように表示され、現在編集中のブランチの左には「*」がマークされます。

$ git branch
  master
* example_branch

リモートブランチも見たい場合は-aまたは--allオプションをつければリモートブランチも見ることができます。

$ git branch -a
$ git branch --all

ただ、コマンド実行時にリモートリポジトリを検索して一覧を表示するわけではないので、最新のリモートリポジトリを取得したいのであればgit branch -aの前にgit fetchコマンドでリモートリポジトリの状態を取得します。

$ git fetch

新たにブランチを作る

$ git branch [ブランチの名前]

ローカルリポジトリに対して新しいブランチを作成します。ただ編集するブランチを新しく作成したブランチに自動的に切り替えてくれるわけはないので、編集するブランチを新しく作成したブランチに切り替えるにはgit checkoutコマンドを使用します。

$ git branch [作成するブランチ名]
$ git checkout [新しく作成したブランチ名]

新しくブランチを作成して新しいブランチに切り替える操作は、git checkout -bというcheckoutのオプションがあるのでそれを使用すると1つのコマンドで実現できます。

# 新しくブランチを作成して、作成したブランチに切り替える
$ git checkout -b [新しいブランチ名]

ブランチを消去する

$ git branch -d [消去するブランチ名]
$ git branch --delete [消去するブランチ名]

-d--deleteオプションを付けて消去したいブランチ名を指定するとブランチを消去することができます。現在の編集中のブランチは消去することができずerror: Cannot delete the branch '[ブランチ名]' which you are currently on.というエラーメッセージが表示されます。

また、masterブランチにマージされていないブランチは消去することができません。下のようなメッセージが出ます。

$ git branch -d example_branch 
error: The branch 'example_branch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D example_branch'.

masterブランチにマージしていないブランチを消去するということは、そのブランチに対して行なった変更履歴をすべて失ってしまうということです。ですので消去することができないようになっています。それでも強制的にブランチを消去するには-Dオプションを使います。

$ git branch -D [消去するブランチ名]

オプション

-m--move

ブランチ名を変更することができます。

$ git branch -m [変更前ブランチ名] [変更後ブランチ名]
$ git branch --move [変更前ブランチ名] [変更後ブランチ名]

ただ、注意が必要なのが、リモートリポジトリから取得したブランチをリネームすると、リネーム前のブランチが消え、新しくブランチを作成した状態と同じになるので、そのままpushすると新しい名前のブランチが新しくリモートリポジトリに作成されます。リネーム前のブランチはリモートリポジトリにはそのまま残る点だけ注意してください。

-v--verbose-vv

ブランチの一覧を表示すると同時に、それぞれのブランチの現在の状態を表示します。

$ git branch -v
  master          e0b3ff6 modify readme
* example_branch1 b65374f new branch
  example_branch2 e0b3ff6 modify readme

-v--verboseは、ブランチの一覧に加えてそれぞれの最新のコミットの状態を見ることができます。ブランチ名の後にコミット番号、コミットログが表示されます。

上の例でmasterとexample_branch2の状態が同じなのは、example_branch2はmasterから新しくブランチを作成し、何も変更履歴がないため、同じコミットの状態になっているということです。

-vvをつけると以下の様な表示になります。

$ git branch -vv
  master          e0b3ff6 [origin/master] modify readme
* example_branch1 b65374f [origin/example_branch1] new branch
  example_branch2 e0b3ff6 modify readme

先ほどの一覧に[]で囲まれたリモートブランチ名が表示されます。それぞれのブランチがどのリモートブランチを追跡しているかを知ることができます。example_branch2にだけ表示がないのは、新しくローカルでブランチを切った後であるためまだ追跡ブランチがないということです。