国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
git之三,git詳解之三
首頁 php教程 php手冊(cè) git之三,git詳解之三

git之三,git詳解之三

Jun 13, 2016 am 08:44 AM
diff git 命令 成功 我們 添加 詳解

git之三,git詳解之三

1、status命令與diff命令


  前面我們已經(jīng)成功地添加并提交了一個(gè)readme.txt文件,修改readme.txt如下:

echo "Git is a distributed version control system. " > readme.txt
echo "Git is free software." >> readme.txt

  運(yùn)行g(shù)it status命令看看結(jié)果:

$ git status
...
no changes added to commit (use "git add" and/or "git commit -a")

  git status命令可以讓我們時(shí)刻掌握倉庫當(dāng)前的狀態(tài),上面顯示,readme.txt被修改過了,但還沒有準(zhǔn)備提交的修改。

  git diff這個(gè)命令看看:

$ 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格式,可以從上面的命令輸出看到,我們?cè)诘谝恍刑砑恿艘粋€(gè)“distributed”單詞。

  readme.txt作了什么修改后,再把它提交到倉庫,提交修改和提交新文件是一樣的兩步,git add和git commit:

$ git add readme.txt
$ git commit -m "add distributed"

注意

  • 要隨時(shí)掌握工作區(qū)的狀態(tài),使用git status命令。
  • 如果git status告訴你有文件被修改過,用git diff可以查看修改內(nèi)容。

2、版本回退


  現(xiàn)在,再練習(xí)一次,修改readme.txt文件如下:

echo "Git is a distributed version control system." > readme.txt
echo "Git is free software distributed under the GPL." >> readme.txt

  我們?cè)俅翁峤灰淮蝦eadme.txt

$ git add readme.txt
$ git commit -m "append GPL"

  我們現(xiàn)在已經(jīng)提交多次文件,想看看有那些?版本控制系統(tǒng)肯定有某個(gè)命令可以告訴我們歷史記錄,在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命令顯示從最近到最遠(yuǎn)的提交日志,我們可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。commit 36281**2e1e0是commit id(版本號(hào))。如果嫌輸出信息太多,可以使用$ git log --pretty=oneline,此時(shí)你看到的一大串類似3628164...882e1e0的是commit id(版本號(hào))。

  每提交一個(gè)新版本,實(shí)際上Git就會(huì)把它們自動(dòng)串成一條時(shí)間線?,F(xiàn)在準(zhǔn)備把readme.txt回退到上一個(gè)版本,也就是“add distributed”的那個(gè)版本,怎么做呢?

  首先,Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中,用HEAD表示當(dāng)前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一樣),上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)然往上100個(gè)版本寫100個(gè)^比較容易數(shù)不過來,所以寫成HEAD~100。

  現(xiàn)在,我們要把當(dāng)前版本“append GPL”回退到上一個(gè)版本“add distributed”,就可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed

3、重新恢復(fù)到新版本


  接著上節(jié)版本回退,還可以繼續(xù)回退到上一個(gè)版本wrote a readme file,不過我們現(xiàn)在看看版本庫的狀態(tài)git log:

$ git log

  最新的那個(gè)版本append GPL已經(jīng)看不到了!好比你從21世紀(jì)坐時(shí)光穿梭機(jī)來到了19世紀(jì),想再回去已經(jīng)回不去了,腫么辦?

  只要右側(cè)環(huán)境還在,就可以找到那個(gè)append GPL的commit id是3628164...,于是就可以指定回到未來的某個(gè)版本:

$ git reset --hard 3628164
HEAD is now at 3628164 append GPL

  版本號(hào)沒必要寫全,前幾位就可以了,Git會(huì)自動(dòng)去找。當(dāng)然也不能只寫前一兩位,因?yàn)镚it可能會(huì)找到多個(gè)版本號(hào),就無法確定是哪一個(gè)了。

  可以查看readme.txt的內(nèi)容 $ cat readme.txt .

  Git的版本回退速度非???,因?yàn)镚it在內(nèi)部有個(gè)指向當(dāng)前版本的HEAD指針,當(dāng)你回退版本的時(shí)候,Git僅僅是把HEAD從指向append GPL改為指向add distributed。

