Git是目前世界上最早進的分佈式版本控制系統,這裏有兩個名詞:分佈式、版本控制。git
牆裂推薦 廖雪峯的 Git 教程。這篇文章也算是看了 廖老師的教程後寫的一點筆記。web
集中式 VS 分佈式,app
版本控制:顧名思義,就是經過各個版本的內容來對文件進行管理,能夠經過查看各個版本能夠知道修改人和修改時間。分佈式
以前也一直在使用 Git ,可是使用的基本都是備份的功能,使用的也是一些我的開發(非團隊協做)常見的命令,如:svg
git init git add . git commit -m "xxx" git push git pull git status git checkout -b dev git diff
固然若是隻是我的使用,知道以上命令就能夠使用好 Git 了。測試
在大型項目中確定會有多人協做的狀況,因此咱們須要瞭解 Git 在多人協做時的一些操做。url
在多人協做中常常遇到的問題就是多我的修改同一個文件的衝突,解決辦法就是先處理衝突,看是要保留咱們的修改仍是保留其餘人的修改,或者是合併兩者的修改。spa
在開發中常見的場景還有:.net
- 修復 Bug
- 添加新功能
- 打 Tag
- 版本回退
- 撤銷修改
- 刪除文件
在開始介紹以上幾個功能的命令以前先了解一下 Git 中 工做區和暫緩區 的概念。版本控制
暫緩區:git add <file>
這個命令是將文件添加到 暫緩區,git commit -m "xxx"
這是將暫緩區的內容提交到分支。
工做區:就是咱們在實時編輯的文件,在 git commit -m "xxx"
以後沒作任何修改,那麼工做區就是乾淨的。
修復 Bug
在開發中常常還在寫代碼,忽然測試跟你說有 Bug 了須要緊急修改,那麼這時候須要用上 Git 的 修復 Bug 的版本控制了。
- 保存當前的修改。
git stash
- 首先肯定出現 Bug 的分支,從那個分支建立出一個修復 Bug 的分支。
切換分子:git checkout 分支名,建立 Bug 分支:git checkout -b issue-101
- 在 Bug 分支上修復問題,合併分支,刪除 Bug 分支。
修復問題並提交:git add <file> , git commit -m "xxx", 切回到出 Bug 的分支:git checkout 分支名,合併分支:git merge --no-ff -m "merged bug fix 101" issue-101
- 回到保存代碼的分支上繼續擼碼。
git checkout 保存代碼的分支,查看保存的列表:git stash list,取出保存的代碼:git stash pop, 取出某個保存的代碼:git stash apply stash@{id}
添加新功能
和修復 Bug 分支操做相似
- 保存當前的修改
- 找到要添加新功能的分支版本,建立出一個 feature 分支。
- 完成新功能,合併分支,刪除分支。
若是在合併以前想放棄新功能能夠使用:git branch -D feature-vulcan 強行刪除分支
- 回到保存代碼的分支上繼續擼碼。
打 Tag
tag
就是一個讓人容易記住的有意義的名字,它跟某個commit
綁在一塊兒。例如版本發佈時須要指定某個時刻提交的版本進行打包,須要根據commit id
去查找,一大串的英文數字中找到一串commit id
看着不是很爽,因此咱們在commit
的時候加上tag
名字後,須要打包某一個時刻提交的版本,直接搜索tag
名稱便可找到commit id
,最後經過commit id
打包。
- 命令
git tag <tagname>
用於新建一個標籤,默認爲HEAD
,也能夠指定一個commit id
; - 命令
git tag -a <tagname> -m "blablabla..."
能夠指定標籤信息; - 命令
git tag
能夠查看全部標籤。 - 命令
git show <tagname>
能夠看到說明文字
版本回退
顧名思義就是撤銷修改的意思,就像吃了後悔藥的那種效果。前提是沒有提交到遠程倉庫
- 回退上一個版本。
git reset --hard HEAD^
- 回退上上一個版本。
git reset --hard HEAD^^
- 回退到某個版本。
git reset --hard <填寫 commitId 前幾位便可>
回退到某個版本須要 commit id
,能夠經過 git log
命令查看具體的commit id
,若是嫌棄git log
打印的內容太雜,能夠使用 git log --pretty=oneline
查看 commit id
若是已經回退後的版本又想恢復,可是找不到commit id
,能夠經過git reflog
來查找commit id
,它的做用是用來記錄你的每一次命令。
撤銷修改
若是還未添加到暫緩區,也就是所作的修改尚未作git add
操做
能夠使用命令git checkout -- file
能夠丟棄工做區的修改。
若是已經添加到暫緩區可是還沒提交,也就是作了git add
可是還沒作git commit -m "xxx"
,能夠使用命令git reset HEAD <file>
將暫存區的修改撤銷掉(unstage),從新放回工做區
刪除文件
包含真的要刪除文件以及誤刪文件。
真的要刪除文件
git rm <file> git commit -m "remove file"
誤刪文件,想要恢復(和撤銷修改相似)
git checkout -- file
本文同步分享在 博客「_龍衣」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。