Gitの基本操作
Git の仕事は、プロジェクトのスナップショットを作成して保存し、後続のスナップショットと比較することです。この章では、プロジェクトのスナップショットを作成および送信するためのコマンドを紹介します。
プロジェクト コマンドを取得および作成する
git init
git init を使用して、ディレクトリに新しい Git リポジトリを作成します。 これはいつでも、どのディレクトリでも行うことができ、完全にローカライズされています。
ディレクトリで git init を実行して Git リポジトリを作成します。たとえば、php プロジェクトを作成するとします。
$ mkdir php $ cd php/ $ git init Initialized empty Git repository in /Users/tianqixin/www/php/.git/ # 在 /www/php/.git/ 目录初始化空 Git 仓库完毕。
これで、プロジェクト内に .git サブディレクトリが生成されたことがわかります。 これは Git リポジトリで、プロジェクトに関するすべてのスナップショット データが保存されます。
ls -a . .. .git
git clone
git clone を使用して Git リポジトリをローカルにコピーし、プロジェクトを表示したり変更を加えたりできるようにします。
他のユーザーとプロジェクトで共同作業する必要がある場合、またはコードを確認するためにプロジェクトのコピーを作成したい場合は、そのプロジェクトのクローンを作成できます。 コピーしたいアイテムに対してコマンド
git clone [url]
[url] を実行するだけです。
たとえば、Github でプロジェクトのクローンを作成した場合:
$ git clone git@github.com:schacon/simplegit.git Cloning into 'simplegit'... remote: Counting objects: 13, done. remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13 Receiving objects: 100% (13/13), done. Resolving deltas: 100% (2/2), done. Checking connectivity... done.
クローン作成が完了すると、現在のディレクトリに simplegit ディレクトリが生成されます:
$ cd simplegit/ $ls README Rakefile lib上記の操作により、プロジェクトのすべてのレコードがコピーされます。
$ ls -a . .. .git README Rakefile lib $ cd .git $ ls HEAD description info packed-refs branches hooks logs refs config index objects
デフォルトでは、Git は指定した URL で示されるプロジェクトの名前でローカル プロジェクト ディレクトリを作成します。 これは通常、URL の最後の / の後のプロジェクト名です。別の名前が必要な場合は、コマンドの後に希望の名前を追加できます。
基本スナップショット
Git の仕事は、プロジェクトのスナップショットを作成して保存し、後続のスナップショットと比較することです。この章では、プロジェクトのスナップショットを作成および送信するためのコマンドを紹介します。
git add
git add コマンドは、ファイルをキャッシュに追加できます。たとえば、次の 2 つのファイルを追加します。
$ touch README $ touch hello.php $ ls README hello.php $ git status -s ?? README ?? hello.php $
git status コマンドは、プロジェクトの現在のステータスを表示するために使用されます。
次に git add コマンドを実行してファイルを追加します。
$ git add README hello.php
ここで git status を再度実行すると、これら 2 つのファイルが追加されたことがわかります。
$ git status -s A README A hello.php $
新しいプロジェクトでは、すべてのファイルを追加するのが一般的です。 git add . コマンドを使用して、現在のプロジェクトのすべてのファイルを追加できます。
次に、README ファイルを変更します:
$ vim README <pre> <p>在 README 添加以下内容:<b># php Git 测试</b>,然后保存退出。</p> <p>再执行一下 git status:</p> $ git status -s AM README A hello.php
「AM」ステータスは、このファイルがキャッシュに追加された後に変更されたことを意味します。変更を加えた後、 git add コマンドを実行してキャッシュに追加します。
$ git add . $ git status -s A README A hello.php
送信するスナップショットに変更を含めたい場合は、 git add を実行する必要があります。
git status
git status を使用して、最後のコミット以降に変更があったかどうかを確認します。
このコマンドをデモンストレーションするときに、簡単な結果出力を取得するために -s パラメーターを追加しました。このパラメータが追加されていない場合、詳細な出力は次のようになります:
$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README new file: hello.php
git diff
git diff を実行して、git status の実行結果の詳細情報を表示します。
git diff コマンドは、キャッシュに書き込まれた変更と、変更されたがまだキャッシュに書き込まれていない変更の違いを表示します。 git diff には 2 つの主なアプリケーション シナリオがあります。
まだキャッシュされていない変更: git diff
キャッシュされた変更を表示: git diff --cached
キャッシュされた変更とキャッシュされていない変更をすべて表示: git diff HEAD
を表示diff 全体の代わりに概要: git diff --stat
hello.php ファイルに次のように入力します:
<?php echo 'php中文网:www.php.cn'; ?>
$ git status -s A README AM hello.php $ git diff diff --git a/hello.php b/hello.php index e69de29..69b5711 100644 --- a/hello.php +++ b/hello.php @@ -0,0 +1,3 @@ +<?php +echo 'php中文网:www.php.cn'; +?>
git status 最後のコミット更新以降の変更を表示するか、変更をキャッシュに書き込み、git diff を表示します。具体的には行ごとに変更されます。
次に git diff --cached の実行効果を確認してみましょう:
$ git add hello.php $ git status -s A README A hello.php $ git diff --cached diff --git a/README b/README new file mode 100644 index 0000000..8f87495 --- /dev/null +++ b/README @@ -0,0 +1 @@ +# php Git 测试 diff --git a/hello.php b/hello.php new file mode 100644 index 0000000..69b5711 --- /dev/null +++ b/hello.php @@ -0,0 +1,3 @@ +<?php +echo 'php中文网:www.php.cn'; +?>
git commit
git add コマンドを使用して、必要なスナップショットの内容をキャッシュ領域に書き込みます。 git commit を実行して、キャッシュ領域の内容をウェアハウスに追加します。
Git は、送信するたびにあなたの名前とメール アドレスを記録するため、最初のステップはユーザー名とメール アドレスを構成することです。
$ git config --global user.name 'php' $ git config --global user.email test@php.cn
次に、キャッシュに書き込み、すべての変更を hello.php にコミットします。この最初の例では、-m オプションを使用してコマンド ラインにコミット コメントを提供します。
$ git add hello.php $ git status -s A README A hello.php $ $ git commit -m '第一次版本提交' [master (root-commit) d32cf1f] 第一次版本提交 2 files changed, 4 insertions(+) create mode 100644 README create mode 100644 hello.php
これでスナップが記録されました。 git status:
$ git status # On branch master nothing to commit (working directory clean)
を実行すると、上記の出力は、最新の送信以降何も変更が加えられていないことを示しており、「作業ディレクトリ clean: clean working directory」となっています。
-m オプションを設定しない場合、Git はコミット情報を入力するためにエディタを開こうとします。 Git が設定内で関連情報を見つけられない場合、デフォルトで vim が開きます。画面は次のようになります:
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello.php # ~ ~ ".git/COMMIT_EDITMSG" 9L, 257C
git add コミット キャッシュのプロセスが面倒だと感じる場合は、Git では -a オプションを使用してこのステップをスキップすることもできます。コマンドの形式は次のとおりです:
git commit -a
まず、hello.php ファイルを次の内容に変更します:
<?php echo 'php中文网:www.php.cn'; echo 'php中文网:www.php.cn'; ?>
次に、次のコマンドを実行します:
git commit -am '修改 hello.php 文件' [master 71ee2cb] 修改 hello.php 文件 1 file changed, 1 insertion(+)
git replace HEAD
git replace HEAD コマンドは、キャッシュされた内容をキャンセルするために使用されます。コンテンツ。
最初に README ファイルを変更します。内容は次のとおりです:
# php Git 测试 # php中文网
hello.php ファイルは次のように変更されます:
<?php echo 'php中文网:www.php.cn'; echo 'php中文网:www.php.cn'; echo 'php中文网:www.php.cn'; ?>
両方のファイルが変更され、キャッシュ領域に送信されたので、次に、操作は次のとおりです:
$ git status -s M README M hello.php $ git add . $ git status -s M README M hello.pp $ git reset HEAD -- hello.php Unstaged changes after reset: M hello.php $ git status -s M README M hello.php
ここで git commit を実行すると、README ファイルへの変更のみがコミットされ、hello.php への変更はコミットされません。
$ git commit -m '修改' [master f50cfda] 修改 1 file changed, 1 insertion(+) $ git status -s M hello.php
hello.php ファイルへの変更を確認して送信できます。
現時点では、次のコマンドを使用して hello.php への変更をコミットできます:
$ git commit -am '修改 hello.php 文件' [master 760f74d] 修改 hello.php 文件 1 file changed, 1 insertion(+) $ git status On branch master nothing to commit, working directory clean
つまり、 git replace HEAD を実行して、以前 git add によって追加されたが、次のコミットスナップショット。
git rm
git rm はキャッシュからエントリを削除します。これは、エントリのキャッシュを解除する git replace HEAD とは異なります。 「キャッシュ解除」とは、キャッシュ領域を変更前の状態に戻すことを意味します。デフォルトでは、git rm fileはキャッシュとハードドライブ(作業ディレクトリ)からファイルを削除します。
ファイルを作業ディレクトリに保持したい場合は、git rm --cachedを使用できます:
たとえば、hello.php ファイルを削除するとします:
$ git rm hello.php rm 'hello.php' $ ls README
ファイルをワークスペースから削除しないでください:
$ git rm --cached README rm 'README' $ ls README
git mv
git mv コマンドが行うことは、git rm --cached コマンドの操作、ディスク上のファイルの名前変更、そして git add を実行して新しいファイルをキャッシュに追加することだけです。
まず、先ほど削除した README を再度追加しましょう:
$ git add README
それから名前を変更します:
$ git mv README README.md $ ls README.md