4、git reflog命令


  現(xiàn)在,你回退到了某個(gè)版本,當(dāng)想恢復(fù)到新版本怎么辦?找不到新版本的commit id怎么辦?

  在Git中可以放心下。當(dāng)你用$ git reset --hard HEAD^回退到add distributed版本時(shí),再想恢復(fù)到append GPL,就必須找到append GPL的commit id。Git提供了一個(gè)命令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,這樣我們就可以重新找到了。

  注意,我們從這兩節(jié)中可以了解到:

  • HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令git reset --hard commit_id。
  • 穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。
  • 要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個(gè)版本。

5、基本概念


工作區(qū):就是你在電腦里能看到的目錄,learngit文件夾就是一個(gè)工作區(qū),比如我們環(huán)境中當(dāng)前的目錄。

版本庫:工作區(qū)有一個(gè)隱藏目錄.git 這個(gè)不算工作區(qū),而是Git的版本庫。

暫存區(qū):英文叫stage,或index。一般存放在git 目錄下的index文件(.git/index)中,所以我們把暫存區(qū)時(shí)也叫作索引(index).

Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。

我們把文件往Git版本庫里添加的時(shí)候,是分兩步執(zhí)行的:

  • 第一步是用git add把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū);
  • 第二步是用git commit提交更改,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。

因?yàn)槲覀儎?chuàng)建Git版本庫時(shí),Git自動(dòng)為我們創(chuàng)建了唯一一個(gè)master分支,所以現(xiàn)在git commit就是往master分支上提交更改。

你可以簡單理解為,需要提交的文件修改通通放到暫存區(qū),然后一次性提交暫存區(qū)的所有修改。

實(shí)踐理解暫存區(qū)


現(xiàn)在我們對(duì)readme.txt做個(gè)修改,比如追加一行內(nèi)容:

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

然后,在工作區(qū)新增一個(gè)LICENSE文本文件

echo "LICENSE is a new file." > LICENSE

用git status查看一下狀態(tài),Git顯示結(jié)果,readme.txt被修改了,而LICENSE還從來沒有被添加過,所以它的狀態(tài)是Untracked。

現(xiàn)在,使用兩次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下,通過圖可以理解為:

所以,git add命令實(shí)際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后,執(zhí)行g(shù)it commit就可以一次性把暫存區(qū)的所有修改提交到分支。

$ git commit -m "understand how stage works"

一旦提交后,如果你又沒有對(duì)工作區(qū)做任何修改,用git status查看下,沒有任何內(nèi)容,現(xiàn)在版本庫變成了這樣,暫存區(qū)就沒有任何內(nèi)容了:

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

pycharm第一次打開教程 首次使用必看設(shè)置指南 pycharm第一次打開教程 首次使用必看設(shè)置指南 May 23, 2025 pm 10:48 PM

第一次打開PyCharm時(shí),應(yīng)先創(chuàng)建新項(xiàng)目並選擇虛擬環(huán)境,然後熟悉編輯器區(qū)、工具欄、導(dǎo)航欄和狀態(tài)欄。設(shè)置Darcula主題和Consolas字體,利用智能提示和調(diào)試工具提高效率,並學(xué)習(xí)Git集成。

PHP中如何驗(yàn)證社保號(hào)字符串? PHP中如何驗(yàn)證社保號(hào)字符串? May 23, 2025 pm 08:21 PM

社保號(hào)驗(yàn)證在PHP中通過正則表達(dá)式和簡單邏輯實(shí)現(xiàn)。 1)使用正則表達(dá)式清理輸入,去除非數(shù)字字符。 2)檢查字符串長度是否為18位。 3)計(jì)算並驗(yàn)證校驗(yàn)位,確保與輸入的最後一位匹配。

