八方資源網(wǎng)做網(wǎng)站優(yōu)化怎么樣群排名優(yōu)化軟件
文章目錄
- 概述
- 相關(guān)概念
- 下載和安裝
- 常見命令
- 遠(yuǎn)程倉(cāng)庫(kù)介紹與碼云注冊(cè)創(chuàng)建
- 介紹
- 碼云注冊(cè)
- 遠(yuǎn)程倉(cāng)庫(kù)操作
- 關(guān)聯(lián)
- 拉取
- 推送
- 克隆
- 在idea中使用git
- 集成
- add和commit
- 差異化比較&查看提交記錄
- 版本回退及撤銷
- 與遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián) push
- 從遠(yuǎn)程倉(cāng)庫(kù)上拉取,克隆項(xiàng)目到本地
- 創(chuàng)建分支
- 切換分支
- 將除了master分支推送到gitee上
- 將其他分支代碼合并到master分支上并上傳提交
- 處理版本沖突
概述
Git是目前世界上最先進(jìn)的分布式文件版本控制系統(tǒng)
版本控制:所謂的版本控制就是將一組文件的改動(dòng)記錄下來,形成版本歷史,以便需要恢復(fù)
作用:
1、代碼共享:每位開發(fā)者可以使用Git將自己的代碼上傳到云服務(wù)器上,同時(shí)使用Git還可以將其他人上傳的代碼下載到自己的電腦上,這樣實(shí)現(xiàn)了代碼共享
2、回溯版本:Git會(huì)保存每次上傳的痕跡,每上傳一次就做一次備份,每次備份就相當(dāng)于一個(gè)版本,任意時(shí)間可以通過Git查詢?cè)?jīng)提交過的每一個(gè)版本對(duì)應(yīng)的內(nèi)容。
3、追蹤信息:Git提供了強(qiáng)制記錄日志的功能,每次上傳信息都要求寫日志,可以記錄本次上傳的相關(guān)信息
相關(guān)概念
- 工作區(qū):就是平時(shí)存放代碼的地方
- 一個(gè)文件夾通過git init設(shè)置成一個(gè)git可以管理的文件夾,這個(gè)文件夾中的內(nèi)容(除.git文件夾)就是工作區(qū)
- 版本庫(kù):就是安全存放數(shù)據(jù)的位置,這里面有提交到所有版本的數(shù)據(jù)
- 其中HEAD指向最新放入倉(cāng)庫(kù)的版本
- 工作區(qū)的隱藏目錄.git,它不算工作區(qū),而是版本庫(kù)
- 暫存區(qū):index,用來暫時(shí)存放工作區(qū)中修改的內(nèi)容。在加入到本地倉(cāng)庫(kù)前,會(huì)先放置在暫存區(qū)
- 一般存放在.git/index文件中
- HEAD:指向最新放入倉(cāng)庫(kù)的版本
- master:是我們的主分支,是本地倉(cāng)庫(kù)的一部分
- 當(dāng)我們git init后,并不會(huì)立刻產(chǎn)生分支,而是我們添加了一個(gè)文件,并git add,git commit后這時(shí)我們查看分支情況便可以看到master分支了
- objects:是git對(duì)象庫(kù),是用來存儲(chǔ)各種創(chuàng)建的對(duì)象和內(nèi)容
- 遠(yuǎn)程倉(cāng)庫(kù):托管代碼的服務(wù)器,常用github,gitee,gitlab
下載和安裝
下載地址:https://git-scm.com/download
安裝過程非常簡(jiǎn)單,直接next
點(diǎn)擊Finish完成安裝,驗(yàn)證安裝,找一個(gè)桌面空白處,右鍵出現(xiàn)下列窗口
常見命令
創(chuàng)建一個(gè)文件夾,右鍵然后點(diǎn)擊Git Bash here
- 初始化工作區(qū):git init
- 查看當(dāng)前工作區(qū)的代碼文件狀態(tài):git status
- 紅色代表未放到暫存區(qū)
- 綠色代表放到暫存區(qū)
- 將工作區(qū)的代碼文件提交到暫存區(qū):git add 文件名
- 將暫存區(qū)的代碼文件提交到本地倉(cāng)庫(kù):git commit -m ‘提交信息’
- 差異化比較
- 工作區(qū)和暫存區(qū):git diff 文件名
- 暫存區(qū)和本地倉(cāng)庫(kù):git diff --cached 文件名
- 工作區(qū)和本地倉(cāng)庫(kù):git diff HEAD 文件名
- 查看提交日志:git log/git reflog
- git reflog:特點(diǎn)是查看的提交版本號(hào)比較短
- 版本回退:回退哪個(gè)版本
- 回退到上一個(gè)版本(提交位置):git reset --hard HEAD^
- 回退到指定版本:git reset --hard 版本號(hào)
- 撤銷工作區(qū):git checkout 文件名
- 將代碼從暫存區(qū)撤銷到工作區(qū):git reset HEAD 文件名
- 分支:
- 創(chuàng)建分支:git branch 分支名
- 查看分支:git branch
- 切換分支:git checkout 分支名
- 合并分支:git merge 分支名
- 刪除分支:git branch -d 分支名
注:合并分支
- 如果將其他分支合并到master主分支上,那么需要切換到master上
- 如果將dev分支合并到主分支master上,那么必須在dev分支上進(jìn)行commit提交到本地倉(cāng)庫(kù)
遠(yuǎn)程倉(cāng)庫(kù)介紹與碼云注冊(cè)創(chuàng)建
介紹
遠(yuǎn)程倉(cāng)庫(kù)是公網(wǎng)或外網(wǎng)中的一個(gè)倉(cāng)庫(kù),主要用于存儲(chǔ)個(gè)人或團(tuán)隊(duì)的提交記錄與提交日志,團(tuán)隊(duì)開發(fā)也是靠遠(yuǎn)程倉(cāng)庫(kù)實(shí)現(xiàn)的。大家把東西提交到同一個(gè)遠(yuǎn)程倉(cāng)庫(kù)里面就ok了,這樣每個(gè)人都可以獲取到團(tuán)隊(duì)內(nèi)開發(fā)的所有內(nèi)容了。
常用的遠(yuǎn)程倉(cāng)庫(kù):
- github:https://github.com
- 主站在國(guó)外,速度一般
- gitee:https://gitee.com
- 碼云,速度快,是開源中國(guó)推出的基于Git的代碼托管平臺(tái)
- gitlab:https://about.gitlab.com
- 可以搭建一個(gè)web服務(wù)器,私服安全
- 可以搭建一個(gè)web服務(wù)器,私服安全
碼云注冊(cè)
訪問地址:https://gitee.com
- 沒有賬號(hào)的按要求注意并登錄
- 創(chuàng)建倉(cāng)庫(kù)
- 填寫對(duì)應(yīng)信息
- 復(fù)制遠(yuǎn)程倉(cāng)庫(kù)的地址
遠(yuǎn)程倉(cāng)庫(kù)操作
關(guān)聯(lián)
在推送到碼云倉(cāng)庫(kù)前,需要先建立本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)的關(guān)系
命令:git remote add origin 遠(yuǎn)程倉(cāng)庫(kù)地址
拉取
從碼云倉(cāng)庫(kù)拉取到本地倉(cāng)庫(kù),在推送代碼前必須先拉取代碼,否則無法推送本地倉(cāng)庫(kù)代碼到碼云倉(cāng)庫(kù)
命令:git pull origin master --allow-unrelated-historities
首次拉取需要添加:–allow-unrelated-histories
后續(xù)拉取:git pull
推送
本地倉(cāng)庫(kù)到碼云倉(cāng)庫(kù)
首次推送:git push -u origin master
后續(xù)推送:git push
克隆
如果我們新加入一個(gè)團(tuán)隊(duì),這個(gè)時(shí)候就需要我們把代碼從遠(yuǎn)程倉(cāng)庫(kù)克隆過來,先新建一個(gè)文件夾,在新的文件夾中鼠標(biāo)右鍵點(diǎn)擊Git bash Here,輸入下面命令
命令:git clone 遠(yuǎn)程倉(cāng)庫(kù)地址
克隆和拉取的區(qū)別
- 相同點(diǎn):都是從遠(yuǎn)程服務(wù)器拉取代碼到本地
- 不同點(diǎn):
- 克隆:是本地沒有版本庫(kù)時(shí),從遠(yuǎn)程服務(wù)器克隆到整個(gè)版本庫(kù)到本地,是一個(gè)本地從無到有的過程
- 拉取:在本地有版本庫(kù)的情況下,從遠(yuǎn)程庫(kù)獲取最新commit數(shù)據(jù),并merge到本地
在idea中使用git
集成
- 點(diǎn)擊idea中File->settings
- 彈出settings后在搜索中輸入"git",選擇Git,指定你的安裝的git.exe目錄
- 校驗(yàn)git是否集成完成,點(diǎn)擊test,彈出校驗(yàn)窗口,點(diǎn)擊git Executed successed 成功則表示集成完成
- 創(chuàng)建工程
- 初始化工作區(qū):點(diǎn)擊VCS->Create Git Reposity
- 選擇管理的文件夾,這里我現(xiàn)在的為gitProject文件夾
- 點(diǎn)擊左下角,Git菜單,此時(shí)day0901_git下所有的文件都變成棕色,說明我們的工作區(qū)添加完成了
- 忽略文件類型
辦法:將.gitignore文件復(fù)制到項(xiàng)目的根目錄
add和commit
- 工作區(qū)提交暫存區(qū) add
顏色變?yōu)榫G色
- 暫存區(qū)提交到本地倉(cāng)庫(kù) commit
差異化比較&查看提交記錄
工作區(qū)和本地倉(cāng)庫(kù)比較
查看記錄
版本回退及撤銷
先修改java文件,提交倆次,總共有三次提交記錄
本地倉(cāng)庫(kù)回退撤銷
- 點(diǎn)擊git->log查看3個(gè)提交的版本
- 現(xiàn)在在本地倉(cāng)庫(kù)中回退到第二次提交,選擇第二次提交的標(biāo)記
- 選擇Hrad
- 回退成功
工作區(qū)撤銷
- 當(dāng)我們?cè)诠ぷ鲄^(qū)編輯代碼時(shí)候,希望撤銷未提交本地倉(cāng)庫(kù)的代碼時(shí)候,在Git中右鍵
- 點(diǎn)擊rollback
- 撤銷成功
說明:針對(duì)上述工作區(qū)的代碼撤消,有同學(xué)會(huì)有疑問,我直接刪除不就完了嗎,為什么這么麻煩,其實(shí)我們?cè)趯?shí)際開發(fā)中代碼會(huì)很多,那么當(dāng)你書寫了很多不同地方的代碼,以至于你都忘記哪些是新編寫的代碼了,那么刪除是一件很痛苦的事情,并且容易誤刪,所以使用工作區(qū)撤銷更加方便。
與遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián) push
上面已經(jīng)創(chuàng)建了遠(yuǎn)程倉(cāng)庫(kù),接下來用idea與遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián)
- 點(diǎn)擊推送
- 點(diǎn)擊Define remote
- 輸入上面復(fù)制的遠(yuǎn)程倉(cāng)庫(kù)地址
- 選擇提交
關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
- Git—>Manage Remotes …
- 點(diǎn)擊彈出窗口中的+
- 將復(fù)制的遠(yuǎn)程倉(cāng)庫(kù)地址復(fù)制到url中
- 成功關(guān)聯(lián)
從遠(yuǎn)程倉(cāng)庫(kù)上拉取,克隆項(xiàng)目到本地
拉取
- 先在gitee上復(fù)制要導(dǎo)入項(xiàng)目的連接地址
- 點(diǎn)擊項(xiàng)目->Git->pull
- 如果沒有master按ctrl+F5
第一次拉取失敗
- 點(diǎn)擊右下角master
- 右擊選擇下面圖中
- 點(diǎn)擊merge
- 點(diǎn)擊紅色箭頭,最后點(diǎn)擊apply
克隆
- 點(diǎn)擊git->clone
- 填寫地址和存放項(xiàng)目位置
- Trust Project或者New Window
- 導(dǎo)入之后查看當(dāng)前項(xiàng)目在idea中的三個(gè)環(huán)境
maven地址 File->settings
idea環(huán)境必須都是utf-8編碼
當(dāng)前使用的jdk8
創(chuàng)建分支
創(chuàng)建到本地分支上
切換分支
- 將gitee中所有的分支拉取到idea中
- 在idea中查看本地和遠(yuǎn)程分支
- 切換到dev1分支上
注:
- 我們不能在master分支上進(jìn)行書寫代碼,都是在每個(gè)分支上寫代碼,然后最后確定沒問題之后再將其他分支上的代碼合并到master代碼上
- 在切換其他分支之前必須先將當(dāng)前分支的代碼進(jìn)行提交,否則當(dāng)前分支的代碼就不存在了
提交當(dāng)前分支的代碼
看上面commit
切換分支
將除了master分支推送到gitee上
和上面一樣,有個(gè)簡(jiǎn)化的是中間commit和push
注意:推送的一定是dev1分支上的代碼,如果推送的是master分支上的代碼就會(huì)報(bào)錯(cuò)。
將其他分支代碼合并到master分支上并上傳提交
要想將dev1分支代碼合并到master分支上,首先需要切換到master分支上,然后在合并
- 將dev1分支上的代碼提交
- 切換到本地master分支上
- 將dev1分支代碼合并到master分支上
- 將master分支上的代碼提交并推送到gitee上
處理版本沖突
當(dāng)多個(gè)用戶對(duì)同一個(gè)文件交叉修改的時(shí)候就尷尬了。A修改完提交一個(gè),B修改完又提交一個(gè),這個(gè)時(shí)候A修改完提交,問題來了,如果A提交成功,那么就相當(dāng)于忽略了B提交的內(nèi)容。這個(gè)時(shí)候就要強(qiáng)制你去處理一下這個(gè)問題,這就是我們所說的沖突問題。
- 先拉取代碼,這時(shí)候App的類變成紅色,且彈出窗口,需要手動(dòng)進(jìn)行合并
- 解決沖突
- 選擇主干
- 推送到遠(yuǎn)程倉(cāng)庫(kù)