목차
git之三,git详解之三
백엔드 개발 PHP 튜토리얼 git之三,git详解之三_PHP教程

git之三,git详解之三_PHP教程

Jul 12, 2016 am 08:56 AM
diff git 그리고 지불하다 주문하다 성공 우리를 다음에 추가 상해

git之三,git详解之三

1、status命令与diff命令


  前面我们已经成功地添加并提交了一个readme.txt文件,修改readme.txt如下:

echo "Git is a distributed version control system. " > readme.txt
echo "Git is free software." >> readme.txt
로그인 후 복사

  运行git status命令看看结果:

$ git status
...
no changes added to commit (use "git add" and/or "git commit -a")
로그인 후 복사

  git status命令可以让我们时刻掌握仓库当前的状态,上面显示,readme.txt被修改过了,但还没有准备提交的修改。

  git diff这个命令看看:

$ git diff readme.txt
...
-Git is version control system.
+Git is a distributed version control system.
Git is free software
로그인 후 복사

  git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。

  readme.txt作了什么修改后,再把它提交到仓库,提交修改和提交新文件是一样的两步,git add和git commit:

$ git add readme.txt
$ git commit -m "add distributed"
로그인 후 복사

注意

  • 要随时掌握工作区的状态,使用git status命令。
  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

2、版本回退


  现在,再练习一次,修改readme.txt文件如下:

echo "Git is a distributed version control system." > readme.txt
echo "Git is free software distributed under the GPL." >> readme.txt
로그인 후 복사

  我们再次提交一次readme.txt

$ git add readme.txt
$ git commit -m "append GPL"
로그인 후 복사

  我们现在已经提交多次文件,想看看有那些?版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:

$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Date: Tue Aug 25 15:11:49 2015 +0000
append GPL
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Date: Tue Aug 25 14:53:12 2015 +0000
add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Date: Mon Aug 24 17:51:55 2015 +0000
wrote a readme file
로그인 후 복사

  git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。commit 36281**2e1e0是commit id(版本号)。如果嫌输出信息太多,可以使用$ git log --pretty=oneline,此时你看到的一大串类似3628164...882e1e0的是commit id(版本号)。

  每提交一个新版本,实际上Git就会把它们自动串成一条时间线。现在准备把readme.txt回退到上一个版本,也就是“add distributed”的那个版本,怎么做呢?

  首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

  现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
로그인 후 복사

3、重新恢复到新版本


  接着上节版本回退,还可以继续回退到上一个版本wrote a readme file,不过我们现在看看版本库的状态git log:

$ git log
로그인 후 복사

  最新的那个版本append GPL已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?

  只要右侧环境还在,就可以找到那个append GPL的commit id是3628164...,于是就可以指定回到未来的某个版本:

$ git reset --hard 3628164
HEAD is now at 3628164 append GPL
로그인 후 복사

  版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

  可以查看readme.txt的内容 $ cat readme.txt .

  Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL改为指向add distributed。

4、git reflog命令


  现在,你回退到了某个版本,当想恢复到新版本怎么办?找不到新版本的commit id怎么办?

  在Git中可以放心下。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
로그인 후 복사

  这样可以看到,第二行显示append GPL的commit id是3628164,这样我们就可以重新找到了。

  注意,我们从这两节中可以了解到:

  • 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DeepSeek을 설치하는 방법 DeepSeek을 설치하는 방법 Feb 19, 2025 pm 05:48 PM

Docker 컨테이너를 사용하여 사전 컴파일 된 패키지 (Windows 사용자의 경우)를 사용하여 소스 (숙련 된 개발자)를 컴파일하는 것을 포함하여 DeepSeek를 설치하는 방법에는 여러 가지가 있습니다. 공식 문서는 신중하게 문서를 작성하고 불필요한 문제를 피하기 위해 완전히 준비합니다.

깊은 사용을위한 FAQ 요약 깊은 사용을위한 FAQ 요약 Feb 19, 2025 pm 03:45 PM

Deepseekai 도구 가이드 및 FAQ Deepseek은 강력한 AI 지능형 도구입니다. FAQ : 다른 액세스 방법의 차이 : 웹 버전, 앱 버전 및 API 통화간에 기능에는 차이가 없으며 앱은 웹 버전의 래퍼 일뿐입니다. 로컬 배치는 증류 모델을 사용하는데,이 모델은 DeepSeek-R1의 정식 버전보다 약간 열등하지만 32 비트 모델은 이론적으로 90% 정식 버전 기능을 갖습니다. 선술집이란 무엇입니까? Sillytavern은 API 또는 Ollama를 통해 AI 모델을 호출 해야하는 프론트 엔드 인터페이스입니다. 중단 한도는 무엇입니까?

AI 도구는 무엇입니까? AI 도구는 무엇입니까? Nov 29, 2024 am 11:11 AM

