欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Git原理和常用操作

 更新時(shí)間:2018年10月16日 11:21:40   作者:數(shù)據(jù)架構(gòu)師  
今天小編就為大家分享一篇關(guān)于Git原理和常用操作的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

由于gitlab的免費(fèi)私有倉庫的優(yōu)勢,所以在公司使用gitlab會(huì)多一些,對于gitlab來說,注冊需要翻墻,而登錄不需要。

關(guān)于git是做什么的,這里就不多說了。相信大家知道,這里就帶大家,一小時(shí)掌握git原理,學(xué)會(huì)git操作。

Git 工作流程

在gitlab上一般每個(gè)人或每個(gè)項(xiàng)目或者每個(gè)bug都會(huì)有自己獨(dú)立的分支。分支不影響主分支master。

一般工作流程如下:

  • 克隆 Git 資源作為工作目錄。
  • 在克隆的資源上添加或修改文件。
  • 如果其他人修改了,你可以更新資源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果發(fā)現(xiàn)錯(cuò)誤,可以撤回提交并再次修改并提交。

Git 工作區(qū)、暫存區(qū)和版本庫

這里理解git的重心。因?yàn)槲覀兪褂胓it,就是在本地電腦上,本地電腦會(huì)有自己的倉庫,可以在每個(gè)項(xiàng)目文件夾的根目錄均設(shè)置一個(gè)倉庫。本地倉庫和本地分支和遠(yuǎn)程分支是分離的??梢酝ㄟ^pull拉取遠(yuǎn)程分支到本地,或push,推送本地分支到遠(yuǎn)程分支。

  • 工作區(qū):就是你在電腦里能看到的目錄。
  • 暫存區(qū):英文叫stage, 或index。一般存放在 “.git目錄下” 下的index文件(.git/index)中,所以我們把暫存區(qū)有時(shí)也叫作索引(index)。
  • 版本庫:工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不算工作區(qū),而是Git的版本庫。

下面這個(gè)圖展示了工作區(qū)、版本庫中的暫存區(qū)和版本庫之間的關(guān)系:

圖中左側(cè)為工作區(qū),右側(cè)為版本庫。在版本庫中標(biāo)記為 “index” 的區(qū)域是暫存區(qū)(stage, index),標(biāo)記為 “master” 的是 master 分支所代表的目錄樹。

圖中我們可以看出此時(shí) “HEAD” 實(shí)際是指向 master 分支的一個(gè)”游標(biāo)”。所以圖示的命令中出現(xiàn) HEAD 的地方可以用 master 來替換。

圖中的 objects 標(biāo)識的區(qū)域?yàn)?Git 的對象庫,實(shí)際位于 “.git/objects” 目錄下,里面包含了創(chuàng)建的各種對象及內(nèi)容。

當(dāng)對工作區(qū)修改(或新增)的文件執(zhí)行 “git add” 命令時(shí),暫存區(qū)的目錄樹被更新,同時(shí)工作區(qū)修改(或新增)的文件內(nèi)容被寫入到對象庫中的一個(gè)新的對象中,而該對象的ID被記錄在暫存區(qū)的文件索引中。

當(dāng)執(zhí)行提交操作(git commit)時(shí),暫存區(qū)的目錄樹寫到版本庫(對象庫)中,master 分支會(huì)做相應(yīng)的更新。即 master 指向的目錄樹就是提交時(shí)暫存區(qū)的目錄樹。

當(dāng)執(zhí)行 “git reset HEAD” 命令時(shí),暫存區(qū)的目錄樹會(huì)被重寫,被 master 分支指向的目錄樹所替換,但是工作區(qū)不受影響。

當(dāng)執(zhí)行 “git rm --cached <file>” 命令時(shí),會(huì)直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。

當(dāng)執(zhí)行 “git checkout .” 或者 “git checkout -- <file>” 命令時(shí),會(huì)用暫存區(qū)全部或指定的文件替換工作區(qū)的文件。這個(gè)操作很危險(xiǎn),會(huì)清除工作區(qū)中未添加到暫存區(qū)的改動(dòng)。

當(dāng)執(zhí)行 “git checkout HEAD .” 或者 “git checkout HEAD <file>” 命令時(shí),會(huì)用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個(gè)命令也是極具危險(xiǎn)性的,因?yàn)椴坏珪?huì)清除工作區(qū)中未提交的改動(dòng),也會(huì)清除暫存區(qū)中未提交的改動(dòng)。

下面通過幾個(gè)常用的操作指令,通過注釋,就可以快速入手。由于大部分情況,我們并不需要在本地創(chuàng)建倉庫,所以這里就不介紹在本地創(chuàng)建倉庫了。

git安裝配置

可以參考,在這篇文章中寫過 http://www.dbjr.com.cn/article/148066.htm

git使用前配置

