寫這篇文章的初衷是記錄自己在開發中使用git遇到的問題和如何利用git進行高效的開發,個人理解來看,很多人對git運用不自如主要是兩方面的原因:1、死記硬背命令,這個其實可以通過help或者官網的檔案探索命令,而且命令都是熟能生巧的,2、對git的原理理解不到位,在對于多分支的代碼開發中,很多情況不及時更新代碼,或者無法認識到自己在開發分支的操作在合入時對他人開發教程的影響,這些其實是可以通過了解git的原理去避免的,這樣也會使我們的開發高效化,
1、git原理
對于剛進入公司的小白,往往都是先學習如何安裝git,然后配置好環境后在clone代碼,創建分支去進行開發,可能并不知道git是什么,為什么用git進行開發?git作為分布式版本控制系統,可以保證團隊成員每個人都有本地的一份代碼倉庫,每個人在自己的機器上提交代碼,查找歷史,大多數的操作通過本地進行,來避免網路等限制,換句話說,團隊成員本地互相開發的時候互相不限制,最后通過自己的本地倉庫和遠程主倉進行統一規則的合并來保證代碼的提交與運行,
我們在使用git開發中還需要了解作業區,暫存區,倉庫區,遠程倉庫這幾個概念,

Workspace: 作業區,平常用編輯器修改代碼的地方,
Index / Stage: 暫存區,用于臨時存放你的改動,事實上它只是一個檔案,作業區修改提交,保存即將提交到檔案串列資訊
Repository: 倉庫區(或版本庫),就是安全存放資料的位置,將暫存區的內容通過commit放入倉庫的版本
Remote: 遠程倉庫,托管代碼的服務器,可以簡單的認為是你專案組中倉庫中用于遠程資料交換
通過使用git的提交流程一般是這樣的:
1、使用編輯器對作業區修改代碼;
2、作業區的修改通過git add 命令提交到暫存區域;
3、暫存區內容通過commit生成commit message,并放入當前的git倉庫(當前開發分支)
4、 如果代碼在當前分支上review 沒問題,通常都會push或者merge和主分支master進行合并,即將你開發的代碼合入主倉,完成最終的提交,
對git進行進一步入門學習的話,可以參考廖雪峰老師的git課程,對小白會更加友好一些:this
2、開發中必備的git操作
- git pull <遠程主機名> <遠程分支名>:<本地分支名> 省略號后面通常可以省略通常用作將遠程分支代碼拉取過來和本地分支進行合并
通常用作將遠程分支代碼拉取過來和本地分支進行合并
常用命令: git pull origin master - 查看修改的代碼
A git status命令可以查看當前作業區的修改檔案,和已經提交到暫存區檔案(只能看檔案名,無法查看內容)
B 查看當前作業區修改的檔案內容可以使用git diff filename , 查看暫存區的內容 git diff --cached filename (把暫存區與版本庫最近一次 commit 的內容進行比較)
C 查看從暫存區commit到分支的代碼: git log (git log -p -number 獲取number次)獲取commit_id ,使用git show commit_id 即可
D 將未正式提交代碼(作業區 + 暫存區) 與最新commit代碼比較可以直接使用 git diff HEAD - 修改commit注釋
實際開發中會存在commit message寫錯或需要補充的情況,
A 修改最后一次commit的資訊,且沒有push上去:git commit --amend
B 修改多次commit資訊, 回退到當前版本的倒數第n次狀態 : git rebase -i HEAD~n, 將修改行的pick 改為edit,寫入(ctrl+o),離開(ctrl + x), 再使用git commit --amend,便完成一條commit的修改,如果是多條,還需要git rebase --continue繼續進行, - 撤銷和回滾操作
A git status 查看當前狀態
B 如果是作業區中 撤銷檔案 git checkout --filename, 多個檔案撤銷 git checkout -- .
C 如果是暫存區中 撤銷檔案 git reset HEAD filename, 多個檔案 git reset HEAD
D commit之后撤銷 git reset <commit_id>
參考鏈接: this - 不提交當前分支前提下切換分支
git stash操作把修改但不想提交的內容保存到堆疊中(自己喜歡稱呼堆疊,更親切),git stash list 查看堆疊中存盤的內容, git stash pop 將最近的一次保存的內容pop到作業區,洗掉保存內容,git stash apply stash@{1}不洗掉保存內容,后續洗掉需要git stash drop stash@{1} - git rebase 和 git merge的區別
參考鏈接:this - git reset 和 git revert的區別
參考鏈接:this
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294087.html
標籤:其他
上一篇:在開發中將git運用自如
下一篇:談談網路協議 – HTTP協議
