git 爬坑小结
git 作為一個(gè)當(dāng)下最流行的版本控制工具,不會(huì)git都不好意思(吹)聊(牛)天,但是作為一個(gè)剛接觸不久的小白,在使用過(guò)程中,還是遇到一些頭疼的地方,所以開個(gè)帖,記錄下在學(xué)習(xí)和使用git的過(guò)程中的筆記和一些小技巧。(大佬勿噴~)
常用命令
我們?nèi)粘J褂米疃嗟拿顟?yīng)該就是這些了,也基本上滿足大部分工作流
-
git init 創(chuàng)建版本庫(kù),會(huì)在當(dāng)前根目錄生成 .git文件夾,當(dāng)前項(xiàng)目的git相關(guān)配置都在這個(gè)文件夾下
-
git clone 你是我?對(duì),你就是我
-
git add [<options>] 將有變更的文件添加到暫存區(qū),可以指定文件或者全部添加 git add .
-
git status 顧名思義啦,查看當(dāng)前項(xiàng)目狀態(tài),是不是有修改,暫存區(qū)是不是有待提交文件等
-
git commit -m "message" 將暫存區(qū)的文件提交到當(dāng)前分支中,message 不可以為空,一個(gè)好的message可是非常重要的,畢竟哪個(gè)開發(fā)狗手里沒(méi)個(gè)板磚
-
git remote add <name> <url> 當(dāng)我們本地的代碼需要上傳到服務(wù)器時(shí),就需要新增個(gè)遠(yuǎn)端服務(wù)的地址,name指定一個(gè)名稱,該名稱在后續(xù)的操作非常有用的,url 遠(yuǎn)程倉(cāng)庫(kù)的地址
-
git push <remote-name> <branch> 這個(gè)命令可以理解為,將本地的修改推送到遠(yuǎn)端倉(cāng)庫(kù)里,remote-name 就是我們?cè)?git remote add 設(shè)定的名字,branch 指定推送上去的分支
-
git pull <remote-name> <branch> 功能與上一個(gè)相反,將遠(yuǎn)端的代碼更新到本地,<remote-name> <branch>就不多解釋了哈
-
git checkout -b <branch> [<remote-name>/<branch>] 創(chuàng)建分支,有兩種情景,一 在當(dāng)前分支的基礎(chǔ)上創(chuàng)建的新分支,那么使用這個(gè) git checkout -b <branch> 或者 git branch <branch> ,在hot fix 的時(shí)候就非常適用;二 想從遠(yuǎn)端拉取個(gè)新的功能分支,那么來(lái)發(fā)這個(gè) git checkout -b <branch> <remote-name>/<branch> 指定遠(yuǎn)端和具體分支,適合多分支同時(shí)開發(fā)的場(chǎng)景
-
git checkout <branch> 切換分支
-
git branch [--list] 查看分支列表
-
git branch -d <branch> 刪除分支,say goodbye
-
git fetch <remote-name> 將本地庫(kù)所關(guān)聯(lián)的遠(yuǎn)程庫(kù)的commit id更新至最新,如果大家使用 git pull 來(lái)更新代碼,那基本上不會(huì)使用該命令,不過(guò)在當(dāng)我們不想更新遠(yuǎn)程倉(cāng)庫(kù),卻又想查看遠(yuǎn)程倉(cāng)庫(kù)的最新提交歷史的時(shí)候,這就派上用場(chǎng)啦
更新本地倉(cāng)庫(kù)
通常有兩種方式
解決沖突
對(duì)小白來(lái)說(shuō),最可怕的莫過(guò)于,代碼擼完了,一提交,臥槽!有沖突! 好吧,沖突其實(shí)并(非)不(常)可怕。 沖突建議在本地進(jìn)行解決,不建議在網(wǎng)頁(yè)上操作,因?yàn)闀?huì)默認(rèn)雙向合并,親自測(cè)出來(lái)的
撤銷修改
誰(shuí)沒(méi)寫過(guò)bug的時(shí)候,但被眼光犀利的我們發(fā)現(xiàn)了,我們用如下操作將其roll-back。有以下三種場(chǎng)景
修改還沒(méi)有加入暫存區(qū)
還沒(méi)有執(zhí)行 git add
git checkout -- <file> 該文件的修改,將被啪嘰打回最初狀態(tài),不過(guò)若是某一處地方需要還原,這個(gè)操作就不適合了,手動(dòng)修改即可
修改還在暫存區(qū)
已經(jīng)git add , 但未 git commit提交
git reset HEAD <file>... 將文件從暫存區(qū)撤銷掉
修改已經(jīng)提交到分支上
頭腦混亂中,已經(jīng)把bug commit 上去了(寫bug我們從來(lái)不含糊),如果是這個(gè)bug涉及的代碼量非常多,需要完全重新寫過(guò)那種,那可以通過(guò)回滾的方式 git reset --hard HEAD~ 回退到上一個(gè)版本 ,或者回滾到指定的版本號(hào)
文件名大小寫
某個(gè)已經(jīng)提交的文件,想要修改文件名稱的大小寫,啪嘰,改完,發(fā)現(xiàn)git沒(méi)檢查出有變更,心理mmp,莫慌,git 默認(rèn)對(duì)于文件名大小寫是不敏感的,所以git認(rèn)為當(dāng)前代碼無(wú)任何改動(dòng),那么如何才能讓 git 識(shí)別文件名大小寫變化呢 有兩種方式
.gitignore
顧名思義,指定文件或目錄,git將其視為空氣。
有個(gè)情景,若某個(gè)已經(jīng)版本管理中的文件,想不要納入版本管理中,可如下操作
.gitignore中添加規(guī)則
git rm [-f] <filename> 將文件從版本控制中刪除,同時(shí)本地文件也會(huì)被物理刪除
git rm --cached <filename> 僅從版本庫(kù)中刪除,本地文件仍然保留
git commit -m "remove file from git"
提交空文件夾
git會(huì)無(wú)視我們的空文件夾,但當(dāng)我們又不得不提交的時(shí)候,我們可以創(chuàng)建個(gè)對(duì)項(xiàng)目無(wú)影響的文件,如 .gitkeep 名字大家隨意即可
設(shè)置別名
如果你使用的是可視化工具,那當(dāng)我沒(méi)說(shuō)~
早上 git xxx,下午git xxx ,時(shí)間久了,大伙一定發(fā)現(xiàn),常用的那些命令每天都要敲個(gè)幾百遍,肌肉都有記憶了,敲快一點(diǎn),還不小心敲錯(cuò)了。放心,我們可以設(shè)置別名,讓大家少敲幾個(gè)單詞啦
git config --global alias.<alias-name> <name> 告訴git,以后 alias-name 就是 name 了 以下是我設(shè)置的別名列表
git config --global alias.co checkout git config --global alias.cm commit git config --global alias.br branch git config --global alias.fu 'fetch upstream' git config --global alias.po 'push origin' git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 復(fù)制代碼大家根據(jù)自己的習(xí)慣折騰就好啦,--global指的是全局設(shè)置,若想查看配置信息, cd ~ ; cat .gitconfig 即可查看
可視化工具
這方面的工具,市面上一大把了,比如
[Git GUI] gitk 即可打開,一個(gè)非常淳樸的GUI
sourcetree
tortoisegit
SmartGit
我用過(guò)sourcetree,感覺(jué)還不錯(cuò),非常直觀,個(gè)人不推薦小白入門使用圖形化工具,萬(wàn)一不小心點(diǎn)錯(cuò)了,真不知道該如何處理~ (來(lái)自一個(gè)制帳加手殘的前端狗的溫馨提醒)
-----------------------我是分割線--------------------------
我還會(huì)持續(xù)更新的~歡迎大家持續(xù)關(guān)注
總結(jié)
- 上一篇: Ambrosus宣布推出用于Web Ap
- 下一篇: 区块链100讲:据说,80%的人都搞不懂