Git 是最流行的版本控制工具登渣。任何類型的文檔都是在不斷變化的噪服,就像APP一樣,時不時得發(fā)布新版胜茧,可能是修復(fù)bug粘优,也可能是增加新的功能,也可能是進(jìn)行重構(gòu)呻顽。
版本控制就賦予我們記錄每個版本狀態(tài)的能力雹顺,讓我們能知道各個版本之間有哪些改變。以及廊遍,更重要的一點嬉愧,隨時可以還原到以前的版本。
由此就帶來了兩個好處喉前。一是風(fēng)險控制没酣,由于可以隨時還原到先前的版本,所以可以放心大膽地改造卵迂,錯了還原就行裕便。
二是提高效率,這也體現(xiàn)在兩方面见咒。1. 原來我們做出改動后偿衰,要是發(fā)現(xiàn)有問題,撤消修改可費時了论颅。用Git之后用一條命令即可撤消所有的改變哎垦。2. 像Git可以創(chuàng)建分支囱嫩,即復(fù)制當(dāng)前的狀態(tài)恃疯。就像不斷地走叉路一樣,每當(dāng)你想走不同的路都可以新建一個分支墨闲,看看能不能走通今妄,走不通就換一條分支,幾乎沒有切換成本鸳碧。
目前使用 Git 最多的就是程序員了盾鳞,甚至可以說不使用 Git 的程序員就不是優(yōu)秀的程序員。雖然不會像程序員那樣頻繁使用瞻离,但普通的寫作者也可以從Git中得到很多好處腾仅。比如可以用markdown格式寫文章-也就意味著不要用word,然后使用 Git 管理文章套利,或者查看文章更新記錄推励。
提到 Git鹤耍,就不能不提Github⊙榇牵可以認(rèn)為Github是Git的云端稿黄,在本地用Git提交完修改之后,可以把文件 push 到Github跌造,這樣其他人可以把新版本 pull 至本地杆怕。這就提供了很方便地協(xié)作方式,Github上也存在著大量的開源項目壳贪。
Git 受歡迎到什么程序呢陵珍?舉個例子,Macbook就自帶了Git违施。打開終端撑教,輸入git --version
即可查看git版本。
Git 使用起來也很方便醉拓。在終端中輸入git init
即在當(dāng)前目錄下新建了一個資源庫伟姐,此目錄下的所有文件都可以通過git進(jìn)行管理了。
Git入門只需要知道如下七個命令亿卤,知道了這些之后自己就可嘗試先玩一玩愤兵,碰到不懂的再Google一下,隨著時間積累經(jīng)驗即可排吴。
假設(shè)你修改了當(dāng)前目錄下的一個文件秆乳,那怎么“更新版本”呢?首先使用 git add filename
將修改的文件加入暫存區(qū)钻哩,然后使用git commit
提交當(dāng)前文件屹堰,這時你可以記錄下本次更新的重點。你可以多次使用git add
將多個文件分不同次加入暫存區(qū)街氢,然后一次性提交扯键,這對程序員來說非常有用。
有時修你不確定自己是否對文件做了修改珊肃,那你可以通過git status
來獲得這部分信息荣刑,加入暫存區(qū)、未加入暫存區(qū)伦乔、未跟蹤的文件信息都會顯示出來厉亏。
同時你可以通過git log
來獲得歷史提交記錄,也就是版本更新歷史烈和。每次提交都會產(chǎn)生一個id號爱只,通過這個命令你就能獲取對應(yīng)版本的id號了。除了id號之外招刹,你還能看到每次提交你所做的記錄恬试,所以只要你記錄的夠詳細(xì)沥匈,你就能快速知道每個版本之間的差距是什么。
當(dāng)你使用git init
生成git資源庫時會自動生成了一個主分支master忘渔,若是你想嘗試走個“叉路”高帖,可以通過git branch -b branchName
來新建一個分支,你可以在這個分支里隨意折騰畦粮。
你可以通過git checkout branchName
命令在不同的分支之間進(jìn)行切換散址。若是在分支中實驗成功了,那你可以把分支中的提交合并到主分支中去宣赔,方法就是進(jìn)入主分支后预麸,輸入git merge branchName
即可把分支branchName中的提交合并進(jìn)去。
此時輸入git log
就能看到主分支中多了合并分支中的提交了儒将。
看到這吏祸,你就可以先自己玩起來了,等你嘗試用它管理自己的代碼或文章之后钩蚊,你會發(fā)現(xiàn)再也離不開它了贡翘。
由于最近頻繁的使用git,以下記錄使用過的一些命令砰逻。
git checkout filename 撤消文件的改動至最新的版本
git log -p filename 查看某文件的歷史修改記錄
git show commit-id filename 查看某文件某次提交中的變換
git reset --hard 將代碼回滾至上一個版本
git reset --hard commit_id 將代碼回滾至commit_id版本
git reset HEAD^ filename 回退某個文件至上一個版本
git branch -D branchName 刪除分支
git reset HEAD filename 取消已經(jīng)暫存的文件
git reset HEAD~ 取消最近一次提交
git reset commit_id filename 取消文件最近幾次的提交鸣驱;此時輸入git checkout filename即可恢復(fù)文件至commit_id這個版本
git commit --amend 修改最后一次提交
git reset -hard origin/master 將本地的狀態(tài)回通到和遠(yuǎn)程的一樣
git rm --cached FILENAME 不再跟蹤已提交的文件
若是不想跟蹤某個文件,也不想在git status
看到這個文件蝠咆,可以將文件名添加到 .gitignore這個隱藏文件中踊东。
最后分享我使用git的一個錯誤。最近開發(fā)維護(hù)了四個項目代碼刚操,我確在一個分支中同時進(jìn)行四個項目的開發(fā)維護(hù)闸翅。由于其中一個項目還存在bug,我不能將代碼合并到主分支去菊霜,這就影響了其它開發(fā)完的項目坚冀,導(dǎo)致其它項目也不能合并到主分支。這次教訓(xùn)讓我知道了占卧,每個項目都要有單獨的分支遗菠,要保持獨立性联喘,互不影響华蜒。