Git是一個(gè)分布式版本控制系統(tǒng)。
1、git的應(yīng)用場景
1.備份
小明負(fù)責(zé)的模塊就要完成了,就在即將release之前的一瞬間,電腦突然藍(lán)屏。硬盤光榮犧牲!幾個(gè)月來的努力付之東流。
場景二:代碼還原
這個(gè)項(xiàng)目中需要一個(gè)很復(fù)雜的功能,老王摸索了一個(gè)星期終于有眉目了,可是這被改得面目全非的代碼已經(jīng)回不到從前了?;貪L版本。
場景三:協(xié)同開發(fā)
場景四:追溯問題代碼的編寫人和編寫時(shí)間
-
打開Git Bash
-
設(shè)置用戶信息 git config -global user.name "huan" git config -global user.email "1320156914@qq.com"
2、安裝git
安裝git
brew install git
查看git版本
git --version
如果查看git版本時(shí)遇到這個(gè)問題
zhouchenghuan@zhoucheuandembp ~ % git –version
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
這個(gè)錯(cuò)誤信息表明你的Mac電腦上的Xcode Command Line Tools沒有正確安裝或激活。你可以通過以下步驟來修復(fù)這個(gè)問題:
xcode-select --install
然后重裝git
安裝成功
3、Git基礎(chǔ)使用
獲取本地倉庫
git init

每提交一次(git commit) 就會(huì)增加一個(gè)新的版本。
-
git add (工作區(qū)-> 暫存區(qū))
-
git commit (暫存區(qū)->本地倉庫)
查看修改的狀態(tài)
作用:查看的修改的狀態(tài)(暫存區(qū)、工作區(qū))
命令形式:git status
查看日志:git log