git如何使用圖形化工具對(duì)比版本差異 git如何使用圖形化工具對(duì)比版本差異 May 22, 2025 pm 10:48 PM

有效使用圖形化工具對(duì)比Git版本差異的步驟包括:1.打開GitKraken並加載倉庫,2.選擇要對(duì)比的版本,3.查看差異,4.深入分析。圖形化工具如GitKraken提供了直觀的界面和豐富的功能,幫助開發(fā)者更深入地理解代碼的演變過程。

gitstatus查看倉庫狀態(tài)的深入解析 gitstatus查看倉庫狀態(tài)的深入解析 May 22, 2025 pm 10:54 PM

gitstatus命令用於顯示工作目錄和暫存區(qū)的狀態(tài)。 1.它會(huì)檢查當(dāng)前分支,2.比較工作目錄和暫存區(qū),3.比較暫存區(qū)和最後一次提交,4.檢查未跟蹤的文件,幫助開發(fā)者了解倉庫狀態(tài)並確保提交前無遺漏。

怎樣開發(fā)一個(gè)完整的PythonWeb應(yīng)用程序? 怎樣開發(fā)一個(gè)完整的PythonWeb應(yīng)用程序? May 23, 2025 pm 10:39 PM

要開發(fā)一個(gè)完整的PythonWeb應(yīng)用程序,應(yīng)遵循以下步驟:1.選擇合適的框架,如Django或Flask。 2.集成數(shù)據(jù)庫,使用ORM如SQLAlchemy。 3.設(shè)計(jì)前端,使用Vue或React。 4.進(jìn)行測試,使用pytest或unittest。 5.部署應(yīng)用,使用Docker和平臺(tái)如Heroku或AWS。通過這些步驟,可以構(gòu)建出功能強(qiáng)大且高效的Web應(yīng)用。

PHP中如何驗(yàn)證IMEISV字符串? PHP中如何驗(yàn)證IMEISV字符串? May 28, 2025 pm 03:39 PM

在PHP中驗(yàn)證IMEISV字符串需要以下步驟:1.使用正則表達(dá)式驗(yàn)證16位數(shù)字格式。 2.通過Luhn算法校驗(yàn)IMEI部分的有效性。 3.檢查軟件版本號(hào)的有效性。完整的驗(yàn)證過程包括格式驗(yàn)證、Luhn校驗(yàn)和軟件版本號(hào)檢查,以確保IMEISV的有效性。

git如何在遠(yuǎn)程倉庫上創(chuàng)建和刪除標(biāo)籤 git如何在遠(yuǎn)程倉庫上創(chuàng)建和刪除標(biāo)籤 May 22, 2025 pm 10:33 PM

在遠(yuǎn)程倉庫上創(chuàng)建標(biāo)籤使用gitpushorigin,刪除標(biāo)籤使用gitpushorigin--delete。具體步驟包括:1.創(chuàng)建本地標(biāo)籤:gittagv1.0。2.推送到遠(yuǎn)程:gitpushoriginv1.0。3.刪除本地標(biāo)籤:gittag-dv1.0。4.刪除遠(yuǎn)程標(biāo)籤:gitpushorigin--deletev1.0。

VSCode 在處理多語言項(xiàng)目時(shí)的編碼設(shè)置與亂碼問題解決 VSCode 在處理多語言項(xiàng)目時(shí)的編碼設(shè)置與亂碼問題解決 May 22, 2025 pm 10:57 PM

VSCode解決多語言項(xiàng)目編碼和亂碼問題的方法包括:1.確保文件以正確編碼保存,使用“重新檢測編碼”功能;2.設(shè)置文件編碼為UTF-8並自動(dòng)檢測編碼;3.控制是否添加BOM;4.使用“EncodingConverter”插件轉(zhuǎn)換編碼;5.利用多根工作區(qū)功能為不同子項(xiàng)目設(shè)置編碼;6.優(yōu)化性能,忽略不必要的文件監(jiān)控。通過這些步驟,可以有效處理多語言項(xiàng)目的編碼問題。

See all articles