配置賬號密碼和編輯器。首先要讓git知道我們登錄gitlab的賬號和郵箱。git每次聯(lián)系gitlab或github都會(huì)使用我們配置的賬號和郵箱

git config --global user.name "luanpeng"
git config --global user.email xxxxx@xxxx.com

至于其他的配置,使用默認(rèn)即可。

  • 注意:每個(gè)目錄下是一個(gè)倉庫,倉庫信息通過目錄下的.git文件保存

將本地項(xiàng)目文件夾,上傳到遠(yuǎn)程倉庫指定分支的某個(gè)文件夾

要修改遠(yuǎn)程倉庫的分支內(nèi)容,需要我們先把遠(yuǎn)程倉庫的某個(gè)分支pull到本地,在本地添加修改的內(nèi)容,在push到遠(yuǎn)程。

所謂的修改包括,添加文件,刪除文件,清空文件等等。

比如我想將我的文件夾上傳到遠(yuǎn)程倉庫的luanpeng分支下的ios/server文件夾下面。

選擇一個(gè)目錄用來存儲(chǔ)遠(yuǎn)程倉庫分支的內(nèi)容。
git clone -b luanpeng git@gitlab.com:luanpeng/cloud-ai.git  將遠(yuǎn)程倉庫的分支luanpeng下載到當(dāng)前目錄。默認(rèn)master分支
cd 項(xiàng)目目錄
git branch  查看分支,顯示的就是luanpeng分支
在文件夾中對應(yīng)位置添加你的項(xiàng)目文件或文件夾,回到命令行。
git add . 添加當(dāng)前目錄下的所有文件到緩存區(qū)
git status 查看緩存區(qū)和版本庫的所有變化
git commit -m "describe" //提交監(jiān)督的內(nèi)容的變化到本地版本庫
創(chuàng)建一個(gè)遠(yuǎn)程倉庫的鏈接
git remote add cloudai git@gitlab.com:luanpeng/cloud-ai.git  使用cloudai這個(gè)名字代表遠(yuǎn)程倉庫
git push cloudai luanpeng  將當(dāng)前分支上傳到遠(yuǎn)程倉庫的分支。
git remote -v   查看遠(yuǎn)程倉庫的鏈接
git remote rm cloudai  刪除遠(yuǎn)程倉庫鏈接

如果你是自己在本地通過
git init創(chuàng)建的倉庫,想通過push上傳到遠(yuǎn)程倉庫,需要先

