一街望、版本管理工具干什么用的?
????i.備份文件作用同U盤 網(wǎng)盤
????????1. 保存每天的成果若是本地文件丟失損壞找備份
????????2. 如打游戲時(shí)候的存檔
????ii. 記錄歷史
????????1. 網(wǎng)盤U盤存儲(chǔ)的是文件最新?tīng)顟B(tài) ?歷史操作沒(méi)有 ?
????????2. 作用同history命令 找到歷史操作的版本 ?記錄 修改時(shí)間 修改內(nèi)容等(提交時(shí)候的備注)
????iii.回滾到歷史版本
????????1. 若是當(dāng)前提交了不想要的操作可以找到歷史版本把狀態(tài)恢復(fù)到之前操作過(guò)的任意歷史的狀態(tài)
????iv.托管文件可以多端共享
????????1. 效果類似于icloud云備份 ?可以在不同的設(shè)備上 拿到相同的文件
????????2. 場(chǎng)景一在公司提交了代碼之后回到家登陸自己的賬戶pull到本地
????????3. 管理員創(chuàng)建倉(cāng)庫(kù)搭建好項(xiàng)目環(huán)境之后團(tuán)隊(duì)成員pull到自己的設(shè)備 ?共同開(kāi)發(fā) ?
二、版本管理工具發(fā)展歷史
三弟跑、GIT下載和安裝
????i. 安裝GIT環(huán)境---windows
????????1. 下載客戶端https://desktop.github.com/??
????????2. 安裝
? ? Ⅱ. 安裝GIT環(huán)境---Linux
? ??????1. CentOS下 ?軟件包管理器
????????2. git --help查看幫助
????????3.ubuntu下安裝 同理 apt-get -update 更新源 ??apt-get install git 安裝git
四灾前、注冊(cè)賬戶
? ????i. 登錄官網(wǎng)
????ii. 注冊(cè)
iii. 選擇套餐
????iv.發(fā)送驗(yàn)證郵件
????v. 登錄帳號(hào)看到自己的項(xiàng)目
五、新建一個(gè)項(xiàng)目
????i. 注意點(diǎn)
????ii. 創(chuàng)建完成
六孟辑、Linux下檢出項(xiàng)目到本地
????i. Clone or download
????ii.????克隆到本地
[if !supportLists]iii.?[endif]檢出到本地之后可以在本地工作區(qū)開(kāi)發(fā)提交...
七哎甲、Linux環(huán)境下第一次提交項(xiàng)目 ?
????i. 工作區(qū)修改文件wq保存退出
????ii. git status查看工作區(qū)狀態(tài)
????iii.?????git add對(duì)文件建立 跟蹤 ?查看狀態(tài)
????iv.????git commit提交
????v.????提交之后git status查看工作區(qū)狀態(tài) ??(目前只是在本地工作區(qū)的操作 還未提交到github)
????vi.?????git push到 遠(yuǎn)程github上
????vii. 登錄github查看 ??推送成功
八蔫敲、windows環(huán)境下檢出項(xiàng)目和提交項(xiàng)目
????i.?????安裝好本地客戶端之后登錄本地客戶端在github上
????ii. 選擇本地工作區(qū)目錄
????iii. 克隆到本地之后
????iv.?????在本地編輯器打開(kāi)文件
????v.?????本地新建文件編輯
????vi. 本地工作區(qū)修改文件提交同步
????vii.????同步到github
九、關(guān)于代碼沖突
????i.?????解決沖突團(tuán)隊(duì)合作代碼沖突工具無(wú)法判斷取舍
????????1.?????Linux下如何解決沖突
????????????a)?????git pull把最新的代碼拉下來(lái) 合并沖突
????????????????b) git status查看當(dāng)前工作區(qū)狀態(tài)
????????????c)????查看變更記錄git diff
????????????d)?????打開(kāi)沖突文件人為解決沖突
????????????e)????本地工作區(qū)解決完沖突之后git status ??git add ?git commit ??????git push推送到github
????????????f)?????如果有后續(xù)操作本地工作區(qū)需要先將git pull將遠(yuǎn)程上的最新的文件拉到本地 再進(jìn)行后續(xù)操作
????????2.?????Windows下如何解決沖突?
????????????a)?????windows下沖突
????????????b)?????本地編輯器打開(kāi)沖突文件先手動(dòng)解決沖突
????????????c)?????同步
????????????????????????或者是
十炭玫、????回滾到歷史版本
????a)????場(chǎng)景:新老同事 最新版本的代碼如果修復(fù)的話代價(jià)太大 ?直接恢復(fù)到之前的版本
????b)?????回滾
????i. git log查看文件歷史提交
????ii.?????需要回滾到哪個(gè)時(shí)間點(diǎn)復(fù)制commit id ?git reset --hard commit id
hard:是當(dāng)前版本的指針 這個(gè)指針指向哪個(gè)時(shí)間點(diǎn)的 commit id 就相當(dāng)于代碼回退到那個(gè)時(shí)間點(diǎn)的狀態(tài)
????iii. git reflog列出當(dāng)前版本之前的所有版本號(hào)
????iv. 還原到最新版本
十一奈嘿、建立里程碑(軟件上的版本號(hào))
?????i. 里程碑:軟件上的版本號(hào) 每一個(gè)版本號(hào)表示一段開(kāi)發(fā)的完結(jié) 以及下一階段工作的開(kāi)始 軟件發(fā)布之后 會(huì)帶著對(duì)應(yīng)的版本號(hào)
????ii. 建立里程碑方便于把一個(gè)完整的軟件發(fā)布出去也方便于快速的定位某一個(gè)版本的某個(gè)問(wèn)題
????????1.登錄github
????????2.?????后期維護(hù)的時(shí)候找到對(duì)應(yīng)的版本可以下載源碼可以回退等等
十二、分支開(kāi)發(fā)之分支合并
????i.?????應(yīng)用場(chǎng)景:新反饋了一個(gè)bug但是當(dāng)前master(主)分支已經(jīng)推送了新的功能的代碼 于是呢 ?就不能在主分支發(fā)布 有可能把沒(méi)測(cè)試過(guò)的代碼帶到外面去 創(chuàng)建新的分支 以已經(jīng)發(fā)布的代碼為基礎(chǔ)修復(fù)bug 修復(fù)之后 再合并分支
????ii.?????創(chuàng)建新的分支當(dāng)前工作區(qū)切換到分支
????iii.????merge合并分支
十三吞加、????分支開(kāi)發(fā)之分支合并
十四裙犹、關(guān)于多人合作
????i.?????多用客戶端和工具少用命令行除非是在Linux服務(wù)器上直接開(kāi)發(fā)
????ii.?????每次提交前diff自己的代碼 以免提交錯(cuò)誤的代碼
????iii.?????下班回家前整理好自己的工作區(qū)(哪些代碼是必須的 ?哪些是調(diào)試代碼等等)
????iv.?????并行的項(xiàng)目使用分支開(kāi)發(fā)
????v.?????遇到?jīng)_突的時(shí)候搞明白沖突的原因千萬(wàn)不要隨意的丟棄別人的代碼
????vi.?????產(chǎn)品發(fā)布之后記得打tag方便將來(lái)拉分支修bug