GitHubを始める為に - その1.Git?

2020年7月16日木曜日

Git

t f B! P L

GitHub

GitHubは難しそう

昨今コードの管理といえば皆GitやGitHubを利用していますね。

私の様な仮想系インフラを仕事で触っている人間でも、「VMware製品でGUIでなんでも出来るから問題ない。」と言っている様では超限定的な生息地を与えられるだけなんだと気づきました。

時代はDevOpsやらInfrastructure as Code(英語版Wikipedia)です。ついていかなくては。

とは言え、GitHubをいきなり触り始めるというのもハードルが高く感じます。

GitとGitHub、Push、Commit、Pull、 Branchなど、似た単語があったり、単語数も多く混乱してしまいました。

と、言うことでまずは情報の整理をします。

以下3つのカテゴリにわけてみます。

  • Git
  • GitHub
  • Gist
今日はGitとはなんなのか雰囲気を掴んでみましょう。

Git

Gitはコマンドの名前です。

このコマンドを使用してファイルのバージョン管理ができます。先程、commitとかqullとか言っていたのは、このGitコマンドのサブコマンドですね。

Gitは残りのGitHubやGistを利用する際の基本となるので、自分の環境にインストールされている事を確認しましょう。

$ git --version

もし無いと言われる場合は、インストール。

Linuxならyum or apt-get。Windows or Macならインストーラーがありますね。


主なサブコマンド


サブコマンド シンタックス 説明
init $ git init リポジトリの作成
add $ git [file name] ファイルやディレクトリをインデックスに追加
commit $ git commit インデックスに追加されたファイルをコミット
status $ git status 前回のコミットとの比較
log $ git log コミットログの表示
diff $ git diff インデックスとワーキングツリーの差分を表示
checkout $ git checkout [commit id] [filename] [commit id]の[filename]を復元
show $ git show 最新のコミット内容を表示
reset $ git reset [commit id] インデックスを[commit id]の状態にする
rm $ git rm [filename] インデックスとワーキングツリーからファイルを削除
mv $ git [filename 1] [filename 2] ファイル名を変更
revert $ git revert [commit id] [commit id]のコミットを取り消す
rebase $ git rebase -i [commit id] [commit id]から古い順にコミットを一覧表示&編集
clone $ git clone [repository PATH] [new repository PATH] リポジトリをコピー
push $ git push [remote repository PATH] [branch] リモートリポジトリに変更を反映
pull $ git pull [remote repository PATH] [branch] リモートリポジトリの変更を取り込む
remote $ git remote リモートリポジトリの一覧を表示
fetch $ git fetch [remote repository] リモートリポジトリの最新情報を追加
branch $ git branch [new branch name] 新しいブランチの作成
merge $ git merge [branch] 現在のブランチと他のブランチをマージ
tag $ git tag タグの一覧表示
stash $ git stash 現在の状態を保存する
reflog $ git reflog 過去にHEADが指していたコミット一覧を表示
config $ git config -l 使用されているリポジトリの設定を表示


ざっと見てなんとなくどんなことが出来るコマンドなのか想像できたでしょうか。

インデックス、ワークツリー、リポジトリ、ブランチ、HEADあたりが新たに出現してきましたが、それらは置いておいてGitコマンドとは、ファイルやディレクトリのバージョン管理が出来るコマンドだということがわかれば良いと思います。

対象データに対して、更新差分の表示や歴代の保存時点への復元が可能になるということですね、便利。

QooQ