日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

白话谈 Git

發(fā)布時(shí)間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 白话谈 Git 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

一、Git是什么?

定義

Git 的定義 是 一款免費(fèi)開(kāi)源版本控制系統(tǒng)。

免費(fèi)不必多說(shuō);開(kāi)源則是指將源代碼公布,并允許公眾查看、修改代碼。

如果我們將項(xiàng)目每一個(gè)節(jié)點(diǎn)處的修改(這些節(jié)點(diǎn)可能是一些標(biāo)志性事件,比如第一個(gè)章節(jié)完成、草稿完成、審核通過(guò); 也可能是一些時(shí)間節(jié)點(diǎn),比如下班回家)看做是一個(gè)版本,對(duì)這些版本的記錄、查看、更新等操作即是版本控制。

Git?

Git 誕生于 2005 年,創(chuàng)作者是 Linux 之父 Linus Torvalds。

Git 中文翻譯是 “傻子;飯桶;無(wú)用的人”。

為什么這樣一款流行的工具會(huì)起這樣一個(gè)名字呢?

坊間傳說(shuō)Linus 曾說(shuō)過(guò)這樣一句話,“我是個(gè)自負(fù)的混蛋,所有我的項(xiàng)目都以我自己的名字命名,先有 Linux, 現(xiàn)在是 Git”。

Linus 也曾在公共場(chǎng)合表示過(guò)對(duì) Git 的看法 “Git,the stupid content tracker”。 Git, 傻瓜內(nèi)容追蹤器。如傻瓜相機(jī)一樣, 這里的 “傻瓜”指的是讓復(fù)雜的操作變得更簡(jiǎn)單。

也有人認(rèn)為 Git 是 “Global information tracker” 的縮寫(xiě)。如果將項(xiàng)目整體認(rèn)為是“全局”,項(xiàng)目文件內(nèi)容認(rèn)為是 “信息”,文件內(nèi)容的增刪改查認(rèn)為是“跟蹤”, Git的本質(zhì)的確是 “全局信息跟蹤”。

分布式

與傳統(tǒng)的版本控制工具不同的是,Git 采用分布式管理。我們?cè)谶h(yuǎn)程服務(wù)器建立中央倉(cāng)庫(kù),團(tuán)隊(duì)每位成員將其同步到本地。之后團(tuán)隊(duì)成員每做一次修改,即將項(xiàng)目最新?tīng)顟B(tài)上傳到中央倉(cāng)庫(kù),并通知團(tuán)隊(duì)其他成員拉取中央倉(cāng)庫(kù)項(xiàng)目狀態(tài)以更新他們的本地倉(cāng)庫(kù)。這是一種高效的團(tuán)隊(duì)協(xié)作方式。我們?nèi)∧骋粋€(gè)時(shí)間節(jié)點(diǎn)來(lái)看,項(xiàng)目的最新?tīng)顟B(tài)確實(shí)是分布式地存儲(chǔ)在團(tuán)隊(duì)各個(gè)成員的本地倉(cāng)庫(kù)中的。

?

二、為什么要用Git?

備份文件

有沒(méi)有人會(huì)擔(dān)心突然哪一天電腦壞掉了,不能用了呢?為了不使工作成果消失,一般我們會(huì)使用 U盤(pán)、光盤(pán)或者云端工具如百度網(wǎng)盤(pán)、360云盤(pán)、Google Drive等留存一份副本。同樣, Git 也具有這種功能。當(dāng)我們?cè)谥醒雮}(cāng)庫(kù)建立唯一副本后,無(wú)論我們是在公司、家里、酒店、會(huì)所等任何有網(wǎng)有電腦的地方,都可以快速還原工作環(huán)境。

記錄歷史

每一次提交項(xiàng)目修改時(shí),Git 會(huì)記錄提交者、提交日期等信息,并自動(dòng)識(shí)別項(xiàng)目發(fā)生變化的地方。同時(shí),我們還可以為每次提交添加注釋以幫助我們回憶和梳理項(xiàng)目歷史。

Git 對(duì)于二進(jìn)制文件的支持并不算友好,它不能識(shí)別文件發(fā)生變化的區(qū)塊,因此會(huì)帶來(lái)一些限制,之后會(huì)提到。不過(guò)我們依舊可以用它來(lái)記錄一些信息。

切換版本

在進(jìn)行長(zhǎng)篇大論的寫(xiě)作時(shí),往往會(huì)遇到這樣一些情況,想要?jiǎng)h除某一個(gè)段落、或者替換一些數(shù)據(jù),但又怕之后會(huì)用到。于是我們建立了一份副本。可這樣的情景多了,文檔結(jié)構(gòu)就會(huì)變得很復(fù)雜,當(dāng)然我們可以通過(guò)標(biāo)注文件名稱(chēng)簡(jiǎn)單管理一下。于是,我們得到了多個(gè)版本、看起來(lái)比較混亂的文檔結(jié)構(gòu)。

