• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Git 簡介

    Git的簡史

      同生活中的許多偉大事物一樣,Git 誕生于一個極富紛爭大舉創新的年代。

      Linux 內核開源項目有著為數眾廣的參與者。 絕大多數的 Linux 內核維護工作都花在了提交補丁和保存歸檔的繁瑣事務上(1991-2002年間)。 到 2002 年,整個項目組開始啟用一個專有的分布式版本控制系統 BitKeeper 來管理和維護代碼。

      到了 2005 年,開發 BitKeeper 的商業公司同 Linux 內核開源社區的合作關系結束,他們收回了Linux 內核社區免費使用 BitKeeper 的權力。 這就迫使 Linux 開源社區(特別是 Linux 的締造者Linux Torvalds)基于使用 BitKcheper 時的經驗教訓,開發出自己的版本系統。 他們對新的系統制訂了若干目標:

    • 速度

    • 簡單的設計

    • 對非線性開發模式的強力支持(允許成千上萬個并行開發的分支)

    • 完全分布式

      有能力高效管理類似 Linux 內核一樣的超大規模項目(速度和數據量)

      自誕生于 2005 年以來,Git 日臻成熟完善,在高度易用的同時,仍然保留著初期設定的目標。 它的速度飛快,極其適合管理大項目,有著令人難以置信的非線性分支管理系統。

      Git迅速成為最流行的分布式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

    Git是什么?

      Git是一款免費、開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。

      Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

      最原始的版本控制是純手工的版本控制:修改文件,保存文件副本。有時候偷懶省事,保存副本時命名比較隨意,時間長了就不知道哪個是新的,哪個是老的了,即使知道新舊,可能也不知道每個版本是什么內容,相對上一版作了什么修改了,當幾個版本過去后,很可能就是下面這個老土的樣子了:

    匯智網

    Git特點

      分布式相比于集中式的最大區別在于開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫。

    • 直接記錄快照,而非差異比較 : Git 更像是把變化的文件作快照后,記錄在一個微型的文件系統中。

    • 近乎所有操作都是本地執行 :在 Git 中的絕大多數操作都只需要訪問本地文件和資源,不用連網。

    • 時刻保持數據完整性 :在保存到 Git 之前,所有數據都要進行內容的校驗和(checksum)計算,并將此結果作為數據的唯一標識和索引。

    • 多數操作僅添加數據 :常用的 Git 操作大多僅僅是把數據添加到數據庫。

      開發流程示意圖:

    匯智網 開發流程圖

    集中版本控制

      CVS及SVN都是集中式的版本控制系統,而Git是分布式版本控制系統。

      集中式版本控制系統,版本庫是集中存放在中央服務器的,一起工作的人需要用自己的電腦從服務器上同步更新或上傳自己的修改。

    匯智網 版本控制

      但是,所有的版本數據都存在服務器上,用戶的本地設備就只有自己以前所同步的版本,如果不連網的話,用戶就看不到歷史版本,也無法切換版本驗證問題,或在不同分支工作。。

      而且,所有數據都保存在單一的服務器上,有很大的風險這個服務器會損壞,這樣就會丟失所有的數據,當然可以定期備份。

    分布式版本控制

      那分布式版本控制系統與集中式版本控制系統有何不同呢?

     分布式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,不需要聯網就可以工作。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你和同事在各自電腦修改相同文件,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

      分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫。大家之間可以相互復制。

      分布式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

    匯智網 版本控制

    安裝Git

      最早Git是在Linux上開發的,很長一段時間內,Git也只能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上。現在,Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。

      在Linux上安裝Git

      首先,你可以試著輸入git,看看系統有沒有安裝Git:

    $ git
    

      像上面的命令,有很多Linux會友好地告訴你Git沒有安裝,還會告訴你如何安裝Git。

      如果你碰巧用Debian或Ubuntu Linux,通過一條sudo apt-get install git就可以直接完成Git的安裝,非常簡單。如果想查看是否安裝成功,通過git --version。

      如果是其他Linux版本,可以直接通過源碼安裝。先從Git官網下載源碼,然后解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了。

      安裝完成后,還需要最后一步設置,在命令行輸入:  

    $ git config --global user.name "Your Name"
    $ git config --global user.email "[email protected]"
    

      因為Git是分布式版本控制系統,所以每個機器都必須自報家門:你的名字和Email地址。

      注意git config命令的--global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。在此課程中,我們配置的環境中Git已安裝好,我們課程提供也是在Linux系統中命令進行操作。

    什么是版本庫?

      版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

      所以,創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄:

    $ mkdir learngit
    $ cd learngit
    $ pwd
    /home/hubwiz/learngit
    

      pwd命令用于顯示當前目錄。在環境中這個倉庫位于/home/hubwiz/learngit。

      通過git init命令把這個目錄變成Git可以管理的倉庫:

    $ git init
    Initialized empty Git repository in /home/hubwiz/learngit/.git/
    

      瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。

      如果你沒有看到.git目錄,那是因為這個目錄默認是隱藏的,用ls -ah命令就可以看見。

    添加文件

      我們了解下版本控制系統,其實只能跟蹤文本文件的改動,比如TXT文件,網頁,所有的程序代碼等等,Git也不例外。版本控制系統可以告訴你每次的改動,比如在第5行加了一個單詞“Linux”,在第8行刪了一個單詞“Windows”。而圖片、視頻這些二進制文件,雖然也能由版本控制系統理,但沒法跟蹤文件的變化,只能把二進制文件每次改動串起來,也就是只知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。

      為了簡明起見,我們創建一個readme.txt作為練習:

    echo "Git is a version control system." > readme.txt
    // 輸入這句話保存到創建的readme.txt文件中
    echo " Git is free software." >> readme.txt
    // 輸入此內容追加到readme.txt中
    

      一定要放到learngit目錄下(子目錄也行),因為這是一個Git倉庫,放到其他地方Git再厲害也找不到這個文件。

      用命令git add告訴Git,把文件添加到倉庫:

    $ git add readme.txt
    

      git add 實際上是個腳本命令,沒有任何顯示,說明添加成功。

    提交文件

      用命令git commit告訴Git,把文件提交到倉庫:

    $ git commit -m "wrote a readme file"
    [master (root-commit) cb926e7] wrote a readme file
    1 file changed, 2 insertions(+)
    create mode 100644 readme.txt
    

      簡單解釋一下git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。

      git commit命令執行成功后會告訴你,1個文件被改動(我們新添加的readme.txt文件),插入了兩行內容(readme.txt有兩行內容)。

      為什么Git添加文件需要add,commit一共兩步呢?因為commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m "add 3 files."
    

    小結

    此節知識點我們所學習的內容:

    初始化一個Git倉庫,使用git init命令。

    添加文件到Git倉庫,分兩步:

    第一步,使用命令git add <file>,注意,可反復多次使用,添加多個文件;
    第二步,使用命令git commit,完成。

    網站上還有更多內容和對應每一小節的在線練習大家可以去試試。
    http://www.hubwiz.com/course/55d301543ad79a1b05dcc4e2/

    匯智網 git

    版權聲明:本文為weixin_34324081原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_34324081/article/details/89464376

    智能推薦

    .git文件簡介

    .git文件簡介 git init的文件顯示 git clone的文件顯示 當git init的文件夾進行第一次commit操作之后兩者的文件就會變得相同: 文件以及作用: hooks 存放一些shell腳本,他的實現的功能是與響應的git動作相關,相關文檔請看這里~ info 存放一些信息,其中保存了一份不希望在 .gitignore 文件中管理的忽略的全局可執行文件 logs 記錄了本地倉庫和...

    咸魚筆記—git簡介

    咸魚筆記—git簡介 git簡介 git的兩大特點 安裝與配置 創建一個版本庫 新手剛接觸python,跟著教程學的,僅供參考。歡迎各路大神指點。 學習版本: Django 1.8. Python 3.5 git簡介 Git是一個開源的分布式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開...

    Git簡介和使用

    版本控制: 集中式與分布式: 3. Git詳解 Git的基本操作 一、配置 新建并進入目錄 初始化 查看git 配置連接(ssh key) 1.生成ssh key: ssh-******.exe -t rsa 2.進入**對生成目錄(上圖的目錄) 3.打開id_rsa.pub,拷貝內容并復制到github.com 二、操作文件 新建reademe.txt 寫入內容保存后查看狀態 向git本地倉庫添...

    Git簡介和操作

    簡介Git Git能做什么 Git是當下使用最多的代碼版本管理系統,有如下功能: Git的原理 Git工具 客戶端: 1、Git命令行工具:https://git-for-windows.github.io/ 2、Git的可視化工具:https://tortoisegit.org/ 3、IDEA內置的Git插件 最實用的是命令行工具,其次IDEA插件,可視化工具意義不大 服務端: GitHub網站...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    精品国产乱码久久久久久蜜桃不卡