目錄
- 引入
- 版本控制
- 集中式和分布式版本控制
- git工作機制
- 代碼托管中心
- Git常用命令
- 設置用戶簽名
- 初始化本地庫
- 查看庫狀態
- add和提交
- 版本穿梭
- git分支操作
- 分支定義
- 分支好處
- 分支操作
- 查看分支
- 創建分支
- 切換分支
- 分支合并💕?🩷
- 合并沖突
- git團隊協作
- 團隊內協作
- 跨團隊協作
- Github遠程庫
- 創建遠程庫和別名
- push推送
- 拉取遠程庫到本地庫
- 三級目錄
- 項目場景:
- 問題描述
- 原因分析:
- 解決方案:
學習鏈接 尚硅谷 (鏈接: link)
TO某個姓li名tao喜歡視奸的男的,別視奸了哈,挺沒勁的。🤮🤮🤮💩
引入
版本控制
git主要是用于團隊協作
小紅和小藍各自修改代碼不同的區域,合并到master分支之后就是把修改的地方合并進去
集中式和分布式版本控制
集中式問題:代碼服務器的單點服務器問題
分布式:本地也可以做版本控制,每個客戶端保留完整項目;遠程一般是服務商也不容易掛掉
git工作機制
提交本地庫之后就會有歷史版本,eg v4版本是在v3版本之上的,所以歷史版本是不能刪掉的
- 提交歷史版本之后就可以push到遠程庫;
代碼托管中心
代碼托管中心一般就是我們認為的遠程庫
Git常用命令
🩷🩷🩷git中table也是可以自動補全的
設置用戶簽名
前面兩個設置好用戶簽名,用于提交代碼,==簽名的作用就是為了區分不同操作者身份
設置好用戶簽名之后,在本地的user賬號里面的.gitconfig可以看到信息,
- 這個和將來登錄github或者其他遠程庫的賬號沒有任何關系
初始化本地庫
git init:初始化本地庫之后才可以管理當前的文檔
ll命令:展示所有內容
查看庫狀態
vim中【先按esc】yy是復制,p是粘貼 :wq是保存
bash中linux命令通用
里面有文件沒有git add進入暫存區就會紅色提示
add和提交
中間那個965c6al]是提交的版本號
使用git reflog可以查看提交版本
git log可以看到詳細提交信息,包括用戶簽名
- 修改之后就可以使用git status查看狀態,會發現有改變,然后再add【會變綠】,再git commit,然后使用git log或者git relog就很方便
版本穿梭
版本穿梭會影響工作區,謹慎使用
如果需要恢復到之前的版本就是用版本穿梭,
具體操作:git reflog查看需要穿梭的版本好,然后使用git reset --hard 版本號,然后指針就會指向恢復的版本
前面提到的指針就是HEAD文件中記錄的,里面會告訴我當前是指向哪個分支【例如master】;要尋找具體是哪個版本號在ref里面找HEAD里面的分支的名字,里面記錄的就是版本號;
git分支操作
分支定義
定義:可以簡單理解分支為一個單獨的copy;開發完之后再合并進去
示意圖:master也是一個分支,或者稱為主線分支。
分支好處
分支操作
注意對話框,最右邊顯示的就是當前的分支
查看分支
git branch -v用于查看當前有幾個分支,例如下面這個只有一個分支master
創建分支
git branch 分支名:就可以創建一個新的分支 例如起名為hot-fix
切換分支
git checkout 分支名:
然后在這個分支下面修改文件,然后add,然后commit
分支合并💕?🩷
需要回到master分支上【git checkout master】,然后git merge hot-hit,就表示將hot-fix分支合并到master分支上;如果弄反了,沒有回到master分支,而是還在hot-fix分支上,那就是自己合并自己
- 一定要切回被合并的主干分支上
- 下面這個圖就表示合并成功,master合并的時候就被改了
合并沖突
例如:如果master分支和hot-fix分支都修改了同一個地方,就不會自動合并;
- 下面黃框表示合并沒有成功,還在合并
這時進入提醒conflict的文件里面用cat,會自動顯示沖突的地方;人為修改之后再add[ git add hello.txt],再commit,注意,這個時候commit的時候不用加文件名,會自動合并剛剛修改之后的
這個就是加了文檔名和不加文檔名的區別。加了文檔名會報錯,不知道合并哪一個,不加文檔名不報錯,直接合并剛剛人工手動修改的那個 - 注意!這里修改的還是master分支上面的,剛剛就是站在master分支角度合并出錯去修改的,那么hot-fix分支并不會改變
git團隊協作
團隊內協作
已有本地庫,如果再使用pull拉下來的話,本地庫會更新顯示別人的修改
跨團隊協作
遠程庫2首先fork【也就是復制,github上的fork就是這個意思】,開發好之后 pull ,遠程庫1審核后可以merge
Github遠程庫
創建遠程庫和別名
創造別名:因為遠程的鏈接有點長,起個名字
git remote -v 查看跟當前本地庫鏈接的遠程庫有哪些
git remote add 別名 分支
push推送
git push 剛剛起的別名 分支 可能因為網絡原因失敗
最好遠程和本地的名字是一樣的
拉取遠程庫到本地庫
本地庫和遠程庫不是同步的了,就需要拉取到本地然后更新修改
git pull 別名 遠程端的分支名字
三級目錄
項目場景:
提示:這里簡述項目相關背景:
例如:項目場景:示例:通過藍牙芯片(HC-05)與手機 APP 通信,每隔 5s 傳輸一批傳感器數據(不是很大)
問題描述
提示:這里描述項目中遇到的問題:
例如:數據傳輸過程中數據不時出現丟失的情況,偶爾會丟失一部分數據
APP 中接收數據代碼:
@Overridepublic void run() {bytes = mmInStream.read(buffer);mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();}
原因分析:
提示:這里填寫問題的分析:
例如:Handler
發送消息有兩種方式,分別是 Handler.obtainMessage()
和 Handler.sendMessage()
,其中 obtainMessage
方式當數據量過大時,由于 MessageQuene
大小也有限,所以當 message
處理不及時時,會造成先傳的數據被覆蓋,進而導致數據丟失。
解決方案:
提示:這里填寫該問題的具體解決方案:
例如:新建一個 Message
對象,并將讀取到的數據存入 Message
,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
換成 mHandler.sendMessage()
。