而Git 則通過(guò)版本控制很好地解決了這個(gè)問(wèn)題。在每次提交時(shí), Git 生成一個(gè)HASH值作為版本號(hào),我們可以通過(guò)查看項(xiàng)目歷史找到想要的版本,并通過(guò)版本號(hào)將當(dāng)前版本回滾到指定版本。

團(tuán)隊(duì)協(xié)作

即使一個(gè)團(tuán)隊(duì)里的每個(gè)人都能夠獨(dú)當(dāng)一面,在遇到更復(fù)雜的情況和更難對(duì)付的對(duì)手,他們?nèi)匀恍枰献?#xff0c;或合力一處攻破難關(guān),或各施所長(zhǎng)處理不同的業(yè)務(wù)。然而,若是沒(méi)有一套良好的合作機(jī)制,不能夠有效地進(jìn)行團(tuán)隊(duì)協(xié)作,所起的作用是事倍功半的。

假設(shè)團(tuán)隊(duì)合作一個(gè)項(xiàng)目,我們可以讓擅畫(huà)圖的去作圖,文筆好的去作文,負(fù)責(zé)人組織全局結(jié)構(gòu),協(xié)調(diào)各部分資源。這樣不僅使得團(tuán)隊(duì)成員術(shù)業(yè)專(zhuān)攻,也使得業(yè)務(wù)的每個(gè)部分得到最專(zhuān)業(yè)的打磨,同時(shí)有效地縮短了項(xiàng)目的開(kāi)發(fā)周期。

舉個(gè)傳統(tǒng)方式團(tuán)隊(duì)協(xié)作的例子,Jack在開(kāi)發(fā)項(xiàng)目時(shí),發(fā)現(xiàn)某一部分需要 John完成,于是他把文件復(fù)制了一份發(fā)給 John,之后繼續(xù)自己的工作。第二天John將文件傳回來(lái),可這時(shí)Jack并不知道John對(duì)文件做了哪些修改,也無(wú)法清楚地分辨出自己做過(guò)的變動(dòng),除非他們之間事先做過(guò)良好清晰的約定或者Jack等待John完成后再繼續(xù)自己的工作。

使用Git則會(huì)極大地簡(jiǎn)化這一過(guò)程。Jack將自己的工作內(nèi)容上傳到遠(yuǎn)程倉(cāng)庫(kù)中,John復(fù)制遠(yuǎn)程倉(cāng)庫(kù)內(nèi)容到本地,之后兩個(gè)人各自進(jìn)行自己工作。當(dāng)John完成工作時(shí),通知Jack拉取項(xiàng)目更新,在拉取過(guò)程中, Git會(huì)自動(dòng)合并雙方的修改為一體,如果項(xiàng)目成員的修改發(fā)生沖突(比如修改同一處),Git 允許你手動(dòng)選擇使用什么內(nèi)容來(lái)填充沖突處。

這一功能也得益于Git的版本控制機(jī)制。在文件內(nèi)容發(fā)生修改時(shí),Git會(huì)將發(fā)生修改的部分劃分為區(qū)塊進(jìn)行記錄,以區(qū)塊為單位從而實(shí)現(xiàn)自動(dòng)合并。我們之前說(shuō)到 Git對(duì)于二進(jìn)制文件的支持并不算友好,因?yàn)镚it不能識(shí)別文件發(fā)生變化的區(qū)塊,它會(huì)將二進(jìn)制數(shù)據(jù)流視作整個(gè)區(qū)塊,因此Git并不能自動(dòng)合并不同版本的二進(jìn)制文件, 如 word、excel、ppt 等。

工作透明

在軟件團(tuán)隊(duì)中,有一個(gè)不成文的習(xí)慣,團(tuán)隊(duì)成員在每天晚上下班前,先將一天工作內(nèi)容上傳到中央倉(cāng)庫(kù),早上上班時(shí)先從中央倉(cāng)庫(kù)拉取項(xiàng)目更新。由于項(xiàng)目的每個(gè)成員都可以通過(guò)版本歷史記錄查看其它成員的工作內(nèi)容和項(xiàng)目進(jìn)展,因此也就形成了團(tuán)隊(duì)內(nèi)部工作透明的機(jī)制。

?

三、怎么使用Git?

下載安裝

Git 全平臺(tái)通用,我們可以在官網(wǎng)上下載安裝。

