• <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,Github和Gitlab簡介和使用方法

    標簽: Git  Github  Gitlab

    [日期:2016-08-04] 來源:簡書 作者:frogoscar [字體: ]

    來源:https://www.jianshu.com/p/8d497989f704

    這年頭不知道Git, 還真不好意思出門跟人家打招呼!

    不過假如您不知道, 或者不是太清楚, 那也沒關系。可以先跟我打個招呼, 看完這篇文章, 就可以跟別人去打招呼了。:P

    什么是Git

    Git是一個版本控制系統(Version Control System,VCS)。

    版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。

    多年前,我在法國做第一個實習時(2011年),那時候自己編程還在入門階段,根本沒聽過版本控制系統。

    那時候真是蠢(現在也沒好到哪里去),每次修改多一點的代碼,就要復制、黏貼整個項目目錄。因此,公司的電腦里有著幾十個項目的副本(簡直了)。

    前不久,我看到公司的一個實習生也在做和我多年前同樣的事。而且我們問他,他說沒聽說過版本控制系統…

    現在,我用Git也有幾年了吧。絕對是越用越爽,不用不爽;一朝使用,愛不釋手。

    每天到公司第一件事,開電腦;第二件事,在終端中切換到項目目錄,然后輸入Git命令。

    有了版本控制系統,就可以不用擔心文件丟失,不小心誤修改文件等等“事故”,而且你可以隨便回到歷史記錄的某個時刻。

    SVN, CVS這類早期的集中式版本控制系統,都有一個單一的集中管理的服務器,保存所有文件的修訂版本,而協同工作的人們都通過客戶端連到這臺服務器,取出最新的文件或者提交更新。

    它們的原理類似下圖:

    集中式版本控制系統

    而Git或Mercurial這類分布式版本控制系統, 才是現代的首選。因為分布式的優勢絕對顯著。

    在分布式版本控制系統里,客戶端并不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。

    這么一來,任何一處協同工作用的服務器發生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對代碼倉庫的完整備份。

    分布式版本控制系統

    現在,Google, Facebook, Microsoft等世界級公司每天在用Git。

    眾所周知,IT界大牛很多, 但是大牛中的大牛稀少。

    Linus Torvalds就是其中之一。

    Linus Torvalds不但開創了Linux操作系統(當然了, 開源社區對Linux貢獻極大, 參看我的 【Linux探索之旅】開宗明義+第一部分第一課:什么是Linux? ), 而且他發明了Git版本控制系統。

    現在的Android系統底層就是基于更改過的Linux系統,你說Linus Torvalds是不是貢獻極大。

    Git的誕生很有趣:

    2005年Linux 內核開發社區正面臨嚴峻的挑戰:他們不能繼續使用 BitKeeper(一個分布式版本控制系統) 了(原因是當時Bitkeeper 著作權所有者決定收回授權,內核開發團隊與其協商無果),而又沒有其他的 SCM (Software Configuration Management)可滿足他們的分布式系統的需求。

    Linux 之父 Linus Torvalds 接受了這個挑戰,決定開發一個新的版本控制系統。周末他消失了,新的一周,Git 問世了。LT就是威武。

    Atlassian為Git做了一個10年的紀錄圖。

    https://www.atlassian.com/git/articles/10-years-of-git/

    Git配置和常用命令

    安裝Git很簡單,在Ubuntu等Debian族的Linux系統上,只要輸入下面命令:

    sudo apt-get install git-all

    關于安裝Git,可以看這個鏈接

    https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

    安裝完Git就可以對其做一些配置。

    Git有一個工具被稱為git config,它允許你獲得和設置配置變量;這些變量可以控制Git的外觀和操作的各個方面。這些變量可以被存儲在三個不同的位置:

    /etc/gitconfig 文件:包含了適用于系統所有用戶和所有庫的值。如果你傳遞參數選項’–system’ 給 git config,它將明確的讀和寫這個文件。

  • ~/.gitconfig 文件 :具體到你的用戶。你可以通過傳遞–global 選項使Git 讀或寫這個特定的文件。

  • 位于git目錄的config文件 (也就是 .git/config) :無論你當前在用的庫是什么,特定指向該單一的庫。每個級別重寫前一個級別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。


    我的Git config(配置)列表:

    我的Git config(配置)列表

    這個配置就在你的個人目錄的.gitconfig(有一個點哦, 不用ls -al是看不到的)文件中, 你可以用vim來打開編輯內容 (vim ~/.gitconfig), 我的內容如下

    [user]    
        name = Enming Xie    
        email = enming.xie@blabla.fr
    [color]    
        ui = auto
    [alias]    
        st = status    
        pl = pull --ff-only    
        ps = push    
        co = checkout    
        ci = commit    
        df = difftool    
        cp = cherry-pick    
        ca = commit --amend    
        br = branch    
        l = log --stat    
        last = log -1    
        lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit    
        up = push origin    
        lf = log --follow -p    
        aa = ls-files --modified    
        su = status -uno    
        cm = commit -m    
        uf = push origin -f    
        cl = clean -fdx    
        fe = fetch --prune    
        cf = clean -fdx    
        bd = branch -D    
        cb = checkout -b
    [push]    
        default = simple
    [core]    
        editor = vim    pager = less -+F
    [diff]    
        tool = meld
    [difftool]    
        prompt = false
    [merge]    
        tool = meld
    [init]    
        templatedir = ~/.git_template

    因為我比較喜歡偷懶(程序員需要學會偷懶好么), git命令有幾個太長的, 我就用alias(別名)來替代了, 這樣平時輸入git命令就快了很多, 簡直飛起!

    我最常用的Git命令(全名,沒用alias之前):

    1. git checkout
    2. git status
    3. git checkout -b
    4. git commit
    5. git diff
    6. git add
    7. git clean -fdx
    8. git fetch --prune
    9. git pull --ff-only
    10. git branch -D
    11. git push
    12. git merge
    13. git rm
    14. git rebase
    15. git reset
    16. git revert
    17. git push origin :yourbranch

    Git必看書籍

    Pro Git這本書(也可以看其電子版)絕對是Git入門和進深的不二選擇。

    我的同桌說:他進公司時,被要求先讀兩遍這本書。

    英文版:

    https://git-scm.com/book/en/v2

    中文版:

    https://git-scm.com/book/zh/v2

    Github

    Github和Git是兩回事。

    Git是版本控制系統,Github是在線的基于Git的代碼托管服務。

    GitHub是2008年由Ruby on Rails編寫而成。GitHub同時提供付費賬戶和免費賬戶。這兩種賬戶都可以創建公開的代碼倉庫,但是付費賬戶也可以創建私有的代碼倉庫。

    為什么現在Github這么火,以至于世界頂級公司和項目的源碼很多都托管在Github上,首先:

    顏值高!

    現在這世代還是得看看顏值的。你說Sourceforge等代碼托管網站也年歲很久了,為什么沒有Github那么火呢?

    關鍵是Github長得好看(你長這么好看,說什么都是對的)。

    對比Github和Sourceforge

    Github

    Github

    Sourceforge

    反正我看了Github再來看Sourceforge的主頁,我已經不想用Sourceforge了。

    軟件的顏值體現了設計者的審美觀以及設計能力。

    2011年,Github已經取代Sourceforge,成為最活躍的代碼交流社區。這意味著在Open Source Community(開源社區),Git取代了SVN已經成為事實。

    而且,Github現在都快成為程序員簡歷的一個重要加分條件了。

    如果你的簡歷里放上你的Github鏈接,招聘者通過你對開源項目的貢獻和你自己的項目代碼,就可以對你的水準了解大概(我還沒把我的項目都放到Github上,慢慢來吧)。

    Linus Torvalds的Github頁面

    https://github.com/torvalds

    Gitlab

    Github有個小缺陷 (也不能算是缺陷吧), 就是你的repo(repository的縮寫,表示“倉庫”)都需要public(公開), 如果你想要創建private(私人)的repo, 那得付錢。

    不過, 幸好, Gitlab解決了這個問題, 可以在上面創建免費的私人repo。

    比如我們公司就是用Gitlab來管理項目的( 【程序員】項目經理如何調動組員積極性 )。

    我在公司的Gitlab

    可以看到,我是從2015年10月12日在Ercom公司工作的,一直活躍度還不錯(必須為中國人爭光么,我可是組里最努力的)。

    再看我個人的Gitlab賬戶頁面,至今只有幾個項目,因為大部分都開源在Github上。

    我的個人Gitlab

    要創建Gitlab的新項目很簡單,和Github類似,只要點擊New Project按鈕,填寫基本信息即可。

    創建項目按鈕

    填寫Gitlab項目信息

    可以看到,項目的默認屬性是Private(私人的),當然,你也可以選擇Public(公開的)或Internal(內部的)。

    怎么樣,Github和Gitlab很酷吧。

    快去試試Git吧, 再不趕緊, “女神”都老了 (沒關系, 用git reset或者revert或者git rebase可以重回美好時光)!




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

    智能推薦

    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_...

    猜你喜歡

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    styled-components —— React 中的 CSS 最佳實踐

    https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    19.vue中封裝echarts組件

    19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...

    劍指Offer39-調整數組順序使奇數位于偶數前面

    一開始想著用冒泡排序的方法來做,但是bug還是很多,后來看了評論區答案,發現直接空間換時間是最簡單的,而且和快排的寫法是類似的。...

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