天天看點

GIT管理工具項目基礎及工具

項目基礎及工具

文章目錄

  • 項目基礎及工具
    • GIT簡介
    • GIT使用
      • 基本概念
      • 初始配置
      • 基本指令
        • @擴充延伸
      • 版本控制
      • 儲存工作區
      • 分支管理
      • 遠端倉庫
      • GitHub介紹
      • 擷取項目
      • 建立删除git倉庫
      • 遠端倉庫操作指令
    • 軟體項目開發流程
      • 項目注意事項
      • 項目工具的使用
    • 線上詞典
      • 功能說明
    • HTTPServer
      • 功能

GIT簡介

  1. 什麼是GIT
git是一個開源的分布式版本控制系統,用于高效的管理各種大小項目和檔案。
  1. 代碼管理工具的用途
  • 防止代碼丢失,做備份
  • 項目的版本管理和控制,可以通過設定節點進行跳轉
  • 建立各自的開發環境分支,互不影響,友善合并
  • 在多終端開發時,友善代碼的互相傳輸
  1. git的特點
  • git是開源的,多在*nix下使用,可以管理各種檔案
  • git是分布式的項目管理工具(svn是集中式的)
  • git資料管理更多樣化,分享速度快,資料安全
  • git 擁有更好的分支支援,友善多人協調
  1. git安裝
sudo apt-get install git

GIT使用

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-O3ZBZ1ig-1593321546474)(img/git.jpeg)]

基本概念

  • 工作區:項目所在操作目錄,實際操作項目的區域
  • 暫存區: 用于記錄工作區的工作(修改)内容
  • 倉庫區: 用于備份工作區的内容
  • 遠端倉庫: 遠端主機上的GIT倉庫
注意: 在本地倉庫中,git總是希望工作區的内容與倉庫區保持一緻,而且隻有倉庫區的内容才能和其他遠端倉庫互動。

初始配置

配置指令: git config
  • 配置所有使用者: git config --system [選項]
配置檔案位置: /etc/gitconfig
  • 配置目前使用者: git config --global [選項]
配置檔案位置: ~/.gitconfig
  • 配置目前項目: git config [選項]
配置檔案位置: project/.git/config
  1. 配置使用者名
e.g. 将使用者名設定為Tedu
sudo git config --system user.name Tedu
           
  1. 配置使用者郵箱
e.g. 将郵箱設定為[email protected]
git config --global user.email [email protected]
           
  1. 配置編譯器
e.g. 配置編譯器為pycharm
git config core.editor pycharm

           
  1. 檢視配置資訊
git config --list
           

基本指令

  1. 初始化倉庫

git init

意義:将某個項目目錄變為git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理

  1. 檢視本地倉庫狀态

git status

說明: 初始化倉庫後預設工作在master分支,當工作區與倉庫區不一緻時會有提示。

  1. 将工作内容記錄到暫存區
git add [files…]
e.g. 将 a ,b 記錄到暫存區
git add  a b

e.g. 将所有檔案(不包含隐藏檔案)記錄到暫存區
git add  *
           

@擴充延伸

在Git項目中可以通過在項目的某個檔案夾下定義.gitignore檔案的方式,規定相應的忽略規則,用來管理目前檔案夾下的檔案的Git送出行為。.gitignore 檔案是可以送出到公有倉庫中,這就為該項目下的所有開發者都共享一套定義好的忽略規則。在.gitignore 檔案中,遵循相應的文法,在每一行指定一個忽略規則。

.gitignore忽略規則簡單說明

file            表示忽略file檔案
*.a             表示忽略所有 .a 結尾的檔案
!lib.a          表示但lib.a除外
build/          表示忽略 build/目錄下的所有檔案,過濾整個build檔案夾;

           

4.取消檔案暫存記錄

git rm --cached [file]
  1. 将檔案同步到本地倉庫

git commit [file] -m [message]

說明: -m表示添加一些同步資訊,表達同步内容

e.g.  将暫存區所有記錄同步到倉庫區
git commit  -m 'add files'
           
  1. 檢視commit 日志記錄

git log

git log --pretty=oneline

  1. 比較工作區檔案和倉庫檔案差異
git diff [file]
  1. 将暫存區或者某個commit點檔案恢複到工作區
git checkout [commit] – [file]
  • –是為了防止誤操作,checkout還有切換分支的作用
  1. 移動或者删除檔案

git mv [file] [path]

git rm [files]

注意: 這兩個操作會修改工作區内容,同時将操作記錄送出到暫存區。

版本控制

  1. 退回到上一個commit節點

git reset --hard HEAD^

注意 : 一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和目前commit版本保持一緻

  1. 退回到指定的commit_id節點
git reset --hard [commit_id]
  1. 檢視所有操作記錄

