ホームページ  >  記事  >  バックエンド開発  >  gitその3、git詳細解説その3_PHPチュートリアル

gitその3、git詳細解説その3_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:56:40850ブラウズ

gitパート3、git詳細説明パート3

1. statusコマンドとdiffコマンド


以前に readme.txt ファイルを正常に追加して送信しました。readme.txt を次のように変更します。

リーリー

git status コマンドを実行して結果を確認します。

リーリー

git status コマンドを使用すると、ウェアハウスの現在のステータスを追跡できます。上記は、readme.txt が変更されたことを示していますが、送信する準備ができている変更はありません。

git diff コマンド:

リーリー

名前のとおり、git diff は差分を表示するためのもので、上記のコマンド出力からわかるように、最初の行に「distributed」という単語を追加しました。

readme.txt に変更を加えた後、それをウェアハウスに送信します。変更の送信と新しいファイルの送信は、同じ 2 つのステップ、git add と git commit です。 リーリー

注意

  • ワークスペースのステータスを追跡するには、 git status コマンドを使用します。
  • git status でファイルが変更されたことが示された場合は、git diff を使用して変更内容を表示できます。

2. バージョンのロールバック


ここで、もう一度練習して、readme.txt ファイルを次のように変更してください:

リーリー

readme.txtを再度送信します

リーリー

これまで何度も書類を提出しましたが、どの書類があるのか​​知りたいですか?バージョン管理システムには、履歴を表示できるコマンドが必要です。Git では、git log コマンドを使用して表示します。 リーリー

git log コマンドは、最新のものから最も遠いものまで 3 つのサブミッションを表示します。最新のものは add distribution、そして最も古いものは write a readme file です。 Commit 36​​281**2e1e0 はコミット ID (バージョン番号) です。出力情報が多すぎると思われる場合は、

$ git log --pretty=oneline

を使用すると、3628164...882e1e0 のような一連のコミット ID (バージョン番号) が表示されます。 。 新しいバージョンが送信されるたびに、Git は実際にそれらをタイムラインに自動的につなぎ合わせます。次に、readme.txt を以前のバージョン (「配布追加」のバージョン) にロールバックします。

まず、Git は現在のバージョンがどのバージョンであるかを知る必要があります。Git では、最新のコミット 3628164...882e1e0 (私のコミット ID はあなたのものとは明らかに異なることに注意してください) を表すために HEAD が使用されます。以前のバージョンは HEAD^ です。 もちろん、100^ と書いた方が前のバージョンを 100 個数えやすいので、

HEAD~100

と書きます。 ここで、現在のバージョン「append GPL」を以前のバージョン「add distribution」にロールバックしたい場合は、git restart コマンドを使用できます:

リーリー

3、新しいバージョンに復元 前のセクションのバージョンのロールバックに続いて、readme ファイルを作成して以前のバージョンにロールバックを続けることができますが、ここでリポジトリの git ログのステータスを見てみましょう:


リーリー

最新バージョンの Append GPL は表示されなくなりました。 21 世紀から 19 世紀へタイムシャトルに乗ったようなもので、戻りたくても戻れない場合はどうすればよいでしょうか?

右側の環境がまだ存在している限り、追加 GPL のコミット ID が 3628164... であることがわかります。したがって、将来に遡ってバージョンを指定できます:

リーリー

バージョン番号全体を書き留める必要はなく、最初の数桁だけを書き留めれば、Git が自動的に見つけてくれます。もちろん、最初の 1 つか 2 つだけを書くことはできません。Git は複数のバージョン番号を見つけて、それがどれであるかを判断できない可能性があるからです。

readme.txtの内容が閲覧できます $ cat readme.txt

.

Git のバージョンのロールバックは、Git が現在のバージョンを指す内部 HEAD ポインターを持っているため、非常に高速です。バージョンをロールバックすると、Git は HEAD を、GPL の追加を指すものから、配布を追加するものに変更するだけです。

4. git reflog コマンド

これで、特定のバージョンにロールバックしましたが、新しいバージョンに復元したい場合はどうすればよいでしょうか?新しいバージョンのコミット ID が見つからない場合はどうすればよいですか?


Git

なら安心です。

$ git replace --hard HEAD^ を使用して追加分散バージョンにロールバックし、その後、追加 GPL に復元する場合は、追加 GPL のコミット ID を見つける必要があります。 Git は、実行したすべてのコマンドを記録するコマンド git reflog を提供します。 リーリー 2行目を見ると、append GPLのコミットIDが3628164であることがわかり、再度見つけることができます。

以下の 2 つのセクションから学ぶことができることに注意してください:

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

 

5、基本概念


工作区:就是你在电脑里能看到的目录,learngit文件夹就是一个工作区,比如我们环境中当前的目录。

版本库:工作区有一个隐藏目录.git 这个不算工作区,而是Git的版本库。

暂存区:英文叫stage,或index。一般存放在git 目录下的index文件(.git/index)中,所以我们把暂存区时也叫作索引(index).

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

我们把文件往Git版本库里添加的时候,是分两步执行的:

  • 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  • 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以现在git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后一次性提交暂存区的所有修改。

 

实践理解暂存区


现在我们对readme.txt做个修改,比如追加一行内容:

echo "Git has a mutable index called stage." >> readme.txt

然后,在工作区新增一个LICENSE文本文件

echo "LICENSE is a new file." > LICENSE

用git status查看一下状态,Git显示结果,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。

现在,使用两次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下,通过图可以理解为:

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

$ git commit -m "understand how stage works"

一旦提交后,如果你又没有对工作区做任何修改,用git status查看下,没有任何内容,现在版本库变成了这样,暂存区就没有任何内容了:

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1111691.htmlTechArticlegit之三,git详解之三 1、status命令与diff命令 前面我们已经成功地添加并提交了一个readme.txt文件,修改readme.txt如下: echo "Git is a distributed...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。