「Gitの基礎 - Gitコマンド」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
65行目: 65行目:
*: <br>
*: <br>
*: また、.gitディレクトリを隠すことにより、誤ってファイルを書き換えてしまうことを防ぐこともできる。
*: また、.gitディレクトリを隠すことにより、誤ってファイルを書き換えてしまうことを防ぐこともできる。
<br><br>
== ステージング ==
<code>git add</code>コマンドは、作業ツリーにあるファイルやディレクトリをステージする。<br>
<br>
==== ファイルのステージング ====
# 各ファイルを1つずつステージする場合
git add README.txt
<br>
既にステージされているファイルやディレクトリにおいて、作業ツリーから全てステージする場合は、<code>-u</code>オプションを付加する。<br>
これは、作業ツリーから全てステージするファイル名を指定せずに、現在、Gitの管理下にあるファイルが作業ツリーから全てステージすることができる。<br>
git add -u
# または
git add -u .
<br>
==== ディレクトリのステージング ====
<code>git add</code>コマンドの引数にディレクトリを指定する場合、そのディレクトリ直下にある全てのファイルとディレクトリをステージに入れる。<br>
<br>
<u>ただし、Gitは空のディレクトリを管理しない。</u><br>
<u>空のディレクトリを管理する場合は、そのディレクトリに空のダミーファイル (.gitkeepという名前にすることが多い)、あるいは、.gitignoreファイルを入れてステージするとよい。</u><br>
<br>
==== 全てのステージング ====
プロジェクト内の全てのファイルとディレクトリをGitの管理下に置くことができる。<br>
<u>ただし、バージョン管理しないファイルおよびディレクトリ (自動的に生成されるファイルやログファイル等) も管理下に入ることに注意する。</u><br>
git add .
<br><br>
<br><br>



2024年11月8日 (金) 13:01時点における版

概要



initコマンド

initコマンドは、新しいGitリポジトリを作成するために使用する。
リポジトリとは、「ファイルやディレクトリの状態を管理する場所」のことである。

一連のGitコマンドは、Gitリポジトリが管理しているディレクトリ内で使用することができる。

initコマンドを実行すると、現在のディレクトリに.gitディレクトリ(Gitリポジトリ)が作成される。
リポジトリが作成されることにより、Gitコマンドでリポジトリを管理できるようになる。

  • -q / --quietオプション
    initコマンドの実行時に表示されるメッセージを省略する。
    ただし、警告とエラーメッセージは表示される。

  • --bareオプション
    ベアリポジトリと呼ばれる特殊なGitリポジトリを作成する。
    --bareを使用することで、対象のディレクトリを.gitディレクトリそのものとして扱う。
    ベアリポジトリには、実際のディレクトリやファイルを持たないが、.gitディレクトリ内にあるファイルのみを持つ。
    ベアリポジトリはpush先となる集約されるようなリポジトリに対して作成する。

    • ベアリポジトリの特徴
      作業用ディレクトリを持たない。
      管理用ディレクトリ(リポジトリ)のみを持つ。
      ベアリポジトリでは、現在のディレクトリが.gitディレクトリそのものになる。

  • --shared=<パーミッション>

    作成しようとしているリポジトリは共有リポジトリとして作成される。
    デフォルトではリポジトリは作成したユーザーのみpushできる。
    複数人で1つのプロジェクトをGitで運用する場合、--sharedオプションで権限を追加します。

    指定できるパーミッション : falsetrueumaskgroupallworldeverybody0xxx
    false / umask : umaskの値を利用する。--sharedオプションを使用しない場合も適用される。
    true / group  : グループに対して書き込み権限を追加する。
    all / world / everybody : グループに対して書き込み権限を追加して、その他のユーザに対して読み込み権限を追加する。
    0xxx : 4桁の数値でパーミッションを指定する。

  • -b <ブランチ名> または --initial-branch=<ブランチ名>
    初期化時に自動で作成されるブランチ名を指定する。
    デフォルトでは、masterブランチが自動的に作成されるが、それ以外のブランチ名にする場合はこのオプションを使用する。
    デフォルトのブランチ名は環境変数init.defaultBranchで設定されているため、これを変更することにより、デフォルトのブランチ名を設定することもできる。

  • --object-format=<ハッシュ関数名>オプション
    例. 使用できるハッシュ関数 : sha1(デフォルト)、sha256
    gitはプロジェクトの状態をオブジェクトで管理している。
    数種類のオブジェクトがあるが、オブジェクトは全てzlibで圧縮されハッシュ値が生成されている。
    --object-formatオプションでは、ハッシュ値のハッシュ関数を指定することができる。

  • --template=<テンプレートディレクトリ名>オプション
    テンプレートとなるディレクトリ(TEMPLATE DIRECTORY)を指定する。
    TEMPLATE DIRECTORYを事前に設定することにより、同じような状態を再現することができる。

  • --separate-git-dir=<Gitリポジトリにするディレクトリ>
    initコマンドの実行時では.gitディレクトリが自動的に作成されるが、--separate-git-dirオプションを指定することにより、.gitディレクトリの代わりに.gitテキストファイルを作成される。
    .gitテキストファイルには<Gitリポジトリにするディレクトリ>で指定されたディレクトリのパスが記載されている。
    .gitディレクトリに作成されていた一連のファイルは全てこの指定したディレクトリに置かれる。

    既に存在するGitリポジトリ内において、git init --separate-git-dirを実行すると、Gitリポジトリは<Gitリポジトリにするディレクトリ>に移動する。

    <Gitリポジトリにするディレクトリ>をGitリポジトリとして扱い、<通常のGitディレクトリ>をワーキングディレクトリとして扱うことができる。
    ワーキングディレクトリではGitコマンドが使用できるが、.gitディレクトリが存在しないため、ファイル検索をスムーズに行うことができる。

    また、.gitディレクトリを隠すことにより、誤ってファイルを書き換えてしまうことを防ぐこともできる。