獲取遠(yuǎn)程庫與本地同步合并(如果遠(yuǎn)程庫不為空必須做這一步,否則后面的提交會(huì)失?。?
git pull --rebase cloudai luanpeng  將遠(yuǎn)程倉庫的分支拉取到本地

本地倉庫管理

如果你想在自己的電腦上建一個(gè)倉庫,自己管理自己的代碼,也備以后使用。可以使用下面的操作

倉庫初始化
mkdir projectdir   創(chuàng)建一個(gè)目錄
cd projectdir    進(jìn)入目錄
git init     創(chuàng)建一個(gè)倉庫,自動(dòng)創(chuàng)建master分支
手動(dòng)在工作區(qū)(也就是這個(gè)文件夾內(nèi))拷貝,剪切,修改文件
git add .     //添加當(dāng)前文件夾下的所有文件添加到緩存區(qū),手動(dòng)添加的文件,必有add以后才能被添加到緩存區(qū)
git status    查看緩存區(qū)和版本庫之間的文件差別
git commit -m "describe" //將緩存區(qū)的內(nèi)容更新到版本庫
分支
git branch   查看當(dāng)前分支
git branch -a  查看所有分支。前面帶*號的代表你當(dāng)前工作目錄所處的分支
git branch branch-name 當(dāng)前倉庫添加分支,創(chuàng)建branch-name分支。需要你向里面添加文件并提交
git checkout branch-name #切換到branch-name分支,那工作區(qū)就會(huì)只顯示該分支下的文件夾。
git branch -D branch-name 刪除本地分支 git branch --delete branch-name

遠(yuǎn)程倉庫的管理

從本地分支鏈接到遠(yuǎn)程分支,稱為跟蹤分支(tracking branch)。跟蹤分支是一種和遠(yuǎn)程分支有直接聯(lián)系的本地分支。在跟蹤分支里輸入git push,Git 會(huì)自行推斷應(yīng)該向哪個(gè)服務(wù)器的哪個(gè)分支推送數(shù)據(jù)。反過來,在這些分支里運(yùn)行g(shù)it pull 會(huì)獲取所有遠(yuǎn)程索引,并把它們的數(shù)據(jù)都合并到本地分支中來.

  • 注意:本地創(chuàng)建的遠(yuǎn)程倉庫和跟蹤分支,只是到遠(yuǎn)程倉庫和分支的鏈接

我們可以在本地管理遠(yuǎn)程倉庫或遠(yuǎn)程分支

git remote -v   查看遠(yuǎn)程倉庫的鏈接
git remote rm cloudai  刪除cloudai遠(yuǎn)程倉庫鏈接
git remote add cloudai git@gitlab.com:luanpeng/cloud-ai.git  建立一個(gè)遠(yuǎn)程倉庫的鏈接
git push cloudai :luanpeng  刪除遠(yuǎn)程倉庫的luanpeng分支
查看本地創(chuàng)建的遠(yuǎn)程分支鏈接
git branch  查看本地分支
git branch -a  查看所有分支
git branch -r  查看所有遠(yuǎn)程分支鏈接
git branch -r -d origin/branchname  刪除本地的遠(yuǎn)程分支鏈接
pull和push到遠(yuǎn)程分支
git pull <遠(yuǎn)程庫名> <遠(yuǎn)程分支名>:<本地分支名>    //拉取遠(yuǎn)程倉庫的分支,當(dāng)本地分支,本地分支可以不寫默認(rèn)為當(dāng)前分支
git pull <遠(yuǎn)程庫名> <遠(yuǎn)程分支名>
git push git@gitlab.com:luanpeng/cloud-ai.git master // 把本地倉庫提交到遠(yuǎn)程倉庫的master分支中
git remote add cloudai git@gitlab.com:luanpeng/cloud-ai.git
git push cloudai luanpeng
需要說明的是,默認(rèn)情況下這條語句等價(jià)于提交本地的master倉庫到遠(yuǎn)程倉庫,并作為遠(yuǎn)程的luanpeng分支。
git push cloudai master:luanpeng  提交本地的luanpeng分支到遠(yuǎn)程倉庫的luanpeng分支
git push cloudai :luanpeng  提交本地空分支到遠(yuǎn)程倉庫的分支,也就是刪除遠(yuǎn)程倉庫的分支
注意:我們修改了分支下的文件,都要
git add . 添加到緩存去
git commit -m "describe" 更新到版本庫
git push cloudai master:luanpeng  將版本庫中的更新到遠(yuǎn)程分支

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 兩分鐘學(xué)會(huì)如何在github托管代碼

    兩分鐘學(xué)會(huì)如何在github托管代碼

    這篇文章主要介紹了兩分鐘學(xué)會(huì)如何在github托管代碼,本篇內(nèi)容針對不會(huì)Git的小童鞋,大神們可以繞過,錯(cuò)誤之處謝謝指正
    2014-10-10
  • sublime text 添加到鼠標(biāo)右鍵功能

    sublime text 添加到鼠標(biāo)右鍵功能

    這篇文章主要介紹了sublime text 添加到鼠標(biāo)右鍵功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • sqoop如何指定pg庫的模式(方法詳解)

    sqoop如何指定pg庫的模式(方法詳解)

    sqoop是一個(gè)用來將hadoop中hdfs和關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)相互遷移的工具,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(mysql、oracle等)中的數(shù)據(jù)導(dǎo)入到hadoop的hdfs中,也可以將hdfs的數(shù)據(jù)導(dǎo)入到關(guān)系型數(shù)據(jù)庫中,本文給大家介紹sqoop如何指定pg庫的模式,一起看看吧
    2022-01-01
  • VScode中集成Git命令詳解

    VScode中集成Git命令詳解

    本文詳細(xì)講解了VScode中集成Git命令的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • VSCode開發(fā)必備插件推薦(墻裂推薦!)

    VSCode開發(fā)必備插件推薦(墻裂推薦!)

    vscode是微軟開發(fā)的的一款代碼編輯器,就如官網(wǎng)上說的一樣,vscode重新定義(redefined)了代碼編輯器,下面這篇文章主要給大家介紹了關(guān)于VSCode必備插件推薦的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • HTTP協(xié)議詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    HTTP協(xié)議詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了HTTP協(xié)議詳解,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器
    2017-07-07
  • SpringSecurity框架簡介及與shiro特點(diǎn)對比

    SpringSecurity框架簡介及與shiro特點(diǎn)對比

    這篇文章是SpringSecurity框架的入門篇,主要為大家介紹了SpringSecurity框架簡介及與shiro優(yōu)缺點(diǎn)對比有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法

    一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法

    這篇文章主要介紹了一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • VSCode 最全實(shí)用插件小結(jié)

    VSCode 最全實(shí)用插件小結(jié)

    VSCode插件可以幫助你更方便的操作,本文主要介紹了VSCode 最全實(shí)用插件小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 程序員編程從初級到中級的10個(gè)秘訣

    程序員編程從初級到中級的10個(gè)秘訣

    在一封與TechRepublic會(huì)員交流的郵件當(dāng)中,他提到了面向程序員的博客、文章及雜志分成兩類:面向初學(xué)者類(“hello world”這種類型的教程)以及面向?qū)<翌悾∕SDN雜志)。
    2011-02-02

最新評論