本地git存储库关闭_Git 入门:术语基础 | Linux 中国
想學習 Git?看看這個最重要的術語和命令的快速總結。
? 來源:linux.cn ? 作者:Matthew Broberg ? 譯者:Xingyu.Wang ?
(本文字數(shù):4793,閱讀時長大約:7 分鐘)
如今,對于任何希望跟蹤他們的變化的人來說,版本控制是一個重要的工具。它對程序員、系統(tǒng)管理員和 網(wǎng)站可靠性工程師(site reliability engineers)(SRE)都特別有用。確保可以從錯誤中恢復到已知的良好狀態(tài)是一個巨大的勝利,比以前給復制的文件添加 .old 后綴的策略更友好。
但學習 Git 這件事往往被告訴大家“投身開源”的好心同行們過度簡化了。在你還不明白之前,就有人要你給一個從 上游(upstream) 變基(rebase)的 拉取請求(pull request)(PR)或 合并請求(merge request)(MR),然后他們才能從你的 遠程版本庫(remote)合并 —— 而且一定會刪除 合并提交(merge commits)。無論你想給開源項目做出什么好的貢獻,當你看到這些你不認識的單詞時,都會覺得難以融入。
Git 速查表封面圖
下載 我們的 Git 速查表。如果你有一兩個月的時間和足夠的好奇心, Git SCM 是你需要學習所有術語的權威來源。但如果你正在尋找來自實踐的總結,請繼續(xù)閱讀。
提交就是提醒
對我來說,Git 最難理解的部分是 Git 最簡單的概念:一個 提交(commit)就是一個內容的集合,包括一個關于描述的信息,以及之前的提交。沒有固有的代碼發(fā)布策略,甚至沒有內置的明確建議。這個內容甚至不一定是代碼 —— 可以是任何你想添加到版本庫的東西。 提交消息(commit message)會對這些內容進行注釋。
我喜歡把提交信息看作是給未來的自己的禮物:它可能會提到你編輯的文件,但更重要的是它提醒你修改這些文件的意圖。添加更多關于你為什么編輯這些內容的信息,可以幫助任何使用你的版本庫的人,即使那個人是你。
origin/master 在哪里?
要知道自己在 Git 項目中的位置,首先把它想成一棵樹。所有 Git 項目都有一個根目錄,類似于文件系統(tǒng)的根目錄。所有的提交都是這個根目錄下的分支。這樣一來,分支只是一個提交的指針。按照慣例,master 是根目錄下默認的分支名稱。(LCTT 譯注:世界變得快,原文發(fā)表于 2019 年,而現(xiàn)在有些地方開始用 main 替代這個名字。)
由于 Git 是一個分布式的版本控制系統(tǒng),同一個代碼庫分布在多個地方,所以人們經(jīng)常用 版本庫(repository)這個詞來表示同一個項目的所有副本。(LCTT 譯注:“repository” 英文原意是倉庫、存儲庫,在計算機環(huán)境中,常用于版本控制、軟件分發(fā)等方面,有時候會統(tǒng)一譯作“倉庫”、“存儲庫”。但我們認為,應該根據(jù)不同語境采用更有指向性的譯法。在 Git 等版本控制語境中,采用“版本庫”;在軟件分發(fā)方面,采用“軟件庫”;其它泛指或不確定的語境中,可采用“倉庫”、“存儲庫”譯法。)有 本地版本庫(local repository),這是你編輯代碼的地方(稍后會有更多的介紹),還有 遠程版本庫(remote repository),這是你完成后想把代碼發(fā)送到的地方。遠程版本庫可以在任何地方,甚至在你的本地版本庫所在的同一臺計算機上,但它們通常托管在 GitLab 或 GitHub 等版本庫服務上。
我在哪里?
雖然不是官方的賣點,但迷路也是 Git 倉庫的“樂趣”之一。你可以通過這套可靠的命令來找到自己的方向:
git branch —— 找到你所在的分支。git log —— 查看你正在進行的提交。git status —— 查看自上次提交以來你所做的編輯。git remote —— 查看你正在跟蹤的遠程倉庫。用這些命令來定位自己的方向,當你被卡住的時候,會讓你有一種方向感。
我是否已將我的提交暫存或緩存起來?
你電腦上的代碼俗稱為你的 工作空間(workspace)。但不是很明顯的是,當你在 Git 倉庫中時,你還有兩個(是的,兩個!)其他位置: 索引(index)和 暫存(stash)。當你寫了一些內容,然后添加時,你是把它添加到索引中,也就是準備提交的緩存內容。有的時候,你的索引中的文件還沒有準備好提交,但你想查看另一個分支。這時,暫存就派上用場了。你可以使用 git stash 將索引了但尚未提交的文件存儲到暫存區(qū)中。當你準備好取回文件時,運行 git stash pop 將更改帶回索引中。
下面是一些你需要使用暫存區(qū)和緩存區(qū)的命令:
git diff ...origin/master —— 顯示最近的本地提交和遠程的 origin 版本庫的 master 分支之間的差異。git diff --cached —— 顯示最近的本地提交與添加到本地索引的內容之間的任何差異。git stash —— 將索引的(已添加但未提交的)文件放在暫存區(qū)堆棧中。git stash list —— 顯示暫存區(qū)堆棧中的變化。git stash pop —— 將最近的變化從暫存庫中刪除。無頭騎士
Git 里面有各種比喻。當我想到 HEAD 是哪里的時候,我就會想到火車線路。如果你最終處于 脫離的 HEAD(detached HEAD)模式,就意味著你已經(jīng)脫離了這個隱喻的軌道。
HEAD 是指向當前簽出分支中最近一次提交的指針。默認的“簽出checkout”是指當你創(chuàng)建一個 Git 倉庫并進入到 master 分支的時候。每次創(chuàng)建或修改到另一個分支時,你都會切換到該分支行。如果你在當前分支的某處進行 git checkout ,HEAD 就會移動到該提交。如果沒有提交歷史記錄將你的當前提交連接到已簽出的提交,那么你將處于脫離的 HEAD 狀態(tài)。如果你找不到 HEAD 的位置,你可以隨時用 git reset --hard origin/master 來刪除修改,回到已知狀態(tài)。警告:這將刪除你上次推送到 master 后的任何改動。
你是上游還是下游?
你的項目的本地副本被認為是你的本地版本庫,它可能有也可能沒有遠程版本庫 —— 遠程版本庫的副本是用于協(xié)作或保存的。也可能還有一個 上游(upstream)版本庫,在那里,項目的第三個副本由不同的貢獻者托管和維護。
例如,假設我想為 Kubernetes 做貢獻。我會首先將 kubernetes/kubernetes 項目 復刻(fork)到我的賬戶下 mbbroberg/kubernetes。然后我會將我的項目克隆到我的本地工作區(qū)。在這種情況下,我的本地克隆是我的本地倉庫,mbbroberg/kubernetes 是我的遠程倉庫,kubernetes/kubernetes 是上游。
合并的隱喻
當你深入 Git 分支時,根系統(tǒng)的視覺效果就會和火車軌道的形象合二為一。分支通常被用作開發(fā)一個新功能的方式,最終你想把它 合并(merge)到主分支中。當這樣做時,Git 會按順序保留共同的提交歷史,然后將你的分支的新提交追加到歷史中。這個過程有一大堆的細節(jié):是否 變基(rebase),是否添加一個 合并提交(merge commit), Brent Laster 在《 如何在 Git 中重置、恢復和返回之前的狀態(tài) 》中會有更詳細的探討。
我想現(xiàn)在就去 Git
要掌握 Git 命令的世界,有大量的術語和需要探索的地方。我希望這篇關于日常使用術語的第一人稱探索能幫助你適應這一切。如果你覺得自己被卡住了或者遇到了挫折,歡迎在 Twitter @mbbroberg 上聯(lián)系我。
回顧
- 提交(Commit) —— 將當前索引的內容保存在一個新的提交中,并附上用戶描述更改的日志信息。
- 分支(Branch) —— 指向一個提交的指針。
- master —— 第一個分支的默認名稱。
- HEAD —— 指向當前分支上最近一次提交的指針。
- 合并(Merge) —— 合并兩個或多個提交的歷史。
- 工作空間(Workspace) —— Git 倉庫本地副本的通俗名稱。
- 工作樹(Working tree) —— 工作區(qū)中的當前分支;任何時候你都可以在 git status 的輸出中看到這個。
- 緩存(Cache) —— 用于臨時存儲未提交的變更的空間。
- 索引(Index) —— 變更提交前存儲其變化的緩存。
- 跟蹤和未跟蹤的文件 —— 沒有被索引緩存的文件或尚未加入其中的文件。
- 暫存(Stash) —— 另一個緩存,作為一個堆棧,在這里可以存儲更改而不需要提交它們。
- origin —— 遠程版本庫的默認名稱。
- 本地倉庫(Local repository) —— 也就是你在工作站上保存 Git 倉庫副本的地方。
- 遠程存儲庫(Remote repository) —— Git 存儲庫的第二副本,你可以在這里推送變更以便協(xié)作或備份。
- 上游存儲庫(Upstream repository) —— 你跟蹤的遠程存儲庫的通俗說法。
- 拉取請求(Pull request) —— 這是 GitHub 的專用術語,用于讓其他人知道你推送到倉庫分支的變化。
- 合并請求(Merge request) —— 這是 GitLab 的專用術語,用于讓其他人知道你推送到倉庫分支的變化。
- origin/master —— 遠程版本庫及其主要分支的默認名稱。
后記:雙關語是 Git 最好的部分之一,愿你喜歡。
總結
以上是生活随笔為你收集整理的本地git存储库关闭_Git 入门:术语基础 | Linux 中国的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: groovy定义变量获取当前时间_IDE
- 下一篇: 对象存储使用案例_连云数据都有“对象存储