Git 命令

在上面的內(nèi)容中,我們提到過(guò) Git 相關(guān)一系列操作,如拉取、提交、查看歷史等。可是究竟要如何實(shí)現(xiàn)呢?

Git 為這些操作提供了一系列配套命令,常用命令如

# 克隆遠(yuǎn)程倉(cāng)庫(kù) git clone # 初始化一個(gè)倉(cāng)庫(kù) git init # 將文件修改添加到緩沖區(qū) git add # 移動(dòng)或重命名一個(gè)文件、一個(gè)文件夾或快捷方式 git mv # 回滾項(xiàng)目版本 git reset # 將文件修改從緩沖區(qū)中移除 git rm # 顯示項(xiàng)目當(dāng)前狀態(tài) git status # 顯示項(xiàng)目日志 git log # 顯示項(xiàng)目分支 git branch # 切換分支或重置文件 git checkout # 提交項(xiàng)目修改到倉(cāng)庫(kù) git commit # 對(duì)比版本之間、版本和當(dāng)前工作狀態(tài)之間的差異 git diff # 合并文件 git merge # 將提交放在另一個(gè)基的上面 git rebase # 創(chuàng)建、顯示、校驗(yàn)標(biāo)簽對(duì)象 git tag # 拉取其他倉(cāng)庫(kù)的對(duì)象和索引 git fetch # 拉取其他倉(cāng)庫(kù)內(nèi)容并和本地分支合并 git pull # 更新遠(yuǎn)程倉(cāng)庫(kù) git push

同時(shí),這些命令還有配套的一些參數(shù),之后會(huì)推薦一些相關(guān)教程。

Git GUI

如果覺(jué)得對(duì)著黑盒子敲命令很不舒服的話,你也可以使用 Git 的圖形界面。

推薦一款我常用的 GUI,Source Tree。

Git 工作流程

下面簡(jiǎn)單講述兩個(gè) Git 的基本工作流程。

提交項(xiàng)目修改

  • 文件發(fā)生修改時(shí),選擇想要提交的內(nèi)容添加到緩沖區(qū)

  • 提交緩沖區(qū)內(nèi)容到倉(cāng)庫(kù),Git 會(huì)自動(dòng)生成版本記錄、版本號(hào)等

  • 可能有人會(huì)有疑問(wèn),為什么不直接提交修改到倉(cāng)庫(kù)呢?

    這里,緩沖區(qū)起到一個(gè)緩沖的作用,允許你考慮和修改用哪些內(nèi)容生成此次版本。

    團(tuán)隊(duì)協(xié)同合作

    上文曾簡(jiǎn)單描述過(guò)這個(gè)流程:

  • 團(tuán)隊(duì)在遠(yuǎn)程服務(wù)器上建立中央倉(cāng)庫(kù)

  • 團(tuán)隊(duì)成員在本機(jī)上各自建立本地倉(cāng)庫(kù)

  • 成員提交更新到中央倉(cāng)庫(kù)

  • 其他成員拉取項(xiàng)目最新提交以更新本地倉(cāng)庫(kù)

  • 如此循環(huán)往復(fù),協(xié)同推進(jìn)項(xiàng)目進(jìn)展
  • ?

    四、相關(guān)鏈接

    Git 下載地址

    https://git-scm.com/

    Git 英文教程(基本原理)

    https://jwiegley.github.io/git-from-the-bottom-up/

    Git中文教程(命令用法)

    https://github.com/lonelydawn/git-recipes/

    Git GUI 推薦

    Source Tree: https://www.sourcetreeapp.com/

    GitHub 官方 GUI: https://desktop.github.com/

    Git項(xiàng)目托管平臺(tái)推薦

    GitHub: https://github.com/

    BitBucket: https://bitbucket.org/

    碼云(國(guó)內(nèi)平臺(tái),備受好評(píng)!):?https://gitee.com/

    關(guān)于 Git 項(xiàng)目托管平臺(tái)有一點(diǎn)要說(shuō)的是,GitHub 雖然是最大 Git 開(kāi)源項(xiàng)目社區(qū),但它的 私有庫(kù)是收費(fèi)的,而 BitBucket 則提供限量免費(fèi)私有庫(kù),這對(duì)中小型公司是比較友好的。

    五、PS

    配套 PPT 如有需要, 請(qǐng)自取:

    百度網(wǎng)盤(pán)鏈接

    ?

    ?

    ?

    ?

    ?

    轉(zhuǎn)載于:https://my.oschina.net/lonelydawn/blog/1633511

    總結(jié)

    以上是生活随笔為你收集整理的白话谈 Git的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。