git branch 查看本地分支
git branch 分支名 創(chuàng)建本地分支
git log 比branch好用一些,查看非常直觀。
git log 查看日志
git -log 以精簡的方式顯示提交記錄
git checkout 切換分支
如 git checkout master 切換到主分支
git checkout -b 切換并創(chuàng)建分支
git merge 'dev01'?
git reset --hard commitID 版本回退?
作用是切換版本
commitID可以使用git -log指令查看
如何查看已經(jīng)刪除的記錄?
git reflog 這個(gè)指令可以看到已經(jīng)刪除的提交記錄
開發(fā)中分支使用原則與流程
Master (生產(chǎn))分支
線上分支,主分支,中小規(guī)模項(xiàng)目作為線上運(yùn)行的應(yīng)用對應(yīng)的分支。
develop(開發(fā))分支
是從master創(chuàng)建的分支,一般作為開發(fā)部門的主要開發(fā)分支,如果沒有其他并行開發(fā)不同期上線要求,都可以在此版本進(jìn)行開發(fā),階段開發(fā)完成后,需要合并到master。準(zhǔn)備上線。
Feature 分支
從develop創(chuàng)建的分支,一般是同期并行開發(fā),但不同期上線時(shí)創(chuàng)建的分支,分支上的研發(fā)任務(wù)完成后合并到develop分支。
hotfix分支
從master派生的分支,一般作為線上bug修復(fù)使用,修復(fù)完成后需要合并到master、test、develop分支。
解決沖突
當(dāng)兩個(gè)分支上的同一個(gè)文件可能會(huì)存在沖突,例如同時(shí)修改了同一個(gè)文件的同一行,這時(shí)就需要手動(dòng)解決:
1、我們將文件修改成我們期望的值
2、將修改后的文件加入暫存區(qū)(add)
3、提交到倉庫(commit)
git branch -d dev02 刪除分支
git branch -D dev02 強(qiáng)制刪除分支
git merge 合并分支
比如你要將dev01合并到master,那么你先 git checkout master ,再git merge dev01
4、Git遠(yuǎn)程倉庫
常見的托管服務(wù) github、碼云 gitee,個(gè)人一般用gitee,企業(yè)用gitLab。
https://gitee.com 注冊賬號(hào)
新建一個(gè)倉庫,填一下倉庫名,其他不要填
git remote add origin <遠(yuǎn)程倉庫地址> 添加遠(yuǎn)程倉庫
git remote 查看遠(yuǎn)程倉庫
git push -u origin "master" 推送到遠(yuǎn)程倉庫 (如果不在master分支則要切換master分支)
git push -f origin master 強(qiáng)制推送到遠(yuǎn)程倉庫
git fetch 它的主要功能是從遠(yuǎn)程倉庫獲取最新的提交信息,但并不會(huì)自動(dòng)將這些更新合并到本地的當(dāng)前分支。
git clone [遠(yuǎn)程倉庫地址] [本地目錄名稱(可選)] 用于從遠(yuǎn)程倉庫復(fù)制一份完整的項(xiàng)目到本地,這個(gè)是比較常見的,一般第一次拉整個(gè)完整項(xiàng)目,后面都是用git fetch刷新。
git fetch [remote]
抓取指令就是把倉庫里的更新都抓取到本地,不會(huì)進(jìn)行合并。
主要用于從遠(yuǎn)程倉庫獲取最新的數(shù)據(jù)(包括分支、標(biāo)簽等信息),但并不會(huì)自動(dòng)合并到本地當(dāng)前分支。執(zhí)行此命令后,你可以查看遠(yuǎn)程倉庫的更新內(nèi)容,并在確認(rèn)無誤后選擇是否將這些更新合并到本地。
應(yīng)用場景:比如前幾天我同事創(chuàng)建了一個(gè)項(xiàng)目,我第一次拉下來就是git clone,今天他又更新了,此時(shí)我只用git fetch把他更新的那部份代碼拉下來就行了,不需要重新拉取整個(gè)項(xiàng)目。
git pull?
拉取指令就是將遠(yuǎn)程倉庫的修改拉到本地并自動(dòng)進(jìn)行合并,等同于fetch+merge
如果不指定遠(yuǎn)端名稱和分支名,則抓取所有并更新當(dāng)前分支
解決遠(yuǎn)程倉庫沖突
a用戶在本地修改代碼后有限推送到遠(yuǎn)程倉庫,此時(shí)b用戶在本地修訂代碼,提交到本地倉庫后,也需要推送到遠(yuǎn)程倉庫,此時(shí)b用戶晚于a用戶,故需要先拉取遠(yuǎn)程倉庫的提交,經(jīng)過合并后才能推送到遠(yuǎn)端分支。
解決合并沖突
在一段時(shí)間,a、用戶修改了同一個(gè)文件,且修改了同一行位置的代碼,此時(shí)會(huì)發(fā)生合并沖突。
a用戶在本地修改代碼后優(yōu)先推送到遠(yuǎn)程倉庫,此時(shí)b用戶在本地修訂代碼,提交到本地倉庫后,也需要推送到遠(yuǎn)程倉庫,此時(shí)b用戶晚于a用戶,故需要先拉取遠(yuǎn)程倉庫的提交,經(jīng)過合并后才能推送到遠(yuǎn)端分支。
你找到那個(gè)沖突的文件,改成你想要的樣子,然后git add <file>,最后git commit -m "commit message"就好了。
5、idea集成git
1、在settings里搜索git,輸入git安裝路徑,點(diǎn)擊“test”,如果成功的話會(huì)在下面顯示git版本。
選擇ssh地址?
?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-840238.html
2、gitignore
.gitignore 文件中,每一行都指定了一個(gè)模式,Git 將會(huì)根據(jù)這些模式來決定哪些內(nèi)容不應(yīng)該被添加到版本庫中。例如:
? *.log:表示忽略所有擴(kuò)展名為 .log 的文件。
? build/:表示忽略 build 目錄及其下的所有文件和子目錄。
? temp.txt:表示忽略名為 temp.txt 的具體文件。
這樣做的好處在于,可以避免一些臨時(shí)文件、編譯生成的文件、敏感信息文件(如密鑰文件)等被誤提交到版本庫中,從而保護(hù)隱私并減少倉庫的冗余數(shù)據(jù)。
3、idea創(chuàng)建倉庫
?
?
這個(gè)?就是commit?
?
?
提交成功?
?
可以看到每次提交的內(nèi)容?
?
?
推送至遠(yuǎn)程倉庫?
首次推送時(shí),還沒有綁定遠(yuǎn)程倉庫,點(diǎn)擊define remote,輸入遠(yuǎn)程倉庫地址
?
填入遠(yuǎn)程倉庫的這個(gè)地址
?
?
?
成功推送?
?
可以看到gitee遠(yuǎn)程倉庫里已經(jīng)成功收到了我們剛剛從本地倉庫推送過去的代碼?
?
創(chuàng)建分支?
?
如果你想把的dev02合并至dev01,那你就切換到dev01,選擇merge dev02 into dev01
?
觀察同事寫了什么代碼?
?
git操作流程?
?
命令如下:
1.clone (克?。簭倪h(yuǎn)程倉庫中克隆代碼到本地倉庫
2.checkout(檢出):從本地倉庫中檢出一個(gè)倉庫分支然后進(jìn)行修訂
3.add(添加):在提交前先將代碼提交到暫存區(qū)
4.commit(提交):提交到本地倉庫。本地倉庫中保存修改的各個(gè)歷史版本
5.fetch(抓?。簭倪h(yuǎn)程庫,抓取到本地倉庫,不進(jìn)行任何的合并動(dòng)作,一般操作比較少
6.pull(拉?。簭倪h(yuǎn)程庫拉到本地庫,自動(dòng)進(jìn)行合并(merge),然后放到工作區(qū),相當(dāng)于fetch+merge
7.push(推送):修改完成后,需要和團(tuán)隊(duì)成員共享代碼時(shí),將代碼推送到遠(yuǎn)程倉庫。
6、實(shí)戰(zhàn)
同事創(chuàng)建了倉庫,新建了dev分支,叫我把代碼拉一下。請問怎么做?
實(shí)現(xiàn)思路:
1、git clone <同事倉庫的SSH地址>
2、git checkout dev 切換分支
3、git pull origin dev 更新分支
4、git checkout -b dev-01 創(chuàng)建并切換至自己的分支,在自己的分支上修改
5、git add.?
6、git commit -m "描述你的更改內(nèi)容"?
7、git rebase dev 在推送前確保你的分支包含了dev分支的最新變更
8、git push origin dev-01 檢查過代碼和同事交流過確認(rèn)沒問題,將你的更改推送到遠(yuǎn)程倉庫的個(gè)人分支
?文章來源:http://www.zghlxwxcb.cn/news/detail-840238.html
?
到了這里,關(guān)于一步到位!快速精通Git工作流及實(shí)戰(zhàn)技巧詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!