Git與github

Git分布式版本控制工具

Git概述和基本使用

git分布式版本管理與svn(cvs)對(duì)比

  1. 類(lèi)型:git是開(kāi)源的分布式版本控制系統(tǒng) ,svn是集中式版本控制系統(tǒng)

  2. 架構(gòu):git包括工作目錄留晚、暫存區(qū)笔链、本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)己儒。 svn包括工作目錄和中央倉(cāng)庫(kù)

  3. 分支修改:git分支結(jié)構(gòu)只要不提交合并到遠(yuǎn)程倉(cāng)庫(kù)蓖议,對(duì)其他共同開(kāi)發(fā)者沒(méi)有影響,svn只有一個(gè)目錄腥刹,是完整目錄贱鼻,改變分支宴卖,其他共同開(kāi)發(fā)者都會(huì)改變

  4. 分支匹配:git本地倉(cāng)庫(kù)分支和遠(yuǎn)程倉(cāng)庫(kù)分支可以自由匹配,svn是全局統(tǒng)一的

  5. 內(nèi)部數(shù)據(jù)存儲(chǔ)方式:git統(tǒng)一存儲(chǔ)管理元數(shù)據(jù)邻悬,存放在項(xiàng)目根目錄下.git文件里症昏,svn是以文件的形式存放管理,與工作區(qū)文件存放在一起

  6. git強(qiáng)調(diào)個(gè)體父丰。速度快肝谭、靈活。公共服務(wù)器壓力和數(shù)據(jù)量都不會(huì)太大蛾扇,離線(xiàn)工作攘烛,svn只有一個(gè)單一的集中管理服務(wù)器,容易出現(xiàn)單點(diǎn)故障镀首,容易負(fù)載過(guò)重

git特點(diǎn)

  • 最優(yōu)的存儲(chǔ)能力

  • 非凡的性能

  • 開(kāi)源的

  • 很容易做備份

  • 支持離線(xiàn)操作

  • 很容易定制工作流程

使用git的web管理平臺(tái):github坟漱、coding、碼云更哄、gitlab(開(kāi)放源代碼靖秩,自帶持續(xù)集成)、BitBucket竖瘾、Gerrit、百度效率云等

git安裝和使用

  • 安裝:在 https://git-scm.com/ 下載根據(jù)說(shuō)明安裝花颗,或者下載免安裝版本捕传,配置git環(huán)境

  • git配置用戶(hù)名和郵箱

    $ git config --global user.name 'your_name'
    $ git config --global user.email 'your_email@domain.com'
    //除了設(shè)置global還可以設(shè)置--local、--system
    //local只對(duì)某個(gè)倉(cāng)庫(kù)生效
    //global對(duì)當(dāng)前用戶(hù)所有倉(cāng)庫(kù)有效
    //system對(duì)系統(tǒng)所有登錄的用戶(hù)有效
    //顯示config的配置加--list
    $ git config --list --local
    
  • git創(chuàng)建或初始化倉(cāng)庫(kù)

  • git init//把項(xiàng)目納入git管理
    git init filename//創(chuàng)建文件夾扩劝,并納入git管理
    git log //查看提交信息
    cp ../exportapp/readme.md . //從exportapp目錄下拷貝文件到當(dāng)前倉(cāng)庫(kù),需要加點(diǎn)
    git add readme.md// 添加文件到暫存區(qū)
    

Git常用命令

git config --list --localgit init//把項(xiàng)目納入git管理git init filename//創(chuàng)建文件夾庸论,并納入git管理git log //查看提交信息cp ../exportapp/readme.md . //從exportapp目錄下拷貝文件到當(dāng)前倉(cāng)庫(kù),需要加點(diǎn)cp -r ../EclipseAdt/lib . //拷貝文件夾需要加上-rgit add readme.md// 添加文件到占存取git add index.html images //add命令后邊可以跟多個(gè)文件和目錄git status //查看當(dāng)前工程狀態(tài)git commit -m'Add readme' //將暫存區(qū)的代碼提交到本地倉(cāng)庫(kù)(此時(shí)用戶(hù)優(yōu)先local然后global)ls -al//查看當(dāng)前目錄下文件vi index.html//使用vi編輯器編輯文件;按Esc輸入冒號(hào)退出編輯git add -u //update职辅,把所有被跟蹤的文件一起添加到暫存區(qū)git rm index.html//刪除暫存區(qū)指定文件 mv index.html index.htm(重命名三步,此命令執(zhí)行后暫存區(qū)有兩個(gè)文件)git mv index.htm index.html//重命名文件git log --oneline//簡(jiǎn)潔方式查看loggit log -n2 //查看最近兩次(后面可以加--oneline)

