A3.3 快照基礎

2018-02-24 15:23 更新

快照基礎

對于基本的暫存內容及提交到你的歷史記錄中的工作流,只有少數基本的命令。

git add

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

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

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

然后,我們在?遇到沖突時的分支合并?一節(jié)中提到了如何使用它來解決合并沖突。

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

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

git status

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

首先,我們在?檢查當前文件狀態(tài)?一節(jié)中介紹了?status?的基本及簡單的形式。 雖然我們在全書中都有用到它,但是絕大部分的你能用?git status?做的事情都在這一章講到了。

git diff

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

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

在?提交準則?一節(jié)中,我們在提交前使用?--check?選項來檢查可能存在的空白字符問題。

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

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

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

git difftool

當你不想使用內置的?git diff?命令時。git difftool?可以用來簡單地啟動一個外部工具來為你展示兩棵樹之間的差異。

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

git commit

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

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

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

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

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

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

git reset

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

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

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

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

git rm

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

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

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

git mv

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

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

git clean

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

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

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號