<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          30分鐘吃掉Git和GitHub常用操作

          共 5519字,需瀏覽 12分鐘

           ·

          2021-09-15 13:19

          一,GitHub是什么

          GitHub是一個非常流行的全球代碼托管平臺,基于Git版本控制技術(shù)實現(xiàn),同時GitHub也是一個活躍的開發(fā)者交流社區(qū)。許多的開源項目都在GitHub上發(fā)布。例如著名的Linux操作系統(tǒng)內(nèi)核的源代碼。

          公眾號后臺回復(fù)關(guān)鍵字:"Git",獲取本文markdown源碼和Git免費(fèi)視頻教程。

          二,Git是什么

          Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)。

          它由Linux系統(tǒng)之父Linus Torvalds在2005年用C語言開發(fā)。

          Git是一個分布式版本控制系統(tǒng),沒有中央服務(wù)器,不同于svn等需要中央服務(wù)器的集中式版本控制系統(tǒng)。

          Git的功能:版本控制(版本管理,遠(yuǎn)程倉庫,分支協(xié)作)

          人工版本管理:

          Git版本管理:

          三,Git功能原理

          • git版本控制系統(tǒng)由工作區(qū),緩存區(qū),版本庫組成。
          • git跟蹤的是文件的修改而不是全部文件。
          • git擅長管理代碼等文本文件,不擅長管理圖片等二進(jìn)制文件。

          四,快速上手

          1,安裝Git

          下載位置: Git下載鏈接—— https://git-scm.com/downloads

          可以在bash中執(zhí)行g(shù)it命令,也可以在Jupyter Notebook中執(zhí)行.

          2,配置用戶信息

          git config --global user.name "XX"
          git config --global user.email "XX@XX"

          3,新建文件夾并切入

          mkdir git-learn
          cd git-learn

          4,創(chuàng)建倉庫

          git init

          5,新建readme.txt

          echo "hello world" >>readme.txt

          6,查看當(dāng)前狀態(tài):

          git status

          7,添加全部修改到暫存區(qū)并提交

          git add -A
          git commit -m"comment" 

          8,添加github遠(yuǎn)程庫并推送倉庫

          git remote add origin https://github.com/XX/XX
          git push -u origin master

          9,在github上的項目clone到本地文件

          git clone https://github.com/XX/XX  ../XX

          五,安裝配置

          命令列表:

          • config(配置信息)
          • init(創(chuàng)建倉庫)
          • help(幫助信息)
          • status(當(dāng)前狀態(tài))

          特殊文件:

          • .gitignore過濾文件(配置git無需管理的目錄和文件)

          示范1:基本配置

          #設(shè)置用戶名:
          git config --global user.name "XXX"
          #設(shè)置用戶郵箱:
          git config --global user.email "XXX@XX"
          #初始化倉庫
          git init 

          示范2:獲取幫助

          #獲取常用git命令列表:
          git help
          #查看當(dāng)前狀態(tài),獲取提示:
          git status

          示范3:建立.gitignore過濾配置文件

          #過濾掉.DS_store文件
          echo ".DS_store" >.gitignore
          #過濾掉.ipynb_checkpoints目錄
          echo ".ipynb_checkpoints/" >> .gitignore
          #過濾掉所有zip文件
          echo "*.zip" >>.gitignore 

          六,版本管理

          命令列表:

          • add(修改暫存)
          • commit(提交修改)
          • reset(版本回退)
          • checkout(撤銷修改)
          • rm(刪除文件)
          • diff(比較文件)
          • log(版本列表)
          • reflog(版本歷史)

          git reset的說明:

          git reset HEAD^ #可以回退到上一個版本。
          git reset HEAD^^ #可以回退到上上個版本。
          git reset a234b3 #可以回退到版本號為 a234b3的版本。
          git reset --hard  head^   #修改版本庫,保留暫存區(qū),保留工作區(qū)
          git reset --mixed head^  #修改版本庫,修改暫存區(qū),保留工作區(qū)
          git reset --soft  head^  #修改版本庫,保留暫存區(qū),保留工作區(qū)

          示范1:版本提交

          echo "hello world" >>readme.txt
          git add readme.txt
          git add -A
          git commit -m"add readme.txt"
          #修改覆蓋上一次commit:
          git commit --amend
          #先暫存再提交:
          git commit -a -m"modify readme.txt"

          示范2:版本回退

          git reset --hard head^
          git reset head a23b5
          #撤銷修改:
          git checkout -- readme.txt
          #圖形顯示倉庫版本及分支狀態(tài):
          git log --oneline --graph --all
          #查看head指向過的版本歷史:
          git reflog

          示范3:日志壓縮

          git reset --soft a23b5 #版本庫回退到某個版本,工作區(qū)保留修改
          git commit -m 'add feature' #將工作區(qū)的修改寫到版本庫中,a23b5到當(dāng)前的日志被刪除

          示范4:撤銷修改

          echo "hello Haidian">>readme.txt
          git checkout -- readme.txt #使用暫存區(qū)內(nèi)容覆蓋文件

          示范5:版本對比

          #查看工作區(qū)文件與暫存區(qū)文件區(qū)別:
          git diff  readme.txt
          #查看工作區(qū)文件和head文件區(qū)別:
          git diff --head readme.txt
          #查看暫存區(qū)文件與head文件區(qū)別:
          git diff --cached readme.txt
          #查看兩個版本某一文件的區(qū)別:
          git diff a458b d23e5 -- readme.txt

          七,遠(yuǎn)程倉庫

          命令列表:

          • remote(設(shè)置遠(yuǎn)程)
          • push(推送遠(yuǎn)程)
          • clone(克隆遠(yuǎn)程)
          • pull(合并遠(yuǎn)程)
          • fetch(拉取遠(yuǎn)程)

          遠(yuǎn)程倉庫說明:

          #通??梢杂肧SH協(xié)議和遠(yuǎn)程庫通信或使用http協(xié)議和遠(yuǎn)程庫通信。
          #http協(xié)議較為方便,但SSH協(xié)議方式速度較快。
          #運(yùn)行下面命令,并一路回車,在用戶主目錄里找到.ssh目錄。
          ssh-keygen -t rsa -C "[email protected]"
          #目錄下的id_rsa有私鑰,不能泄露出去。里面的id_rsa.pub是公鑰,可分享給別人。
          #在GitHub——> settings ——> SSH Keys 頁面添加SSH公鑰。
          #將公鑰綁定github后嘗試建立SSH連接:
          ssh -T [email protected]

          示范1:添加遠(yuǎn)程

          #使用ssh地址添加github遠(yuǎn)程庫連接并命名為github,ssh方式更穩(wěn)定快速,但稍麻煩:
          git remote add github [email protected]:lyhue1991/ai.git:
          #使用url地址添加遠(yuǎn)程庫,url方式更簡單:
          git remote add origin https://github.com/lyhue1991/GitHub.git

          示范2:推送到遠(yuǎn)程

          #推送本地至遠(yuǎn)程庫origin的master分支:
          git push -u origin master
          #查看遠(yuǎn)程庫信息:
          git remote -v
          #移除和遠(yuǎn)程庫的連接:
          git remote remove orgin

          示范3:拉取遠(yuǎn)程

          #建立當(dāng)前master分支與遠(yuǎn)程庫develop分支的追蹤關(guān)系:
          git branch --set-upstream master origin/develop
          #將遠(yuǎn)程倉庫克隆到本地父目錄的ML文件夾:
          git clone https://github.com/lyhue1991/machine-learning.git ../ML

          #取回origin的develop分支與當(dāng)前master分支合并(或會沖突):
          git pull orgin/develop:master

          #獲取origin的develop分支到本地并用merge合并(pull≈fetch+merge):
          git fetch origin develop
          git merge origin/develop  

          八,分支協(xié)作

          命令列表:

          • branch(設(shè)置分支)
          • checkout(切換分支)
          • merge(合并分支)
          • cherry-pick(采集提交)
          • rebase(重演分支)
          • stash(儲藏管理)
          • tag(標(biāo)簽管理)

          示范1:切換分支

          #查看分支信息:
          git branch
          #當(dāng)前head位置新建develop分支:
          git branch develop
          #創(chuàng)建并切換到名稱為feature的新分支:
          git checkout -b feature
          #切換至master分支:
          git checkout master

          示范2:分支整合

          #head處于develop分支,合并feature分支(或會沖突):
          git merge  --no-ff -m"merge feature"  feature
          #采集其它分支中版本號為a458b的commit提交至當(dāng)前分支(或會沖突):
          git cherry-pick a458b
          #使用當(dāng)前所在分支作為base重演develop分支(或會沖突):
          git rebase develop

          示范3:儲藏和標(biāo)簽

          git stash;
          git stash pop;
          git stash list;
          git stash save "message"
          git stash apply @2
          git tag;
          git tag v1.0;
          git tag v0.9 a2543d;
          #推送標(biāo)簽到遠(yuǎn)程(標(biāo)簽不會自動推送)
          git push origin v1.0
          #刪除遠(yuǎn)程標(biāo)簽(先刪本地,再push):
          git tag -d v0.9
          git push origin :refs/tags/v0.9

          git分支管理最佳實踐:

          • master: 主分支,主要用來版本發(fā)布。
          • develop:日常開發(fā)分支,該分支正常保存了開發(fā)的最新代碼。
          • feature:具體的功能開發(fā)分支,只與 develop 分支交互。
          • release:release 分支可以認(rèn)為是 master 分支的未測試版。比如說某一期的功能全部開發(fā)完成,那么就將 develop 分支合并到 release 分支,測試沒有問題并且到了發(fā)布日期就合并到 master 分支,進(jìn)行發(fā)布。
          • hotfix:線上 bug 修復(fù)分支。

          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品久久丫 | 啊啊啊草逼 | 苍井空A连接 | 骚逼一区| 蜜桃网站视频无码高清 |