A3.3 快照基礎(chǔ)

2018-02-24 15:23 更新

快照基礎(chǔ)

對(duì)于基本的暫存內(nèi)容及提交到你的歷史記錄中的工作流,只有少數(shù)基本的命令。

git add

git add?命令將內(nèi)容從工作目錄添加到暫存區(qū)(或稱為索引(index)區(qū)),以備下次提交。 當(dāng)git commit?命令執(zhí)行時(shí),默認(rèn)情況下它只會(huì)檢查暫存區(qū)域,因此?git add?是用來確定下一次提交時(shí)快照的樣子的。

這個(gè)命令對(duì)于 Git 來說特別的重要,所以在本書中被無數(shù)次的提及和使用。 我們將快速的過一遍一些可以看到的獨(dú)特的用法。

我們?cè)?跟蹤新文件?一節(jié)中介紹并詳細(xì)解釋了?git add?命令。

然后,我們?cè)?遇到?jīng)_突時(shí)的分支合并?一節(jié)中提到了如何使用它來解決合并沖突。

接下來,我們?cè)?交互式暫存?一章中使用它來交互式的暫存一個(gè)已修改文件的特定部分。

最后,在?樹對(duì)象?一節(jié)中我們?cè)谝粋€(gè)低層次中模擬了它的用法,以便你可以了解在這背后發(fā)生了什么。

git status

git status?命令將為你展示工作區(qū)及暫存區(qū)域中不同狀態(tài)的文件。 這其中包含了已修改但未暫存,或已經(jīng)暫存但沒有提交的文件。 一般在它顯示形式中,會(huì)給你展示一些關(guān)于如何在這些暫存區(qū)域之間移動(dòng)文件的提示。

首先,我們?cè)?檢查當(dāng)前文件狀態(tài)?一節(jié)中介紹了?status?的基本及簡單的形式。 雖然我們?cè)谌珪卸加杏玫剿?,但是絕大部分的你能用?git status?做的事情都在這一章講到了。

git diff

當(dāng)需要查看任意兩棵樹的差異時(shí)你可以使用?git diff?命令。 此命令可以查看你工作環(huán)境與你的暫存區(qū)的差異(git diff?默認(rèn)的做法),你暫存區(qū)域與你最后提交之間的差異(git diff --staged),或者比較兩個(gè)提交記錄的差異(git diff master branchB

首先,我們?cè)?查看已暫存和未暫存的修改?一章中研究了?git diff?的基本用法,在此節(jié)中我們展示了如何查看哪些變化已經(jīng)暫存了,哪些沒有。

在?提交準(zhǔn)則?一節(jié)中,我們?cè)谔峤磺笆褂?--check?選項(xiàng)來檢查可能存在的空白字符問題。

在?確定引入了哪些東西?一節(jié)中,了解了使用?git diff A...B?語法來更有效地比較不同分支之間的差異。

在?高級(jí)合并?一節(jié)中我們使用?-b?選項(xiàng)來過濾掉空白字符的差異,及通過?--theirs--ours和?--base?選項(xiàng)來比較不同暫存區(qū)沖突文件的差異。

最后,在?開始使用子模塊?一節(jié)中,我們使用此命令合?--submodule?選項(xiàng)來有效地比較子模塊的變化。

git difftool

當(dāng)你不想使用內(nèi)置的?git diff?命令時(shí)。git difftool?可以用來簡單地啟動(dòng)一個(gè)外部工具來為你展示兩棵樹之間的差異。

我們只在?查看已暫存和未暫存的修改?一節(jié)中簡單的提到了此命令。

git commit

git commit?命令將所有通過?git add?暫存的文件內(nèi)容在數(shù)據(jù)庫中創(chuàng)建一個(gè)持久的快照,然后將當(dāng)前分支上的分支指針移到其之上。

首先,我們?cè)?提交更新?一節(jié)中涉及了此命令的基本用法。 我們演示了如何在日常的工作流程中通過使用?-a?標(biāo)志來跳過?git add?這一步,及如何使用?-m?標(biāo)志通過命令行而不啟動(dòng)一個(gè)編輯器來傳遞提交信息。

在?撤消操作?一節(jié)中我們介紹了使用?--amend?選項(xiàng)來重做最后的提交。

在?分支簡介,我們探討了?git commit?的更多細(xì)節(jié),及工作原理。

在?簽署提交?一節(jié)中我們探討了如何使用?-S?標(biāo)志來為提交簽名加密。

最后,在?提交對(duì)象?一節(jié)中,我們了解了?git commit?在背后做了什么,及它是如何實(shí)現(xiàn)的。

git reset

git reset?命令主要用來根據(jù)你傳遞給動(dòng)作的參數(shù)來執(zhí)行撤銷操作。 它可以移動(dòng)?HEAD?指針并且可選的改變?index?或者暫存區(qū),如果你使用?--hard?參數(shù)的話你甚至可以改變工作區(qū)。 如果錯(cuò)誤地為這個(gè)命令附加后面的參數(shù),你可能會(huì)丟失你的工作,所以在使用前你要確定你已經(jīng)完全理解了它。

首先,我們?cè)?取消暫存的文件?一節(jié)中介紹了?git reset?簡單高效的用法,用來對(duì)執(zhí)行過?git add?命令的文件取消暫存。

在?重置揭密?一節(jié)中我們?cè)敿?xì)介紹了此命令,幾乎整節(jié)都在解釋此命令。

在?中斷一次合并?一節(jié)中,我們使用?git reset --hard?來取消一個(gè)合并,同時(shí)我們也使用了git merge --abort?命令,它是?git reset?的一個(gè)簡單的封裝。

git rm

git rm?是 Git 用來從工作區(qū),或者暫存區(qū)移除文件的命令。 在為下一次提交暫存一個(gè)移除操作上,它與?git add?有一點(diǎn)類似。

我們?cè)?移除文件?一節(jié)中提到了?git rm?的一些細(xì)節(jié),包括遞歸地移除文件,和使用?--cached選項(xiàng)來只移除暫存區(qū)域的文件但是保留工作區(qū)的文件。

在本書的?移除對(duì)象?一節(jié)中,介紹了?git rm?僅有的幾種不同用法,如在執(zhí)行?git filter-branch?中使用和解釋了?--ignore-unmatch?選項(xiàng)。 這對(duì)腳本來說很有用。

git mv

git mv?命令是一個(gè)便利命令,用于移到一個(gè)文件并且在新文件上執(zhí)行git add命令及在老文件上執(zhí)行git rm命令。

我們只是在?移動(dòng)文件?一節(jié)中簡單地提到了此命令。

git clean

git clean?是一個(gè)用來從工作區(qū)中移除不想要的文件的命令。 可以是編譯的臨時(shí)文件或者合并沖突的文件。

在?清理工作目錄?一節(jié)中我們介紹了你可能會(huì)使用?clean?命令的大量選項(xiàng)及場(chǎng)景。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)