ステージング

git addコマンドは、作業ツリーにあるファイルやディレクトリをステージする。

ファイルのステージング

# 各ファイルを1つずつステージする場合
git add README.txt


既にステージされているファイルやディレクトリにおいて、作業ツリーから全てステージする場合は、-uオプションを付加する。
これは、作業ツリーから全てステージするファイル名を指定せずに、現在、Gitの管理下にあるファイルが作業ツリーから全てステージすることができる。

git add -u
# または
git add -u .


ディレクトリのステージング

git addコマンドの引数にディレクトリを指定する場合、そのディレクトリ直下にある全てのファイルとディレクトリをステージに入れる。

ただし、Gitは空のディレクトリを管理しない。
空のディレクトリを管理する場合は、そのディレクトリに空のダミーファイル (.gitkeepという名前にすることが多い)、あるいは、.gitignoreファイルを入れてステージするとよい。

全てのステージング

プロジェクト内の全てのファイルとディレクトリをGitの管理下に置くことができる。
ただし、バージョン管理しないファイルおよびディレクトリ (自動的に生成されるファイルやログファイル等) も管理下に入ることに注意する。

git add .



過去のコミットに戻る

例えば、不具合等が発生した時、発生箇所を突き止めるため一時的に過去のコミットに戻りたい場合がある。
また、併せて、最新のコミットに戻す場合も記載する。

まず、操作するブランチを確認する。

git branch

# 出力例
* master
dev


次に、戻りたいコミット名を確認する。

git log

# 出力例
commit 13gsd8g9skegjaosdjgnaewiura7g (HEAD)
Author: name <name@google.com>
Date:   Tue Jul 13 13:00:00 2021 + 0900

commit ckawijsgs863462wijngoasgeni1a
Author: name <name@google.com>
Date:   Tue Jul 13 10:00:00 2021 + 0900


次に、戻りたいコミット名を指定してgit checkoutコマンドを実行する。
コミット名は、先頭から5文字目以降は省略可能である。

git checkout <コミット名>


過去のコミットに戻した状態で、現在のブランチを確認する。

過去のコミットに戻ると、操作しているブランチとは異なるブランチが一時的に作成される。
そのため、最新のコミットに戻す場合は、ブランチを変更すればよい。

git branch 

# 出力例
* (HEAD detached コミット名)
master
dev


最新のコミットに戻す。

git checkout <ブランチ名>