git rm lib -r -f //git刪除指定文件夾和其下所有文件

git branch -v//查看所有本地分支git branch命令git checkout -b temp e82c332(分支名)//用歷史分支創(chuàng)建一個(gè)臨時(shí)分支

git checkout master//切換分支

git merge temp//合并分支

git tag -a 53d3d6c -m 'my 53d3d6c tag'

git branch -d fix_readme/git branch -D fix_readme//刪除分支

git commit -am'Add test'//把工作區(qū)直接創(chuàng)建到歷史版本庫(kù),其實(shí)就是把a(bǔ)ddhe-m合并一句使用git log (--oneline) --all//log命令默認(rèn)查看當(dāng)前分支,查看所有添加allgit log --oneline --all (-n4) --graph//圖形化查歷史看關(guān)聯(lián)或版本演進(jìn)git help --web log//通過(guò)瀏覽器查看git指令

gitk //啟動(dòng)git圖形化界面

git fetch origin master//代碼拉取git pull origin master //拉取并合并兩步

git remote add origin <address> //連接遠(yuǎn)程git push -u origin master //指定默認(rèn)主機(jī)提交代碼git push origin master

Gt圖形化界面

5c86efabc4511
5c86efabc4511

.git目錄

  • HEAD:指明我們當(dāng)前工作在哪個(gè)分支下

  • config:文件用戶(hù)信息(name/email)的配置信息

  • res:包含分支和標(biāo)簽(關(guān)鍵版本添加tag)信息

  • tags:標(biāo)簽信息

  • objects:樹(shù)結(jié)構(gòu)信息,包含tree聂示、blob

git核心對(duì)象:commit域携、tree、blob

5c86f6528e85b
5c86f6528e85b
一個(gè)commit對(duì)應(yīng)一顆樹(shù)鱼喉,即當(dāng)前commit對(duì)應(yīng)的視圖,包含commit當(dāng)時(shí)所有文件的快照秀鞭,tree是樹(shù),可能對(duì)應(yīng)的是一個(gè)文件夾扛禽,文件下可能也有樹(shù)锋边,也可能是一個(gè)blob(文件),blob和文件名沒(méi)有關(guān)系,它看的是文件內(nèi)容

Git探秘

