由于gitlab的免費私有倉庫的優(yōu)勢,所以在公司使用gitlab會多一些,對于gitlab來說,注冊需要翻墻,而登錄不需要。
關(guān)于git是做什么的,這里就不多說了。相信大家知道,這里就帶大家,一小時掌握git原理,學(xué)會git操作。
Git 工作流程
在gitlab上一般每個人或每個項目或者每個bug都會有自己獨立的分支。分支不影響主分支master。
一般工作流程如下:
- 克隆 Git 資源作為工作目錄。
- 在克隆的資源上添加或修改文件。
- 如果其他人修改了,你可以更新資源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果發(fā)現(xiàn)錯誤,可以撤回提交并再次修改并提交。
Git 工作區(qū)、暫存區(qū)和版本庫
這里理解git的重心。因為我們使用git,就是在本地電腦上,本地電腦會有自己的倉庫,可以在每個項目文件夾的根目錄均設(shè)置一個倉庫。本地倉庫和本地分支和遠程分支是分離的??梢酝ㄟ^pull拉取遠程分支到本地,或push,推送本地分支到遠程分支。
- 工作區(qū):就是你在電腦里能看到的目錄。
- 暫存區(qū):英文叫stage, 或index。一般存放在 “.git目錄下” 下的index文件(.git/index)中,所以我們把暫存區(qū)有時也叫作索引(index)。
- 版本庫:工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫。
下面這個圖展示了工作區(qū)、版本庫中的暫存區(qū)和版本庫之間的關(guān)系:
圖中左側(cè)為工作區(qū),右側(cè)為版本庫。在版本庫中標記為 “index” 的區(qū)域是暫存區(qū)(stage, index),標記為 “master” 的是 master 分支所代表的目錄樹。
圖中我們可以看出此時 “HEAD” 實際是指向 master 分支的一個”游標”。所以圖示的命令中出現(xiàn) HEAD 的地方可以用 master 來替換。
圖中的 objects 標識的區(qū)域為 Git 的對象庫,實際位于 “.git/objects” 目錄下,里面包含了創(chuàng)建的各種對象及內(nèi)容。
當(dāng)對工作區(qū)修改(或新增)的文件執(zhí)行 “git add” 命令時,暫存區(qū)的目錄樹被更新,同時工作區(qū)修改(或新增)的文件內(nèi)容被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區(qū)的文件索引中。
當(dāng)執(zhí)行提交操作(git commit)時,暫存區(qū)的目錄樹寫到版本庫(對象庫)中,master 分支會做相應(yīng)的更新。即 master 指向的目錄樹就是提交時暫存區(qū)的目錄樹。
當(dāng)執(zhí)行 “git reset HEAD
” 命令時,暫存區(qū)的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區(qū)不受影響。
當(dāng)執(zhí)行 “git rm --cached file>
” 命令時,會直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。
當(dāng)執(zhí)行 “git checkout .
” 或者 “git checkout -- file>
” 命令時,會用暫存區(qū)全部或指定的文件替換工作區(qū)的文件。這個操作很危險,會清除工作區(qū)中未添加到暫存區(qū)的改動。
當(dāng)執(zhí)行 “git checkout HEAD .
” 或者 “git checkout HEAD file>
” 命令時,會用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個命令也是極具危險性的,因為不但會清除工作區(qū)中未提交的改動,也會清除暫存區(qū)中未提交的改動。
下面通過幾個常用的操作指令,通過注釋,就可以快速入手。由于大部分情況,我們并不需要在本地創(chuàng)建倉庫,所以這里就不介紹在本地創(chuàng)建倉庫了。
git安裝配置
可以參考,在這篇文章中寫過 https://www.jb51.net/article/148066.htm
git使用前配置
配置賬號密碼和編輯器。首先要讓git知道我們登錄gitlab的賬號和郵箱。git每次聯(lián)系gitlab或github都會使用我們配置的賬號和郵箱
git config --global user.name "luanpeng"
git config --global user.email xxxxx@xxxx.com
至于其他的配置,使用默認即可。
- 注意:每個目錄下是一個倉庫,倉庫信息通過目錄下的.git文件保存
將本地項目文件夾,上傳到遠程倉庫指定分支的某個文件夾
要修改遠程倉庫的分支內(nèi)容,需要我們先把遠程倉庫的某個分支pull到本地,在本地添加修改的內(nèi)容,在push到遠程。
所謂的修改包括,添加文件,刪除文件,清空文件等等。
比如我想將我的文件夾上傳到遠程倉庫的luanpeng分支下的ios/server文件夾下面。
選擇一個目錄用來存儲遠程倉庫分支的內(nèi)容。
git clone -b luanpeng git@gitlab.com:luanpeng/cloud-ai.git 將遠程倉庫的分支luanpeng下載到當(dāng)前目錄。默認master分支
cd 項目目錄
git branch 查看分支,顯示的就是luanpeng分支
在文件夾中對應(yīng)位置添加你的項目文件或文件夾,回到命令行。
git add . 添加當(dāng)前目錄下的所有文件到緩存區(qū)
git status 查看緩存區(qū)和版本庫的所有變化
git commit -m "describe" //提交監(jiān)督的內(nèi)容的變化到本地版本庫
創(chuàng)建一個遠程倉庫的鏈接
git remote add cloudai git@gitlab.com:luanpeng/cloud-ai.git 使用cloudai這個名字代表遠程倉庫
git push cloudai luanpeng 將當(dāng)前分支上傳到遠程倉庫的分支。
git remote -v 查看遠程倉庫的鏈接
git remote rm cloudai 刪除遠程倉庫鏈接
如果你是自己在本地通過
git init創(chuàng)建的倉庫,想通過push上傳到遠程倉庫,需要先
獲取遠程庫與本地同步合并(如果遠程庫不為空必須做這一步,否則后面的提交會失?。?
git pull --rebase cloudai luanpeng 將遠程倉庫的分支拉取到本地
本地倉庫管理
如果你想在自己的電腦上建一個倉庫,自己管理自己的代碼,也備以后使用??梢允褂孟旅娴牟僮?/p>
倉庫初始化
mkdir projectdir 創(chuàng)建一個目錄
cd projectdir 進入目錄
git init 創(chuàng)建一個倉庫,自動創(chuàng)建master分支
手動在工作區(qū)(也就是這個文件夾內(nèi))拷貝,剪切,修改文件
git add . //添加當(dāng)前文件夾下的所有文件添加到緩存區(qū),手動添加的文件,必有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ū)就會只顯示該分支下的文件夾。
git branch -D branch-name 刪除本地分支 git branch --delete branch-name
遠程倉庫的管理
從本地分支鏈接到遠程分支,稱為跟蹤分支(tracking branch)。跟蹤分支是一種和遠程分支有直接聯(lián)系的本地分支。在跟蹤分支里輸入git push,Git 會自行推斷應(yīng)該向哪個服務(wù)器的哪個分支推送數(shù)據(jù)。反過來,在這些分支里運行g(shù)it pull 會獲取所有遠程索引,并把它們的數(shù)據(jù)都合并到本地分支中來.
- 注意:本地創(chuàng)建的遠程倉庫和跟蹤分支,只是到遠程倉庫和分支的鏈接
我們可以在本地管理遠程倉庫或遠程分支
git remote -v 查看遠程倉庫的鏈接
git remote rm cloudai 刪除cloudai遠程倉庫鏈接
git remote add cloudai git@gitlab.com:luanpeng/cloud-ai.git 建立一個遠程倉庫的鏈接
git push cloudai :luanpeng 刪除遠程倉庫的luanpeng分支
查看本地創(chuàng)建的遠程分支鏈接
git branch 查看本地分支
git branch -a 查看所有分支
git branch -r 查看所有遠程分支鏈接
git branch -r -d origin/branchname 刪除本地的遠程分支鏈接
pull和push到遠程分支
git pull 遠程庫名> 遠程分支名>:本地分支名> //拉取遠程倉庫的分支,當(dāng)本地分支,本地分支可以不寫默認為當(dāng)前分支
git pull 遠程庫名> 遠程分支名>
git push git@gitlab.com:luanpeng/cloud-ai.git master // 把本地倉庫提交到遠程倉庫的master分支中
git remote add cloudai git@gitlab.com:luanpeng/cloud-ai.git
git push cloudai luanpeng
需要說明的是,默認情況下這條語句等價于提交本地的master倉庫到遠程倉庫,并作為遠程的luanpeng分支。
git push cloudai master:luanpeng 提交本地的luanpeng分支到遠程倉庫的luanpeng分支
git push cloudai :luanpeng 提交本地空分支到遠程倉庫的分支,也就是刪除遠程倉庫的分支
注意:我們修改了分支下的文件,都要
git add . 添加到緩存去
git commit -m "describe" 更新到版本庫
git push cloudai master:luanpeng 將版本庫中的更新到遠程分支
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
您可能感興趣的文章:- gitlab實踐教程使用git config進行相關(guān)的配置操作
- linux安裝git的方法步驟
- Docker-compose一鍵部署gitlab中文版的方法步驟
- Docker-compose部署gitlab的方法步驟
- Git忽略提交的3種方法及Git忽略規(guī)則
- 用Docker安裝Gitlab的方法步驟
- MAC上IntelliJ IDEA的svn無法保存密碼解決方案
- Webstorm2017上SVN插件安裝的方法步驟
- Jenkins與SVN持續(xù)集成的示例代碼
- 版本管理工具Rational ClearCase的介紹