git reflog

注意:最上面的為最新記錄,可以利用commit_id去往任何操作位置

  1. 建立标簽
标簽: 在項目的重要commit位置添加快照,儲存當時的工作狀态,一般用于版本的疊代。

git tag [tag_name] [commit_id] -m [message]

說明: commit_id可以不寫則預設标簽表示最新的commit_id位置,message也可以不寫,但是最好添加。

e.g. 在最新的commit處添加标簽v1.0
git tag v1.0 -m '版本1'
           
  1. 檢視标簽

git tag 檢視标簽清單

git show [tag_name] 檢視标簽詳細資訊

  1. 去往某個标簽節點
git reset --hard [tag]
  1. 删除标簽
git tag -d [tag]

儲存工作區

  1. 儲存工作區内容

git stash save [message]

說明: 将工作區未送出的修改封存,讓工作區回到修改前的狀态

  1. 檢視工作區清單

git stash list

說明:最新儲存的工作區在最上面

  1. 應用某個工作區
git stash apply [[email protected]{n}]
  1. 删除工作區

git stash drop [[email protected]{n}] 删除某一個工作區

git stash clear 删除所有儲存的工作區

分支管理

定義: 分支即每個人在原有代碼(分支)的基礎上建立自己的工作環境,單獨開發,互不幹擾。完成開發工作後再進行分支統一合并。
  1. 檢視分支情況

git branch

說明: 前面帶 * 的分支表示目前工作分支

  1. 建立分支

git branch [branch_name]

說明: 基于a分支建立b分支,此時b分支會擁有a分支全部内容。在建立b分支時最好保持a分支"幹淨"狀态。

  1. 切換工作分支

git checkout [branch]

說明: 2,3可以同時操作,即建立并切換分支

git checkout -b [branch_name]
  1. 合并分支
git merge [branch]
沖突問題是合并分支過程中最為棘手的問題

當分支合并時,原分支和以前發生了變化就會産生沖突

當合并分支時添加新的子產品(檔案),這種沖突可以自動解決,隻需自己決定commit操作即可。

當合并分支時兩個分支修改了同一個檔案,則需要手動解決沖突。

  1. 删除分支

git branch -d [branch] 删除分支

git branch -D [branch] 删除沒有被合并的分支

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-ypzOguhy-1593321546476)(img/merge.png)]

遠端倉庫

遠端主機上的git倉庫。實際上git是分布式結構,每台主機的git倉庫結構類似,隻是把别人主機上的git倉庫稱為遠端倉庫。

GitHub介紹

github是一個開源的項目社群網站,擁有全球最多的開源項目。開發者可以注冊網站在github建立自己的項目倉庫。
網址: github.com
代碼管理工具:git

擷取項目

  • 在左上角搜尋欄搜尋想要的擷取的項目

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-4xjwcrlx-1593321546476)(img/1.png)]

  • 選擇項目後複制項目git位址

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-NN6aRigP-1593321546477)(img/2.png)]

  • 在本地使用git clone方法即可擷取
git clone https://github.com/xxxxxxxxx
           
注意: 擷取到本地的項目會自動和github遠端倉庫建立連接配接。且擷取的項目本身也是個git項目。

建立删除git倉庫

  • 點選右上角加号下拉菜單,選擇新的倉庫

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-jocvZ9AH-1593321546478)(img/4.png)]

  • 填寫相應的項目資訊即可
  • github倉庫相對本地主機就是一個遠端倉庫 通過remote連接配接,如果需要輸入密碼輸入github密碼即可。連接配接後即可使用遠端倉庫操作指令操作。readme檔案會被自動作為項目介紹
  • 如果是在自己的倉庫界面選擇settings,在最後可以選擇删除倉庫。

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-acqZF0sT-1593321546480)(img/5.jpg)]

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-DylQTxbV-1593321546481)(img/6.jpg)]

遠端倉庫操作指令

所有操作在本地git倉庫下進行

  1. 添加遠端倉庫
git remote  add origin https://github.com/xxxxxxxxx
           
  1. 檢視連接配接的主機

git remote

注意: 一個git項目連接配接的遠端主機名不會重複

  1. 删除遠端主機
git remote rm [origin]
  1. 将本地分支推送給遠端倉庫

将master分支推送給origin主機遠端倉庫,第一次推送分支使用-u表示與遠端對應分支建立自動關聯

git push -u origin  master
           
  1. 推送代碼到遠端倉庫
git push
           
  1. 推送标簽
git push origin [tag] 推送本地标簽到遠端
git push origin --tags 推送本地所有标簽到遠端
  1. 推送舊的版本
git push --force origin 用于本地版本比遠端版本舊時強行推送本地版本
  1. 删除遠端分支和标簽

