目錄
GIT簡介
- 什麼是git
git是一個開源的分佈式版本控制系統,用於高效的管理各種大小項目和文件。 - 代碼管理工具的用途
- 防止代碼丟失,做備份
- 項目的版本管理和控制,可以通過設置節點進行跳轉
- 建立各自的開發環境分支,互不影響,方便合併
- 在多終端開發時,方便代碼的相互傳輸
- git的特點
- git是開源的,多在Linux/Unix下使用,可以管理各種文件
- git是分佈式的項目管理工具(svn是集中式的)
- git數據管理更多樣化,分享速度快,數據安全
- git 擁有更好的分支支持,方便多人協調
- git安裝
sudo apt-get install git
GIT使用
基本概念
- 工作區:項目所在操作目錄,實際操作項目的區域
- 暫存區: 用於記錄工作區的工作(修改)內容
- 倉庫區: 用於備份工作區的內容
- 遠程倉庫: 遠程主機上的GIT倉庫
注意: 在本地倉庫中,git總是希望工作區的內容與倉庫區保持一致,而且只有倉庫區的內容才能和其他遠程倉庫交互。
初始配置
- 配置命令: git config
- 配置所有用戶: git config --system [選項]
- 配置文件位置: /etc/gitconfig
- 配置當前用戶: git config --global [選項]
- 配置文件位置: ~/.gitconfig
- 配置當前項目: git config [選項]
- 配置文件位置: project/.git/config
- 配置所有用戶: git config --system [選項]
- 配置用戶名
e.g. 將用戶名設置爲Tedu
sudo git config --system user.name Tedu
cat /etc/gitconfig - 配置用戶郵箱
e.g. 將郵箱設置爲[email protected]
git config --global user.email [email protected]
cat ~/.gitconfig - 配置編譯器
e.g. 配置編譯器爲pycharm
git config core.editor pycharm - 查看配置信息
git config --list
基本命令
-
初始化倉庫
git init
意義:將某個項目目錄變爲git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理,如果不想要git管理了,直接將.git/文件刪除即可,初始化的目錄可以爲空,可以不爲空 -
查看本地倉庫狀態
git status
說明: 初始化倉庫後默認工作在master分支(初始時被稱爲在主分支上),當工作區與倉庫區不一致時會有提示。 -
將工作內容記錄到暫存區
git add [files…] (多個文件用空格隔開)
e.g. 將 a ,b 記錄到暫存區
git add a b
e.g. 將所有文件(不包含隱藏文件,隱藏文件指出文件名提交)記錄到暫存區
git add *
-
取消文件暫存記錄
git rm --cached [file] -
將文件同步到本地倉庫
git commit [file] -m [message](file爲同步文件名,寫的話,只同步指定的文件,不寫的話,同步所有文件,message爲提交所填寫的信息)
說明: -m表示添加一些同步信息,表達同步內容
e.g. 將暫存區所有記錄同步到倉庫區
git commit -m ‘add files’
-
查看commit 日誌記錄
git log
git log --pretty=oneline -
比較工作區文件和倉庫文件差異
git diff [file] -
放棄工作區文件修改(多用於文件內容修改後恢復)
git checkout – [file] -
從倉庫區恢復文件(多用於文件刪除後恢復)
git checkout [file] -
移動或者刪除文件
git mv [file] [path]
git rm [files]
注意: 這兩個操作會修改工作區內容,同時將操作記錄提交到暫存區。
@擴展延伸(忽略規則)
在Git項目中可以通過在項目的某個文件夾下定義.gitignore文件的方式,規定相應的忽略規則,用來管理當前文件夾下的文件的Git提交行爲。.gitignore 文件是可以提交到公有倉庫中,這就爲該項目下的所有開發者都共享一套定義好的忽略規則。在.gitingore 文件中,遵循相應的語法,在每一行指定一個忽略規則。
版本控制
-
退回到上一個commit節點
git reset --hard HEAD^
注意 : 一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和當前commit版本保持一致 -
退回到指定的commit_id節點
git reset --hard [commit_id(前7位即可)] -
查看所有操作記錄
git reflog
注意:最上面的爲最新記錄,可以利用commit_id去往任何操作位置 -
創建標籤
標籤: 在項目的重要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’ -
查看標籤
git tag (查看標籤列表)
git show [tag_name] (查看標籤詳細信息) -
去往某個標籤節點
git reset --hard [tag] -
刪除標籤
git tag -d [tag]
保存工作區
-
保存工作區內容
git stash save [message]
說明: 將工作區未提交的修改保存,讓工作區回到修改前的狀態 -
查看工作區列表
git stash list
說明: 最新保存的工作區在最上面 -
應用某個工作區
git stash apply [stash@{n}] -
刪除工作區
git stash drop [stash@{n}] 刪除某一個工作區
git stash clear 刪除所有保存的工作區
分支管理
定義: 分支即每個人在原有代碼(分支)的基礎上建立自己的工作環境,單獨開發,互不干擾。完成開發工作後再進行分支統一合併。
-
查看分支情況
git branch
branch後可以加“-r”,表示查看遠程分支,“-a”表示查看所有分支,默認不加,表示查看本地分支說明: 輸出結果前面帶 * 的分支表示當前工作分支
-
創建分支
git branch [branch_name]說明: 基於a分支創建b分支,此時b分支會擁有a分支全部內容。在創建b分支時最好保持a分支"乾淨"狀態。
-
切換工作分支
git checkout [branch]說明: 2,3可以同時操作,即創建並切換分支,如下:git checkout -b [branch_name]
-
合併分支(先切換到主分支,然後再合併分支)
git merge [branch]
- 衝突問題是合併分支過程中最爲棘手的問題:
- 當分支合併時,原分支和以前發生了變化就會產生衝突
- 當合並分支時添加新的模塊(文件),這種衝突可以自動解決,只需自己決定commit操作即可。
- 當合並分支時兩個分支修改了同一個文件,則需要手動解決衝突。
- 刪除分支
git branch -d [branch] 刪除分支
git branch -D [branch] 刪除沒有被合併的分支
遠程倉庫
-
什麼是遠程倉庫
遠程主機上的git倉庫。實際上git是分佈式結構,每臺主機的git倉庫結構類似,只是把別人主機上的git倉庫稱爲遠程倉庫。 -
共享倉庫
在git倉庫中bare屬性爲True的共享倉庫可以很好的和遠程倉庫進行交互
創建步驟:
-
選擇共享倉庫目錄,將該目錄屬主設置爲當前用戶
mkdir gitrepo
chown xiecheng:xiecheng gitrepo -
將該目錄初始化爲git共享目錄,下例中ai爲自己取的項目名稱,.git爲通用結尾後綴
cd gitrepo
git init --bare ai.git -
將git配置目錄與項目目錄設置爲相同的屬主
chown -R xiecheng:xiecheng ai.git
遠程倉庫操作命令
所有操作在本地git倉庫下進行
-
添加遠程倉庫
git remote add origin [email protected]:/home/xiecheng/useGit/gitrepo/ai.git -
刪除遠程主機
git remote rm [origin] -
查看連接的主機
git remote
注意: 一個git項目連接的遠程主機名不會重複 -
將本地分支推送給遠程倉庫
將master分支推送給origin主機遠程倉庫,第一次推送分支使用-u表示與遠程對應分支建立自動關聯git push -u origin master,第二次推送直接 git push就可以。 -
刪除遠程分支
git branch -a 查看所有分支(包括與遠程倉庫建立的遠程分支)
git push origin [:branch] 刪除遠程分支 -
其他推送方法
git push --force origin 用於本地版本比遠程版本舊時強行推送本地版本
git push origin [tag] 推送本地標籤到遠程
git push origin --tags 推送本地所有標籤到遠程
git push origin --delete tag [tagname] 刪除遠程倉庫標籤 -
從遠程獲取項目
git clone [email protected]:/home/xiecheng/useGit/gitrepo/ai.git
注意:獲取到本地的項目會自動和遠程倉庫建立連接。且獲取的項目本身也是個git項目。 -
從遠程獲取代碼
git pull
git fetch origin master:tmp(將遠程分支master拉取到本地,作爲tmp分支)
區別:
- pull將遠程內容直接拉取到本地,並和對應分支內容進行合併
- fetch將遠程分支內容拉取到本地,但是不會和本地對應分支合併,可以自己判斷後再使用merge合併。
GitHub使用
介紹
github是一個開源的項目社區網站,擁有全球最多的開源項目。開發者可以註冊網站在github建立自己的項目倉庫。
網址: github.com
代碼管理工具:git
獲取項目
- 在左上角搜索欄搜索想要的獲取的項目
- 選擇項目後複製項目git地址
- 在本地使用git clone方法即可獲取
創建git倉庫
- 點擊右上角加號下拉菜單,選擇新的倉庫
- 填寫相應的項目信息即可
- github倉庫相對本地主機就是一個遠程倉庫 通過remote連接,如果需要輸入密碼輸 入github密碼即可。連接後即可使用遠程倉庫操作命令操作。readme文件會被自動作爲項目介紹
- 如果是在即的倉庫在倉庫界面選擇settings,在最後可以選擇刪除倉庫
添加ssh祕鑰
如果使用http協議訪問github則每次都需要輸入密碼,如果是自己的私人計算機可以使用ssh協議訪問,添加祕鑰後則不再需要每次輸入密碼。
- 登錄github賬號
- 右上角頭像下拉菜單–>settings -->左側 SSH and GPG keys -->new ssh key -->填寫title,將私人計算機公鑰內容加入key文本框 點擊add…
pip 的使用
-
作用 : 管理python的標準第三方庫中第三方軟件包(標準第三方庫:經過驗證的,比較好的第三方庫)
-
安裝
sudo apt-get install python3-pip
-
常用命令:
安裝軟件: pip3 install [package]
e.g. sudo pip3 install ssh查看當前python軟件包 : pip3 list
搜索某個名字的python包:pip3 search [name]
查看軟件包信息:pip3 show [package]
升級軟件包: pip3 install --upgrade [package]
卸載軟件包: sudo pip3 uninstall [package]
e.g. sudo pip3 uninstall ssh導出軟件包環境:pip3 freeze > requirements.txt
根據文檔自動安裝:pip3 install -r requirements.txt
軟件項目開發流程
流程:需求分析 ----》 概要設計 —》 項目計劃 ----》詳細設計—》編碼測試 -----》項目測試 ----》調試修改 —》項目發佈 ----》後期維護
- 需求分析 :確定用戶的真實需求
- 確定用戶的真實需求,項目的基本功能(產品經理)
- 確定項目的整體難度和可行性分析
- 需求分析文檔,用戶確認
- 概要設計:對項目進行初步分析和整體設計
- 確定功能模塊
- 進行可行性分析 搭建整體架構圖
- 確定技術思路和使用框架
- 形成概要文檔指導開發流程
- 項目計劃 :確定項目開發的時間軸和流程(項目經理)
- 確定開發工作的先後順序
- 確定時間軸 ,事件里程碑
- 人員分工
- 形成甘特圖和思維導圖等輔助內容
- 詳細設計 :項目的具體實現手冊
- 形成詳細設計文檔 : 思路,邏輯流程,功能說明,技術點說明,數據結構說明,代碼說明
- 編碼測試 : 按照預定計劃實現代碼編寫,並且做基本監測
- 代碼編寫
- 寫測試程序
- 技術攻關
- 項目測試 :對項目按照公進行測試
- 跨平臺測試 ,使用測試
- 根據測試報告進行代碼修改
- 完成測試報告
- 項目發佈
- 項目交付用戶進行發佈
- 編寫項目說明文檔
- 後期維護
- 維護項目正常運轉
- 進行項目的迭代升級
項目注意事項
- 按時完成項目工作和項目時間不足之間的衝突
- 項目實施人員之間的衝突
項目工具的使用
編寫文檔: word ppt Excel markdown LaTex
項目流程圖 : Mindmanager visio
項目管理 : project
代碼管理 : Svn git