Gitの使い方 | 基本編

1年程個人でGit(git for windows)を使ってみて、基本的な使い方はできるようになってきた。なので、ここらで纏めておこうと思います。

設定

Gitインストール後、最低限、以下の設定を行います。

ユーザーを設定する

git config --global user.name <ユーザー名>

改行コードの扱いを設定する

改行コードをどのように扱うか設定します。Windowsではtrue、Unixではinputが推奨されているようです。私はWindowsでもソースコードの改行にLFを使っているのでinputにしています。

チェックアウト時 コミット時
true 改行コードをCRLFに変換 改行コードをLFに変換
input 改行コードを変換しない 改行コードをLFに変換
false 改行コードを変換しない 改行コードを変換しない
git config --global core.autocrlf true|input|false

設定の確認

git config --global|--system|--local <設定名>

なお、設定ファイル(.gitconfig)は通常、以下の場所にあります。
C:\Users\<ユーザー名>\.gitconfig

Gitの構成

Gitの構成は次のようになっています。

名称 内容 主な物理的位置
リモートリポジトリ pushした位置 クラウド・GitHub・社内サーバなど
リポジトリ コミットされた位置 作業マシン
ステージ コミット前の状態
インデックスともいう
作業マシン
ワーキングツリー ローカルにある実際に作業しているディレクトリ 作業マシン
Gitの状態 Gitの状態

個人で管理したいだけであれば、リモートリポジトリが無くても利用可能です。

リポジトリの作成

リポジトリを作成する

リポジトリとしたいフォルダで次のコマンドを実行します。.gitフォルダが生成されます。

git init

リモートリポジトリの複製

リモートリポジトリを複製して、リポジトリを作成する場合は、次のコマンドを実行します。

git clone <リモートリポジトリ> <出力ディレクトリ>

カレントディレクトリの配下にディレクトリが作られ、リポジトリが複製されます。出力ディレクトリを省略した場合は、リポジトリ名と同じディレクトリになります。

Windows環境でリモートリポジトリを指定する際に\を使う場合は次のようにエスケープする必要があります。

  • ローカルディレクトリ
    git clone C:\\repos\\repo.git
    
  • ネットワークドライブ
    git clone \\\\share\\group\\git\\repos\\repo.git
    
What’s mean “origin”?
よくあるoriginですが、これはリモートリポジトリ名になります。本記事ではリモートリポジトリ名は全てoriginとしています。

状態を確認する

変更されたファイルやステージング状態のファイルを確認するコマンドです。この後何をすべきかヒントも出力してくれるため、使う頻度が高いコマンドです。

git status

以降は各状態ごとの基本的な操作です。

ワーキングツリー

ワーキングツリーの変更をステージに追加する(ステージング)

  • ファイル指定
    ファイルを新しく追加する場合も同じコマンド
    git add <ファイル名>
    
  • 変更があるファイル全て
    新規ファイルも一緒に追加される
    git add .
    
git addでステージに上げたファイルをワーキングで編集して、再度git addした場合、ステージ上のファイルは上書きされます(最新のファイルのみ保持)。

ファイルを削除する

git rm <ファイル名>

ファイル名を変更する

git mv <旧ファイル名> <新ファイル名>

ワーキングツリーの変更を元に戻す

前回コミットした状態まで戻す

ワーキングツリーのファイルを前回コミットした状態に戻します。ステージングも解除されます。

  • 特定のファイルを戻す
    git checkout <ブランチ名> <ファイル名>
    
  • ワーキングツリーの変更を全て元に戻す
    • 変更は全て消える
    • 追加ファイルも消える
    • 削除したファイルは復元される
    git reset --hard HEAD
    

ステージングした状態まで戻す

ワーキングツリーのファイルを前回ステージングした状態まで戻します。

git checkout <ファイル名>

または

git restore <ファイル名>

ステージ

コミットしてリポジトリに登録する

  • ステージの内容を全てコミット
    git commit -m 'コメント'
    
  • ステージにあるファイルを指定してコミット
    git commit <ファイル名> -m 'コメント'
    

ステージングを取り消す

ファイルの変更は維持されます。

ファイル指定

git reset HEAD <ファイル名>

または

git restore --staged <ファイル名>

リポジトリに未だコミットしていない場合は次のコマンドを使用します。

git reset <ファイル名>

全てのファイル

git reset HEAD

リポジトリに未だコミットしていない無い場合は次のコマンドを使用します。

git reset

リポジトリ

リモートリポジトリにローカルリポジトリのコミットを反映する

  • ブランチ指定
    git push origin <ブランチ名>
    
  • 全てのブランチ
    git push --all origin
    

参考:pull実行時の動き

ローカルの状態 編集ファイルのマージ
コミット済みあり 自動マージする。コンフリクトの可能性あり
ステージングあり Error. “Your local changes to the following files would be overwritten by merge”
ローカル編集あり Error. “Your local changes to the following files would be overwritten by merge”

リモートリポジトリをローカルリポジトリへ取得・マージする

git pull origin <ブランチ名>

リモートリポジトリをローカルリポジトリへ取得する

git fetch origin <ブランチ名>

その後自分でマージします。

git merge origin/<ブランチ名>

コミットの取り消し

git resetを使うとコミット自体を取り消せます。(履歴からも消える)

  • ローカルの変更を全て破棄する
    ローカルリポジトリを特定のコミットまで戻す。戻すコミット位置はタグやコミットのハッシュ値(先頭数文字でもOK)など。HEAD^で直前のコミットを指定。
    • ローカルの変更は全て破棄される
    • 追加ファイルも破棄される
    git reset --hard <戻すコミット位置>
    
  • ローカルの変更を維持する
    ローカルリポジトリを特定のコミットまで戻す。
    • ローカルの変更(ワーキング)は維持される
    • ステージングは解除される
    git reset <戻すコミット位置>
    
  • 直前のコミットを取り消してステージングに戻す
    • 取り消したコミットファイルはステージング状態になる
      同一ファイルがステージング状態ならそちら(最新)を優先
    • ローカルの変更(ワーキング)は維持される
    • ステージング状態も維持される
    git reset --soft HEAD^
    
  • 直前のコミットを取り消してワーキングツリーに戻す
    • ローカルのファイルは維持される
    • ステージングは解除される
    git reset HEAD
    
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

関連コンテンツ

スポンサードリンク

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です