ホームページ >php教程 >PHP开发 >Gitの基本操作を詳しく解説したチュートリアル

Gitの基本操作を詳しく解説したチュートリアル

黄舟
黄舟オリジナル
2016-12-16 15:00:111139ブラウズ

Git の基本操作

Git の仕事は、プロジェクトのスナップショットを作成して保存し、後続のスナップショットと比較することです。この章では、プロジェクトのスナップショットを作成および送信するためのコマンドを紹介します。

プロジェクト コマンドを取得および作成する

git init

git init を使用して、ディレクトリに新しい Git リポジトリを作成します。 これはいつでも、どのディレクトリでも行うことができ、完全にローカライズされています。
ディレクトリでgitを実行 init を使用すると、Git リポジトリを作成できます。たとえば、runoob プロジェクトを作成します。

$ mkdir runoob
$ cd runoob/
$ git init
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/
# 在 /www/runoob/.git/ 目录初始化空 Git 仓库完毕<BR>


これで、プロジェクト内に .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 &#39;simplegit&#39;...
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 class="brush:php;toolbar:false">
<p>在 README 添加以下内容:<b># Runoob 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 つの主なアプリケーション シナリオがあります。

1. キャッシュされていない変更: git diff

2. キャッシュされた変更を表示: git diff --cached

3. キャッシュされた変更とキャッシュされていない変更をすべて表示: git diff HEAD

4. diff 全体: git diff --stat

hello.php ファイルに次のように入力します:

<?php
echo &#39;菜鸟教程:www.runoob.com&#39;;
?>


$ 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 &#39;菜鸟教程:www.runoob.com&#39;;
+?>


git status には、最後のコミット更新以降の変更が表示されます。または、キャッシュされた変更を書き込みます。 git diff では、これらの変更内容が 1 行ずつ表示されます。

次に 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 @@
+# Runoob 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 &#39;菜鸟教程:www.runoob.com&#39;;
+?>


git commit

git add コマンドを使用して必要なスナップショットの内容をキャッシュに書き込み、git commit を実行します。キャッシュの内容がウェアハウスに追加されます。

Git は、送信するたびにあなたの名前とメール アドレスを記録するため、最初のステップはユーザー名とメール アドレスを構成することです。

$ git config --global user.name 'runoob'
$ git config --global user.email test@runoob.com

次に、キャッシュに書き込み、すべての変更を hello.php にコミットします。この最初の例では、-m オプションを使用してコマンド ラインにコミット コメントを提供します。

$ git add hello.php
$ git status -s
A README
A hello.php
$ $ git commit -m &#39;第一次版本提交&#39;
[master (root-commit) d32cf1f] 第一次版本提交
 2 files changed, 4 insertions(+)
 create mode 100644 README
 create mode 100644 hello.php


これでスナップショットが記録されました。 git status を実行すると:

$ git status
# ブランチマスター上
何もしない コミット (作業ディレクトリをクリーン)

以上输出说明我们在最近一次提交之后,没有做任何改动,是一个"working directory clean:干净的工作目录"。
如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim。屏幕会像这样:

# Please enter the commit message for your changes. Lines starting
# with &#39;#&#39; 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 &#39;菜鸟教程:www.runoob.com&#39;;
echo &#39;菜鸟教程:www.runoob.com&#39;;
?>

   再执行以下命令:


git commit -am &#39;修改 hello.php 文件&#39;
[master 71ee2cb] 修改 hello.php 文件
 1 file changed, 1 insertion(+)

   

git reset HEAD

git reset HEAD 命令用于取消已缓存的内容。

我们先改动文件 README 文件,内容如下:

# Runoob Git 测试
# 菜鸟教程

hello.php 文件修改为:

<?php
echo &#39;菜鸟教程:www.runoob.com&#39;;
echo &#39;菜鸟教程:www.runoob.com&#39;;
echo &#39;菜鸟教程:www.runoob.com&#39;;
?>

   现在两个文件修改后,都提交到了缓存区,我们现在要取消其中一个的缓存,操作如下


$ 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 &#39;修改&#39;
[master f50cfda] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hello.php

   

可以看到 hello.php 文件的修改并为提交。

这时我们可以使用以下命令将 hello.php 的修改提交:

$ git commit -am &#39;修改 hello.php 文件&#39;
[master 760f74d] 修改 hello.php 文件
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

   

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。

git rm

git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。

默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。

如果你要在工作目录中留着该文件,可以使用 git rm --cached:

如我们删除 hello.php文件:

$ git rm hello.php 
rm &#39;hello.php&#39;
$ ls
README

   

不从工作区中删除文件:

$ git rm --cached README 
rm &#39;README&#39;
$ ls
README

   

git mv

git mv 命令做得所有事情就是 git rm --cached 命令的操作, 重命名磁盘上的文件,然后再执行 git add 把新文件添加到缓存区。

我们先把刚移除的 README 添加回来:

$ git add README

然后对其重名:

$ git mv README README.md
$ ls
README.md

   

 以上就是Git 教程之基本操作详解的内容,更多相关文章请关注PHP中文网(www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。