Git使用和遇到的問(wèn)題

  • git tag -a 53d3d6c -m 'branchAmey tag' //一個(gè)里程碑式的版本添加一個(gè)tag

  • 數(shù)一數(shù)tree的個(gè)數(shù)

    • mkdir doc// 創(chuàng)建一個(gè)文件夾

    • echo "hello,word" > readme//創(chuàng)建readme编曼,并寫(xiě)入內(nèi)容

    • git add doc/git commit //把內(nèi)容提交

    • find .git/objects -type f //查看objects下有幾個(gè)對(duì)象

    • git cat-file -t 02fe07b//查看產(chǎn)生的object對(duì)象類(lèi)型

    • git cat-file -p 02fe07b//查看產(chǎn)生的object對(duì)象內(nèi)容

    • 一個(gè)文件夾下一個(gè)文件提交產(chǎn)生四個(gè)對(duì)象豆巨,一個(gè)commit(tree)一個(gè)文件名(tree)一個(gè)內(nèi)容(blob)一個(gè)文件夾(tree)

  • detached HEAD(分離頭指針)--隨意切換某個(gè)分支

    • 本質(zhì)上就是在沒(méi)有分支的狀態(tài)下工作,你做了很多變更直接切換了分支,變更可能會(huì)丟失

    • 嘗試性變更反而有好處

    • git branch fix_edit 3d4651d //對(duì)沒(méi)有分支的commit在切換后創(chuàng)建分支

  • HEAD和branch

    • git checkout -b fix_readme master//創(chuàng)建并切換到新分支掐场,HEAD指向也會(huì)變

    • git diff 3ff43d7d62cf 53d3d6c4e//比較兩個(gè)分支的不同

    • git diff HEAD HEAD^1 //HEAD和父分支進(jìn)行比對(duì)

  • commit的描述與合并

    • git commit --amend//修改剛提交的commit描述

    • git rebase -i e82c3322f6//變更某個(gè)歷史commit描述.指定父commit,把pick改為r,然后修改

    • git rebase --abort//退出rebase狀態(tài)

    • git rebase -i e82c3322f6//把子commit修改為s往扔,表示合并到一個(gè)commit

    • git rebase --continue//rebase vi終斷

    • git merge temp//合并分支

    • git commit -c commitID//當(dāng)rebase -i錯(cuò)誤時(shí)先add然后指定commit

  • git忽略文件

  • git備份

    `啞協(xié)議傳輸進(jìn)度不可見(jiàn),智能協(xié)議傳輸速度比啞協(xié)議快 `
    
    • 啞協(xié)議(/path/to/repo.git):本地協(xié)議熊户、智能協(xié)議(file:///path/to/repo.git)萍膛、http/https協(xié)議、ssh協(xié)議

    • 本地倉(cāng)庫(kù)備份和同步

      • git clone --bare /g/workcode/AndroidCode/will/.git ya.git //本地啞協(xié)議備份

      • git clone --bare file:///g/workcode/AndroidCode/will/.git zhineng.git //本地智能協(xié)議備份

      • git remote show| git remote show//查看遠(yuǎn)程關(guān)聯(lián)

      • git remote add zhineng file:///g/workcode/AndroidCode/666-backup/zhineng.git// 遠(yuǎn)程關(guān)聯(lián)本地倉(cāng)庫(kù)

      • git push --set-upstream zhineng dev // 新增本地更改提交到遠(yuǎn)程倉(cāng)庫(kù)

Git與github誕生

  • git 出現(xiàn)前

    • 程序員之間協(xié)作編程方式少

    • 即使有svn敏弃,與開(kāi)源團(tuán)隊(duì)合作也要獲得管理員許可才能ferk分支

      • 許多時(shí)候批準(zhǔn)過(guò)程比寫(xiě)代碼時(shí)間還長(zhǎng)

      • 許多開(kāi)源項(xiàng)目都受到權(quán)限問(wèn)題以及其它一些低效率問(wèn)題困擾

  • git誕生后

    • 發(fā)展

      • 開(kāi)源領(lǐng)域經(jīng)歷文藝復(fù)興

      • Linux受到追捧

      • 第一個(gè)web2.0出現(xiàn)

      • 開(kāi)源項(xiàng)目的合作變的很容易

      • 許多公司將項(xiàng)目遷移到開(kāi)源服務(wù)器

    • 不足

      • 無(wú)法幫助開(kāi)發(fā)人員尋找開(kāi)源項(xiàng)目

      • 開(kāi)發(fā)的開(kāi)源項(xiàng)目很難讓他人知道

  • Github誕生與發(fā)展

    • 讓git更好用卦羡,讓團(tuán)隊(duì)協(xié)作與編寫(xiě)軟件變的輕松、安全麦到,遠(yuǎn)程協(xié)作更方便

    • 開(kāi)源和尋找開(kāi)源項(xiàng)目變得容易,互相學(xué)習(xí)鑒戒提升變的高效

    • 2007-2011-代碼協(xié)作與軟件社交绿饵,用戶(hù)突破100萬(wàn),庫(kù)存200萬(wàn)

    • 2012-2015-從快速增長(zhǎng)到無(wú)處不在瓶颠,用戶(hù)280萬(wàn)拟赊,庫(kù)存460萬(wàn)

    • 2015-2018-全球擴(kuò)張,用戶(hù)3千萬(wàn)粹淋,庫(kù)存9千萬(wàn)

GitHub使用

注冊(cè)帳號(hào)與配置

創(chuàng)建Hello Word項(xiàng)目

  • 在github創(chuàng)建新倉(cāng)庫(kù),組織名為個(gè)人借杰,倉(cāng)庫(kù)名是項(xiàng)目名过吻,選擇是否公開(kāi),選擇編程語(yǔ)言自動(dòng)添加git忽略文件,選擇自動(dòng)創(chuàng)建說(shuō)明文件,選擇公開(kāi)聲明自動(dòng)創(chuàng)建LICENSE

  • git remote ssh連接,git fetch origin master拉取合并遠(yuǎn)程代碼

  • git merge --allow-unrelated-histories githubWill/master//讓沒(méi)有關(guān)聯(lián)的本地和遠(yuǎn)程分支合并

  • git push githubWill master//提交代碼到遠(yuǎn)程倉(cāng)庫(kù)

  • git merge githubWill/feature/add_gitcommands //合并代碼到遠(yuǎn)程倉(cāng)庫(kù)

  • 不同的用戶(hù)修改了文件,用戶(hù)需要先拉取纤虽,在提交乳绕,然后合并

  • 不同用戶(hù)修改了同一個(gè)文件的名稱(chēng),只需要把協(xié)商好的文件名提交逼纸,其它刪除,其它用戶(hù)修改了文件名洋措,你只需要拉取代碼就好,你修改文件內(nèi)容git會(huì)自動(dòng)識(shí)別

  • git push -f //命令強(qiáng)制提交杰刽,會(huì)替換遠(yuǎn)程倉(cāng)庫(kù)內(nèi)容,包括提交記錄

  • 禁止向集成分支執(zhí)行變更歷史的操作

github搜索

  • Advanced search高級(jí)搜索

  • 搜索關(guān)鍵字+in:readme(>1000) 能搜索出更多項(xiàng)目

  • blog easily start in:readme stars:>5000:搜索容易使用的博客項(xiàng)目

  • help下搜索search查看搜索技巧

github團(tuán)隊(duì)協(xié)作開(kāi)發(fā)企業(yè)級(jí)項(xiàng)目

gitLab的使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菠发,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子专缠,更是在濱河造成了極大的恐慌雷酪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涝婉,死亡現(xiàn)場(chǎng)離奇詭異哥力,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)墩弯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)吩跋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渔工,你說(shuō)我怎么就攤上這事锌钮。” “怎么了引矩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵梁丘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我旺韭,道長(zhǎng)氛谜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任区端,我火速辦了婚禮值漫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘织盼。我一直安慰自己杨何,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布沥邻。 她就那樣靜靜地躺著危虱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唐全。 梳的紋絲不亂的頭發(fā)上槽地,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼捌蚊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛近弟,可吹牛的內(nèi)容都是我干的缅糟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼祷愉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窗宦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起二鳄,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赴涵,失蹤者是張志新(化名)和其女友劉穎订讼,沒(méi)想到半個(gè)月后髓窜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欺殿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年寄纵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脖苏。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡程拭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棍潘,到底是詐尸還是另有隱情恃鞋,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布亦歉,位于F島的核電站恤浪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鳍徽。R本人自食惡果不足惜资锰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阶祭。 院中可真熱鬧绷杜,春花似錦、人聲如沸濒募。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瑰剃。三九已至齿诉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粤剧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工歇竟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抵恋。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓焕议,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親弧关。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盅安,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在這個(gè)年紀(jì)我有好多事情想做,
    如你一般9閱讀 73評(píng)論 0 0
  • 和朋友聊天很多東西自己雖然明白但是不能頓悟世囊。聊到過(guò)往各種事情别瞭,發(fā)現(xiàn)很多東西既簡(jiǎn)單又復(fù)雜。簡(jiǎn)單是事情本身株憾。復(fù)雜的人心...
    秋艷洞見(jiàn)閱讀 549評(píng)論 0 0
  • 每年的這個(gè)時(shí)節(jié)蝙寨,我的櫻桃樹(shù)都會(huì)含苞待放的,那嬌羞羞的花苞在春機(jī)里号胚,顯示著自己獨(dú)有的個(gè)性籽慢。 它每天都會(huì)有花苞悄悄地開(kāi)...
    李品香閱讀 2,084評(píng)論 29 60
  • 一 大學(xué)時(shí)箱亿,閨蜜跟我說(shuō),她們專(zhuān)業(yè)的一位老師丑出天際弃秆,“我們同學(xué)都說(shuō)她的才華被長(zhǎng)相詆毀了一半”届惋,閨蜜跟我說(shuō)。 經(jīng)不住...
    羽宙兒閱讀 186評(píng)論 0 0