git是什么贵扰?一個高端大氣上檔次的分布式版本控制系統(tǒng)菊霜。
相信小伙伴們對于git 并不陌生。對它當中文件的三種狀態(tài):已修改(modified)脊另,已暫存(staged)导狡,已提交(committed)很熟悉啦,只要是寫代碼就天天見偎痛。對應(yīng)的三種操作:
-
git add XX
:文件修改添加到暫存區(qū) -
git commit -m "XX"
:把暫存區(qū)的所有內(nèi)容提交到當前分支 -
git push XXX
:把本地的代碼提交到遠程
哈哈旱捧,這三條命令小伙伴們估計都十分清楚,畢竟天天的都在使用,下面我們來說點別的吧枚赡。
版本回退
哎呀氓癌,把文件改的亂成一團糟了,想看看以前寫的贫橙,怎么辦贪婉?版本回退唄(兩步走)。
- 用
git log
查看你的歷史記錄卢肃,這條命令會顯示從最近到最遠的提交日志疲迂,你會看見很多類似567893455...897655....
的數(shù)字,這就是你的版本號啦莫湘。 - 用
git reset --hard 56789
這個命令就可以回到這個版本號所代表的版本啦尤蒿。(版本號用哈西值表示,很長幅垮,回退時只用輸如前幾個就好了腰池,git會自動幫你找的。)
撤銷修改
當突然發(fā)現(xiàn)這次的修改是沒有意義的忙芒,怎么辦示弓?撤銷。加入你當前修改的文件的 aaa.js
,那么就用git checkout -- aaa.js
匕争,它會丟棄你對工作區(qū)的修改避乏。
如果你此時還沒有add到暫存區(qū),那么用這個命令后就會回到和版本庫一樣的狀態(tài)了甘桑。若果此時已經(jīng)add了拍皮,好吧,那就會回到添加到暫存區(qū)后的狀態(tài)跑杭。
刪除文件
假如你已經(jīng)git add 和commit 了一個文件bbb.js
,然后你在文件管理器中卻把bbb.js給刪了铆帽,用git status看下,它會告訴你刪除了bbb.js這個文件德谅。這里就有兩種情況了:
- 你確實是打算從git 版本庫里刪除這個文件爹橱,那就先用
git rm bbb.js
刪掉,再用git commit -m " XXX "
一下窄做,你就從版本庫里刪掉了愧驱。 - 如果你是不小心誤刪的,好吧椭盏,沒有關(guān)系组砚,
git checkout -- bbb.js
你就可以找回來了,因為git checkout
其實是用版本庫里的版本替換工作區(qū)的版本掏颊。
分支管理
很多小伙伴們在一起開發(fā)時寫代碼時可能會遇到這樣的尷尬情況糟红,你的代碼還沒寫完艾帐,如果提交代碼到主分支可能會影響整個系統(tǒng)代碼使別人的代碼無法工作。如果不提交要是突然電腦壞了代碼都找不到了盆偿,那該怎么辦柒爸?又或者這樣,當你正開發(fā)的好嗨皮的時候事扭,boss來了讓你干個其它的很緊急的活吧捎稚,這時候怎么弄?分支可以幫你解決這個問題句旱。
-
git checkout -b dev
建立一個叫div的分支并切換到該分支
git checkout
命令加上-b參數(shù)表示創(chuàng)建并切換阳藻,相當于git branch dev
和git checkout dev
兩條命令
-
git branch
命令查看當前所有的分支,并在當前分支前會標一個*
號 - 完成dev上的開發(fā)提交后用
git checkout master
可以切回master分支了 - 如果想在主分支上看見dev上開發(fā)的成果谈撒,那就合并分支吧,就dev合并在主分支上
git merge dev
匾南,合并后就可以在master上看見dev的提交了啃匿。 - 合并完了就可以刪除dev分支了,用這個命令
git branch -d dev
就可以啦蛆楞。
用上面方法合并分支時溯乒,Git會用Fast forward模式,但這種模式下豹爹,刪除分支后裆悄,會丟掉分支信息。如果要強制禁用Fast forward模式臂聋,命令長這樣
git merge --no-ff -m "merge with no-ff" dev
(其中--no-ff表示禁用Fast forward模式)光稼,Git就會在merge時生成一個新的commit,這樣孩等,從分支歷史上就可以看出分支信息艾君。
沒有用--no-ff的合并長這樣:
用--no-ff的合并長這樣:
小插曲:
- 我們要在新分支上工作時,可以把當前的工作區(qū)的東西暫存起來,用
git stash
命令,再次回來可以用git stash pop
肄方,回到工作現(xiàn)場冰垄。 - 合并分支還有另一個辦法
rebaseing
,它和merge
的區(qū)別,就參考這篇文章.
解決沖突
有時候,當master分支和dev分支各自都分別有新的提交,git 合并時就會出現(xiàn)沖突权她,有時git 會自動解決沖突虹茶,但有時就需要手動解決沖突了。我常用的IDE是WebStorm,它提供了很好用的解決沖突的插件隅要。打開WebStorm ->用快捷鍵Ctrl +shift+A
打開窗口 -> 輸入Resolve Conflicts...
就可以打開解決沖突的工具啦蝴罪,很好用的哦!
解決完沖突后再次提交代碼就OK啦,用git log --graph
命令可以看到分支合并圖拾徙。
最后洲炊,創(chuàng)建自己的密鑰并在github上配置,這樣使用git命令時不需要每次輸入密碼,參見教程,再給大家推薦一個很好玩的闖關(guān)的游戲吧暂衡,如果實在過不去了询微,就看看參考答案吧!(參考答案見參考文2,3,4,5,6)
參考文章:
1.http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
2.https://codingstyle.cn/topics/57 (2~10關(guān))
3.https://codingstyle.cn/topics/67 (11~20關(guān))
4.https://codingstyle.cn/topics/73 (21~30關(guān))
5.https://codingstyle.cn/topics/178 (31~40關(guān))
6.https://codingstyle.cn/topics/181 (41~55關(guān))