<samp id="0l9hf"></samp>
<td id="0l9hf"><option id="0l9hf"></option></td>

  • Git經典教程Cap13-Git命令

    ★ 附錄C. Git 命令

    在這一整本書里我們介紹了大量的 Git 命令,并盡可能的通過講故事的的方式來介紹它們,慢慢的介紹了越來越多的命令。但是這導致這些命令的示例用法都散落在在全書的各處。

    在此附錄中,我們會將本書中所提到過的命令都過一遍,并根據其用途大致的分類。我們會大致地討論每個命的作用,指出其在本書中哪些章節使用過。

    ★ 設置與配置

    有兩個命令使用得最多了,從第一次調用 Git 到每天的日常微調及參考,這個兩個命令就是:config 和 help 命令

    ? git config

    Git 做的很多工作都有一個默認方式。 對于絕大多數工作而言,你可以改變 Git 的默認方式,或者根據你的偏好來設置。 這些設置涵蓋了所有的事,從告訴 Git 你的名字,到指定偏好的終端顏色,以及你使用的編輯器。 此命令會從幾個特定的配置文件中讀取和寫入配置值,以便你可以從全局或者針對特定的倉庫來進行設置。

    本書的所有章節幾乎都有用到 git config 命令。

    在 初次運行 Git 前的配置 一節中,在開始使用 Git 之前,我們用它來指定我們的名字,郵箱地址和編輯器偏好。

    在 Git 別名 一節中我們展示了如何創建可以展開為長選項序列的短命令,以便你不用每次都輸入它們。

    在 變基 一節中,執行 git pull 命令時,使用此命令來將 –rebase 作為默認選項。

    在 憑證存儲 一節中,我們使用它來為你的 HTTP 密碼設置一個默認的存儲區域。

    在 關鍵字展開 一節中我們展示了如何設置在 Git 的內容添加和減少時使用的 smudge 過濾器 和 clean 過濾器。

    最后,基本上 配置 Git 整個章節都是針對此命令的。

    ? git help

    git help 命令用來顯示任何命令的 Git 自帶文檔。 但是我們僅會在此附錄中提到大部分最常用的命令,對于每一個命令的完整的可選項及標志列表,你可以隨時運行 git help <command> 命令來了解。

    我們在 獲取幫助 一節中介紹了 git help 命令,同時在 配置服務器 一節中給你展示了如何使用它來查找更多關于 git shell 的信息。

    ★ 獲取與創建項目

    有幾種方式獲取一個 Git 倉庫。 一種是從網絡上或者其他地方拷貝一個現有的倉庫,另一種就是在一個目錄中創建一個新的倉庫。

    ? git init

    你只需要簡單地運行 git init 就可以將一個目錄轉變成一個 Git 倉庫,這樣你就可以開始對它進行版本管理了。

    我們一開始在 獲取 Git 倉庫 一節中介紹了如何創建一個新的倉庫來開始工作。

    在 遠程分支 一節中我們簡單的討論了如何改變默認分支。

    在 把裸倉庫放到服務器上 一節中我們使用此命令來為一個服務器創建一個空的祼倉庫。

    最后,我們在 底層命令和高層命令 一節中介紹了此命令背后工作的原理的一些細節。

    ? git clone

    git clone 實際上是一個封裝了其他幾個命令的命令。 它創建了一個新目錄,切換到新的目錄,然后 git init 來初始化一個空的 Git 倉庫, 然后為你指定的 URL 添加一個(默認名稱為origin 的)遠程倉庫(git remote add),再針對遠程倉庫執行 git fetch,最后通過git checkout 將遠程倉庫的最新提交檢出到本地的工作目錄。

    git clone 命令在本書中多次用到,這里只列舉幾個有意思的地方。

    在 克隆現有的倉庫 一節中我們通過幾個示例詳細介紹了此命令。

    在 在服務器上搭建 Git 一節中,我們使用了 –bare 選項來創建一個沒有任何工作目錄的 Git 倉庫副本。

    在 打包 一節中我們使用它來解包一個打包好的 Git 倉庫。

    最后,在 克隆含有子模塊的項目 一節中我們學習了使用 –recursive 選項來讓克隆一個帶有子模塊的倉庫變得簡單

    雖然在本書的其他地方都有用到此命令,但是上面這些用法是特例,或者使用方式有點特別。

    ★ 快照基礎

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

    ? git add

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

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

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

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

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

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

    ? git status

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

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

    ? git diff

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

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

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

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

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

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

    ? git difftool

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

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

    ? git commit

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

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

    在 撤消操作 一節中我們介紹了使用 –amend 選項來重做最后的提交。

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

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

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

    ? git reset

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

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

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

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

    ? git rm

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

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

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

    ? git mv

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

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

    ? git clean

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

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

    ★ 分支與合并

    Git 有幾個實現大部的分支及合并功能的實用命令。

    ? git branch

    git branch 命令實際上是某種程度上的分支管理工具。 它可以列出你所有的分支、創建新分支、刪除分支及重命名分支。

    Git 分支 一節主要是為 branch 命令來設計的,它貫穿了整個章節。 首先,我們在 分支創建 一節中介紹了它,然后我們在 分支管理 一節中介紹了它的其它大部分特性(列舉及刪除)。

    在 跟蹤分支 一節中,我們使用 git branch -u 選項來設置一個跟蹤分支。

    最后,我們在 Git 引用 一節中講到了它在背后做一什么。

    ? git checkout

    git checkout 命令用來切換分支,或者檢出內容到工作目錄。

    我們是在 分支切換 一節中第一次認識了命令及 git branch 命令。

    在 跟蹤分支 一節中我們了解了如何使用 –track 標志來開始跟蹤分支。

    在 檢出沖突 一節中,我們用此命令和 –conflict=diff3 來重新介紹文件沖突。

    在 重置揭密 一節中,我們進一步了解了其細節及與 git reset 的關系。

    最后,我們在 HEAD 引用 一節中介紹了此命令的一些實現細節。

    ? git merge

    git merge 工具用來合并一個或者多個分支到你已經檢出的分支中。 然后它將當前分支指針移動到合并結果上。

    我們首先在 新建分支 一節中介紹了 git merge 命令。 雖然它在本書的各種地方都有用到,但是merge 命令只有幾個變種,一般只是 git merge <branch> 帶上一個你想合并進來的一個分支名稱。

    我們在 派生的公開項目 的后面介紹了如何做一個 squashed merge (指 Git 合并時將其當作一個新的提交而不是記錄你合并時的分支的歷史記錄。)

    在 高級合并 一節中,我們介紹了合并的過程及命令,包含 -Xignore-space-change 命令及 –abort 選項來中止一個有問題的提交。

    在 簽署提交 一節中我們學習了如何在合并前驗證簽名,如果你項目正在使用 GPG 簽名的話。

    最后,我們在 子樹合并 一節中學習了子樹合并。

    ? git mergetool

    當你在 Git 的合并中遇到問題時,可以使用 git mergetool 來啟動一個外部的合并幫助工具。

    我們在 遇到沖突時的分支合并 中快速介紹了一下它,然后在 外部的合并與比較工具 一節中介紹了如何實現你自己的外部合并工具的細節。

    ? git log

    git log 命令用來展示一個項目的可達歷史記錄,從最近的提交快照起。 默認情況下,它只顯示你當前所在分支的歷史記錄,但是可以顯示不同的甚至多個頭記錄或分支以供遍歷。 此命令通常也用來在提交記錄級別顯示兩個或多個分支之間的差異。

    在本書的每一章幾乎都有用到此命令來描述一個項目的歷史。

    在 查看提交歷史 一節中我們介紹了此命令,并深入做了研究。 研究了包括 -p 和 –stat 選項來了解每一個提交引入的變更,及使用–pretty 和 –online 選項來查看簡潔的歷史記錄。

    在 分支創建 一節中我們使用它加 –decorate 選項來簡單的可視化我們分支的指針所在,同時我們使用 –graph 選項來查看分叉的歷史記錄是怎么樣的。

    在 私有小型團隊 和 提交區間 章節中,我們介紹了在使用 git log 命令時用branchA..branchB 的語法來查看一個分支相對于另一個分支, 哪一些提交是唯一的。 在 提交區間 一節中我們作了更多介紹。

    在 > 和 三點 章節中,我們介紹了 branchA…branchB 格式和 –left-right 語法來查看哪些僅其中一個分支。 在 合并日志 一節中我們還研究了如何使用 –merge選項來幫助合并沖突調試,同樣也使用 –cc 選項來查看在你歷史記錄中的合并提交的沖突。

    在 引用日志 一節中我們使用此工具和 -g 選項 而不是遍歷分支來查看 Git 的 reflog。

    在 搜索 一節中我們研究了-S 及 -L 選項來進行來在代碼的歷史變更中進行相當優雅地搜索,如一個函數的歷史。

    在 簽署提交 一節中,我們了解了如何使用 –show-signature 來為每一個提交的 git log輸出中,添加一個判斷是否已經合法的簽名的一個驗證。

    ? git stash

    git stash 命令用來臨時地保存一些還沒有提交的工作,以便在分支上不需要提交未完成工作就可以清理工作目錄。

    儲藏與清理 一整個章節基本就是在講這個命令。

    ? git tag

    git tag 命令用來為代碼歷史記錄中的某一個點指定一個永久的書簽。 一般來說它用于發布相關事項。

    我們在 打標簽 一節中介紹了此命令及相關細節,并在 為發布打標簽 一節實踐了此命令。

    我也在 簽署工作 一節中介紹了如何使用 -s 標志創建一個 GPG 簽名的標簽,然后使用 -v 選項來驗證。

    ★ 項目分享與更新

    在 Git 中沒有多少訪問網絡的命令,幾乎所以的命令都是在操作本地的數據庫。 當你想要分享你的工作,或者從其他地方拉取變更時,這有幾個處理遠程倉庫的命令。

    ? git fetch

    git fetch 命令與一個遠程的倉庫交互,并且將遠程倉庫中有但是在當前倉庫的沒有的所有信息拉取下來然后存儲在你本地數據庫中。

    我們開始在 從遠程倉庫中抓取與拉取 一節中介紹了此命令,然后我們在 遠程分支 中看到了幾個使用示例。

    我們在 向一個項目貢獻 一節中有幾個示例中也都有使用此命令。

    在 合并請求引用 我們用它來抓取一個在默認空間之外指定的引用,在 打包 中,我們了解了怎么從一個包中獲取內容。

    在 引用規格 章節中我們設置了高度自定義的 refspec 以便 git fetch 可以做一些跟默認不同的事情。

    ? git pull

    git pull 命令基本上就是 git fetch 和 git merge 命令的組合體,Git 從你指定的遠程倉庫中抓取內容,然后馬上嘗試將其合并進你所在的分支中。

    我們在 從遠程倉庫中抓取與拉取 一節中快速介紹了此命令,然后在 查看遠程倉庫 一節中了解了如果你運行此命令的話,什么將會合并。

    我們也在 用變基解決變基 一節中了解了如何使用此命令來來處理變基的難題。

    在 檢出沖突 一節中我們展示了使用此命令如何通過一個 URL 來一次性的拉取變更。

    最后,我們在 簽署提交 一節中我們快速的介紹了你可以使用 –verify-signatures 選項來驗證你正在拉取下來的經過 GPG 簽名的提交。

    ? git push

    git push 命令用來與另一個倉庫通信,計算你本地數據庫與遠程倉庫的差異,然后將差異推送到另一個倉庫中。 它需要有另一個倉庫的寫權限,因此這通常是需要驗證的。

    我們開始在 推送到遠程倉庫 一節中介紹了 git push 命令。 在這一節中主要介紹了推送一個分支到遠程倉庫的基本用法。 在 推送 一節中,我們深入了解了如何推送指定分支,在 跟蹤分支 一節中我們了解了如何設置一個默認的推送的跟蹤分支。 在 刪除遠程分支 一節中我們使用 –delete 標志和 git push 命令來在刪除一個在服務器上的分支。

    在 向一個項目貢獻 一整節中,我們看到了幾個使用 git push 在多個遠程倉庫分享分支中的工作的示例。

    在 共享標簽 一節中,我們知道了如何使用此命令加 –tags 選項來分享你打的標簽。

    在 發布子模塊改動 一節中,我們使用 –recurse-submodules 選項來檢查是否我們所有的子模塊的工作都已經在推送子項目之前已經推送出去了,當使用子模塊時這真的很有幫助。

    在 其它客戶端鉤子 中我們簡單的提到了 pre-push 掛鉤(hook),它是一個可以用來設置成在一個推送完成之前運行的腳本,以檢查推送是否被允許。

    最后,在 引用規格推送 一節中,我們知道了使用完整的 refspec 來推送,而不是通常使用的簡寫形式。 這對我們精確的指定要分享出去的工作很有幫助。

    ? git remote

    git remote 命令是一個是你遠程倉庫記錄的管理工具。 它允許你將一個長的 URL 保存成一個簡寫的句柄,例如 origin ,這樣你就可以不用每次都輸入他們了。 你可以有多個這樣的句柄,git remote 可以用來添加,修改,及刪除它們。

    此命令在 遠程倉庫的使用 一節中做了詳細的介紹,包括列舉、添加、移除、重命名功能。

    幾乎在此書的后續章節中都有使用此命令,但是一般是以 git remote add <name> <url> 這樣的標準格式。

    ? git archive

    git archive 命令用來創建項目一個指定快照的歸檔文件。

    我們在 準備一次發布 一節中,使用 git archive 命令來創建一個項目的歸檔文件用于分享。

    ? git submodule

    git submodule 命令用來管理一個倉庫的其他外部倉庫。 它可以被用在庫或者其他類型的共享資源上。 submodule 命令有幾個子命令, 如(add、update、sync 等等)用來管理這些資源。

    只在 子模塊 章節中提到和詳細介紹了此命令。

    ★ 檢查與比較

    ? git show

    git show 命令可以以一種簡單的人類可讀的方式來顯示一個 Git 對象。 你一般使用此命令來顯示一個標簽或一個提交的信息。

    我們在 附注標簽 一節中使用此命令來顯示帶注解標簽的信息。

    然后,我們在 選擇修訂版本 一節中,用了很多次來顯示不同的版本選擇將解析出來的提交。

    我們使用 git show 做的最有意思的事情是在 手動文件再合并 一節中用來在合并沖突的多個暫存區域中提取指定文件的內容。

    ? git shortlog

    git shortlog 是一個用來歸納 git log 的輸出的命令。 它可以接受很多與 git log 相同的選項,但是此命令并不會列出所有的提交,而是展示一個根據作者分組的提交記錄的概括性信息

    我們在 制作提交簡報 一節中展示了如何使用此命令來創建一個漂亮的 changelog 文件。

    ? git describe

    git describe 命令用來接受任何可以解析成一個提交的東西,然后生成一個人類可讀的字符串且不可變。 這是一種獲得一個提交的描述的方式,它跟一個提交的 SHA-1 值一樣是無歧義,但是更具可讀性。

    我們在 生成一個構建號 及 準備一次發布 章節中使用 git describe 命令來獲得一個字符串來命名我們發布的文件。

    ★ 調試

    Git 有一些命令可以用來幫你調試你代碼中的問題。 包括找出是什么時候,是誰引入的變更。

    ? git bisect

    git bisect 工具是一個非常有用的調試工具,它通過自動進行一個二分查找來找到哪一個特定的提交是導致 bug 或者問題的第一個提交。

    僅在 二分查找 一節中完整的介紹了此命令。

    ? git blame

    git blame 命令標注任何文件的行,指出文件的每一行的最后的變更的提交及誰是那一個提交的作者。 當你要找那個人去詢問關于這塊特殊代碼的信息時這會很有用。

    只有 文件標注 一節有中提到此命令。

    ? git grep

    git grep 命令可以幫助在源代碼中,甚至是你項目的老版本中的任意文件中查找任何字符串或者正則表達式。

    只有 Git Grep 的章節中與提到此命令。

    ★ 補丁

    Git 中的一些命令是以引入的變更即提交這樣的概念為中心的,這樣一系列的提交,就是一系列的補丁。 這些命令以這樣的方式來管理你的分支。

    ? git cherry-pick

    git cherry-pick 命令用來獲得在單個提交中引入的變更,然后嘗試將作為一個新的提交引入到你當前分支上。 從一個分支單獨一個或者兩個提交而不是合并整個分支的所有變更是非常有用的。

    在 變基與揀選工作流 一節中描述和演示了 Cherry picking

    ? git rebase

    git rebase 命令基本是是一個自動化的 cherry-pick 命令。 它計算出一系列的提交,然后再以它們在其他地方以同樣的順序一個一個的 cherry-picks 出它們。

    在 變基 一章中詳細提到了此命令,包括與已經公開的分支的變基所涉及的協作問題。

    在 替換 中我們在一個分離歷史記錄到兩個單獨的倉庫的示例中實踐了此命令,同時使用了 –onto選項。

    在 Rerere 一節中,我們研究了在變基時遇到的合并沖突的問題。

    在 修改多個提交信息 一節中,我們也結合 -i 選項將其用于交互式的腳本模式。

    ? git revert

    git revert 命令本質上就是一個逆向的 git cherry-pick 操作。 它將你提交中的變更的以完全相反的方式的應用到一個新創建的提交中,本質上就是撤銷或者倒轉。

    我們在 還原提交 一節中使用此命令來撤銷一個合并提交。

    ★ 郵件

    很多 Git 項目,包括 Git 本身,基本是通過郵件列表來維護的。 從方便地生成郵件補丁到從一個郵箱中應用這些補丁,Git 都有工具來讓這些操作變得簡單。

    ? git apply

    git apply 命令應用一個通過 git diff 或者甚至使用 GNU diff 命令創建的補丁。 它跟補丁命令做了差不多的工作,但還是有一些小小的差別。

    我們在 應用來自郵件的補丁 一節中演示了它的使用及什么環境下你可能會用到它。

    ? git am

    git am 命令用來應用來自郵箱的補丁。特別是那些被 mbox 格式化過的。 這對于通過郵件接受補丁并將他們輕松地應用到你的項目中很有用。

    我們在 使用 am 命令應用補丁 命令中提到了它的用法及工作流,包括使用 –resolved、-i 及-3 選項。

    我們在 電子郵件工作流鉤子 也提到了幾條 hooks,你可以用來輔助與 git am 相關工作流。

    在 郵件通知 一節中我們也將用此命令來應用 格式化的 GitHub的推送請求的變更。

    ? git format-patch

    git format-patch 命令用來以 mbox 的格式來生成一系列的補丁以便你可以發送到一個郵件列表中。

    我們在 通過郵件的公開項目 一節中研究了一個使用 git format-patch 工具為一個項目做貢獻的示例。

    ? git imap-send

    git imap-send 將一個由 git format-patch 生成的郵箱上傳至 IMAP 草稿文件夾。 我們在通過郵件的公開項目 一節中見過一個通過使用 git imap-send 工具向一個項目發送補丁進行貢獻的例子。

    ? git send-email

    git send-mail 命令用來通過郵件發送那些使用 git format-patch 生成的補丁。

    我們在 通過郵件的公開項目 一節中研究了一個使用 git send-email 工具發送補丁來為一個項目做貢獻的示例。

    ? git request-pull

    git request-pull 命令只是簡單的用來生成一個可通過郵件發送給某個人的示例信息體。 如果你在公共服務器上有一個分支,并且想讓別人知道如何集成這些變更,而不用通過郵件發送補丁,你就可以執行此命令的輸出發送給這個你想拉取變更的人。

    我們在 派生的公開項目 一節中演示了如何使用 git request-pull 來生成一個推送消息。

    ★ 外部系統

    Git 有一些可以與其他的版本控制系統集成的命令。

    ? git svn

    git svn 可以使 Git 作為一個客戶端來與 Subversion 版本控制系統通信。 這意味著你可以使用 Git 來檢出內容,或者提交到 Subversion 服務器。

    Git 與 Subversion 一章深入講解了此命令。

    ? git fast-import

    對于其他版本控制系統或者從其他任何的格式導入,你可以使用 git fast-import 快速地將其他格式映射到 Git 可以輕松記錄的格式。

    在 一個自定義的導入器 一節中深入講解了此命令。

    ★ 管理

    如果你正在管理一個 Git 倉庫,或者需要通過一個復雜的方法來修復某些東西,Git 提供了一些管理命令來幫助你。

    ? git gc

    git gc 命令在你的倉庫中執行 “garbage collection” ,刪除數據庫中不需要的文件和將其他文件打包成一種更有效的格式。

    此命令一般在背后為你工作,雖然你可以手動執行它-如果你想的話。 我們在維護 一節中研究此命令的幾個示例。

    ? git fsck

    git fsck 命令用來檢查內部數據庫的問題或者不一致性。

    我們只在 數據恢復 這一節中快速使用了一次此命令來搜索所有的漂流對象(dangling object)。

    ? git reflog

    git reflog 命令分析你所有分支的頭指針的日志來查找出你在重寫歷史上可能丟失的提交。

    我們主要在 引用日志 一節中提到了此命令,并在展示了一般用法,及如何使用 git log -g 來通過 git log 的輸出來查看同樣的信息。

    我們同樣在 數據恢復 一節中研究了一個恢復丟失的分支的實例。

    ? git filter-branch

    git filter-branch 命令用來根據某些規則來重寫大量的提交記錄,例如從任何地方刪除文件,或者通過過濾一個倉庫中的一個單獨的子目錄以提取出一個項目。

    在 從每一個提交移除一個文件 一節中,我們解釋了此命令,并探究了其他幾個選項,例如 –commit-filter,–subdirectory-filter 及 –tree-filter 。

    在 Git-p4 和 TFS 的章節中我們使用它來修復已經導入到外部倉庫。

    ★ 底層命令

    在本書中我們也遇到了不少底層的命令。

    我們遇到的第一個底層命令是在 合并請求引用 中的 ls-remote 命令。我們用通過它來查看服務端的原始引用。

    我們在 手動文件再合并、 Rerere 及 索引 章節中使用 ls-files 來查看暫存區的更原始的樣子。

    我們同樣在 分支引用 一節中提到了 rev-parse 命令,它可以接受任意字符串,并將其轉成一個對象的 SHA-1 值。

    我們在 Git 內部原理 一章中對大部分的底層命令進行了介紹,這差不多正是這一章的重點所在。 我們盡量避免了在本書的其他部分使用這些命令。

    鄭重聲明:

    1 本資源來源于互聯網,資源的版權歸資源原作者所持有,受《中華人民共和國著作權法》等相關法律保護。

    2 由于無法和原作者取得聯系,所以上傳的部分資源無法先通過原作者的同意就分享給大家了,如本資源侵犯了您(原作者)的權益,請聯系我們(微信號 wenyan90s),我們會立馬刪除您的資源,并向您表達誠摯的歉意!

    3 本站是一個公益型網站,分享資源的目的在于傳播知識,分享知識,收取一點點打賞的辛苦費是用于網站的日常運營開支,并非用于商業用途。

    4 本站資源只提供學習和參考研究使用,使用過后請在第一時間內刪除。本站不承擔資源被單位或個人商用帶來的法律責任。

    發表評論

    国产精品午夜福利在线观看,av色片在线观看,男生看的黄色网站在线,黄片a片视频黄色
    <samp id="0l9hf"></samp>
    <td id="0l9hf"><option id="0l9hf"></option></td>