git branch -a 檢視所有分支

git push origin [:branch] 删除遠端分支

git push origin --delete tag [tagname] 删除遠端倉庫标簽

  1. 從遠端擷取代碼

擷取遠端分支代碼

git pull

将遠端分支master拉取到本地,作為tmp分支

git fetch origin master:tmp
差別

pull将遠端内容直接拉取到本地,并和對應分支内容進行合并

fetch将遠端分支内容拉取到本地,但是不會和本地對應分支合并,可以自己判斷後再使用merge合并。

軟體項目開發流程

需求分析 ----》 概要設計  ---》 項目計劃 ----》詳細設計---》編碼測試 -----》項目測試 ----》調試修改 ---》項目釋出----》後期維護
           
需求分析 : 确定使用者的真實需求
  1. 确定使用者的真實需求,項目的基本功能
  2. 确定項目的整體難度和可行性分析
  3. 需求分析文檔,使用者确認
概要設計:對項目進行初步分析和整體設計
  1. 确定功能子產品
  2. 進行可行性分析 搭建整體架構圖
  3. 确定技術思路和使用架構
  4. 形成概要文檔指導開發流程
項目計劃 : 确定項目開發的時間軸和流程
  1. 确定開發工作的先後順序
  2. 确定時間軸 ,事件裡程碑
  3. 人員分工
  4. 形成甘特圖和思維導圖等輔助内容
詳細設計 : 項目的具體實作
1.形成詳細設計文檔 : 思路,邏輯流程,功能說明,技術點說明,資料結構說明,代碼說明
編碼測試 : 按照預定計劃實作代碼編寫,并且做基本檢測
  1. 代碼編寫
  2. 寫測試程式
  3. 技術攻關
項目測試 : 對項目按照功能進行測試
  1. 跨平台測試 ,使用測試
  2. 根據測試報告進行代碼修改
  3. 完成測試報告
項目釋出

1.項目傳遞使用者進行釋出

2.編寫項目說明文檔

後期維護

1.維護項目正常運轉

2.進行項目的疊代更新

項目注意事項

  • 按時完成項目工作和項目時間不足之間的沖突
  • 項目實施人員之間的沖突

項目工具的使用

編寫文檔: word ppt excel markdown LaTex

項目流程圖 : Mindmanager visio

項目管理 : project

代碼管理 : svn git

線上詞典

參考代碼:day18/dict

功能說明

使用者可以登入和注冊
  • 登入憑借使用者名和密碼登入
  • 注冊要求使用者必須填寫使用者名,密碼,其他内容自定
  • 使用者名要求不能重複
  • 要求使用者資訊能夠長期儲存
可以通過基本的圖形界面print以提示用戶端輸入。
  • 程式分為服務端和用戶端兩部分
  • 用戶端通過print列印簡單界面輸入指令發起請求
  • 服務端主要負責邏輯資料處理
  • 啟動服務端後應該能滿足多個用戶端同時操作
用戶端啟動後即進入一級界面,包含如下功能:登入 注冊 退出
* 退出後即退出該軟體
* 登入成功即進入二級界面,失敗回到一級界面
* 注冊成功可以回到一級界面繼續登入,也可以直接用注冊使用者進入二級界面
           
使用者登入後進入二級界面,功能如下:查單詞 曆史記錄 登出
* 選擇登出則回到一級界面
* 查單詞:循環輸入單詞,得到單詞解釋,輸入特殊符号退出單詞查詢狀态
* 曆史記錄:查詢目前使用者的查詞記錄,要求記錄包含name   word   time。可以檢視所有記錄或者前10條均可。
           

HTTPServer

參考代碼:day19/HTTPServer

功能

httpserver部分

擷取http請求

解析http請求

将請求發送給WebFrame

從WebFrame接收回報資料

将資料組織為Response格式發送給用戶端

WebFrame部分

從httpserver接收具體請求

根據請求進行邏輯處理和資料處理

将需要的資料回報給httpserver

特點

采用httpserver和應用處理分離的模式,降低了耦合度

采用了使用者配置檔案的思路

webframe部分采用了模拟後端架構的處理方法

技術點

httpserver部分需要與兩端建立通信

webFrame部分采用多路複用接收并發請求

資料傳遞使用json格式

項目結構:

|--httpserver --HttpServer.py (主程式)      
           |             --config (httpserver配置)   
  project--|
           |
           |
           |--WebFrame   --WebFrame.py (主程式代碼)
                         --static (存放靜态網頁)
                         --views.py ( 應用處理程式) 
                         --urls.py (存放路由)
                         --settings (架構配置)
           
互動資料格式協定
httpserver-->webframe  {method:'GET',info:'/'}

webframe-->httpserver {status:'200',data:'ccccc'}
           
git