AI 도구에는 Doubao, ChatGPT, Gemini, BlenderBot 등이 포함됩니다.

2025 년에 4 개의 주요 통화 서클 트레이딩 플랫폼의 요약에서 상위 10 개 교환 플랫폼을 다운로드하십시오. 2025 년에 4 개의 주요 통화 서클 트레이딩 플랫폼의 요약에서 상위 10 개 교환 플랫폼을 다운로드하십시오. Feb 20, 2025 pm 06:18 PM

최고의 통화 거래 플랫폼 : BINANCE : 많은 거래 쌍, 낮은 수수료 및 고급 기능을 갖춘 세계 최대 규모. OKX : 파생 상품 거래 플랫폼은 우수하며 낮은 수수료와 친근한 인터페이스로 우수합니다. Gate.io : 많은 토큰 선택, 고급 거래 옵션 및 저수 수수료가 많이 있습니다. BITGET : 한 번의 클릭 후속 거래 및 정량적 전략 혁신.

참깨 오픈 도어 로그인 등록 입구 게이트 .io 교환 등록 공식 웹 사이트 입구 참깨 오픈 도어 로그인 등록 입구 게이트 .io 교환 등록 공식 웹 사이트 입구 Mar 04, 2025 pm 04:51 PM

Gate.io (Sesame Open Door)는 세계 최고의 암호 화폐 거래 플랫폼입니다. 자습서는 계정 등록 및 로그인, KYC 인증, 화폐 및 디지털 통화 재충전, 거래 쌍 선택, 한도/시장 거래 주문 및 주문 및 거래 기록보기와 같은 단계를 다루고 Cryptocurrency 거래를 위해 GATE.IO 플랫폼을 신속하게 시작할 수 있도록 도와줍니다. 초보자이든 베테랑이든,이 튜토리얼에서 혜택을 받고 Gate.io 거래 기술을 쉽게 마스터 할 수 있습니다.

중국의 상위 10 개 가상 통화 거래 플랫폼이 권장됩니다. 중국의 상위 10 개 가상 통화 거래 플랫폼이 권장됩니다. Feb 27, 2025 pm 05:15 PM

Binance, Okx 및 Gate.io는 상위 3 위에 올랐습니다. 이 플랫폼은 거래 수수료, 보안, 거래 유동성, 제품 및 서비스 및 고객 지원에서 자체 이점이 있습니다.

상위 10 개 디지털 환전 거래소 2025 주요 통화 거래 플랫폼의 권장 목록 상위 10 개 디지털 환전 거래소 2025 주요 통화 거래 플랫폼의 권장 목록 Feb 27, 2025 pm 06:00 PM

2025 년에 가장 권장되는 10 대 디지털 환전 거래소 : BINANCE : 세계 최대의 교환으로 다양한 거래 쌍과 파생 상품을 제공합니다. OKX : 다양한 혁신적인 제품과 함께 계약 거래 및 파생 상품에 중점을 둡니다. Gate.io : 광범위한 거래 쌍 및 투자 옵션을 지원하는 기존의 교환. BITGET : 영구 계약 및 옵션 거래 플랫폼, 높은 레버리지 및 낮은 수수료. Huobi Global : 다양한 거래 품종과 금융 상품을 갖춘 중국에서 잘 확립 된 교환. BYBIT : 암호화 파생 상품 거래, 높은 레버리지 및 낮은 대기 시간 전문가. 쿠 코인 등.

Delphi Digital : 새로운 Elizaos V2 아키텍처를 구문 분석하여 새로운 AI 경제를 바꾸는 방법은 무엇입니까? Delphi Digital : 새로운 Elizaos V2 아키텍처를 구문 분석하여 새로운 AI 경제를 바꾸는 방법은 무엇입니까? Mar 04, 2025 pm 07:00 PM

ELIZAOSV2 : AI의 새로운 경제를 이끌고 AI는 보조 도구에서 독립적 인 엔티티로 진화하여 AI가 자금을 관리하고 Web3 비즈니스를 운영 할 수 있습니다. 이 기사는 Elizaosv2의 주요 혁신과 그것이 AI 중심의 미래 경제를 형성하는 방법으로 뛰어들 것입니다. AI Automation : 독립적으로 Elizaos를 운영하는 것은 원래 Web3 자동화에 중점을 둔 AI 프레임 워크였습니다. V1 버전을 사용하면 AI가 스마트 계약 및 블록 체인 데이터와 상호 작용할 수있는 반면 V2 버전은 상당한 성능 향상을 달성합니다. AI는 간단한 지침을 실행하는 대신 워크 플로를 독립적으로 관리하고 비즈니스를 운영하며 재무 전략을 개발할 수 있습니다. 아키텍처 업그레이드 : 향상 a

See all articles