git的简单理解及基础操作命令
前端小白一枚,最近開始使用git,于是花了2天看了廖雪峰的git教程(偏實(shí)踐,對于學(xué)習(xí)git的基礎(chǔ)操作很有幫助哦),也在看《git版本控制管理》這本書(偏理論,內(nèi)容完善,很不錯),針對所學(xué)內(nèi)容建了git倉庫測試,且寫了不少git操作命令的筆記,做個分享,有錯誤的地方各位大大也給提出,好做修改~
Git是一款免費(fèi)、開源的、用Linux內(nèi)核開發(fā)的分布式版本控制系統(tǒng)。
git和svn有什么區(qū)別呢?
git采用分布式版本庫管理,而svn采用集中式版本庫管理。
集中式版本庫管理需要有一臺存放版本庫的服務(wù)器,開發(fā)人員在開發(fā)的時候分別從服務(wù)器拉取過來最新版本,然后創(chuàng)建/進(jìn)入分支進(jìn)行開發(fā),開發(fā)完成之后將分支提交或者合并到主分支。
分布式版本庫管理允許開發(fā)者們將版本庫搬到自己的電腦上,在開發(fā)過程中,開發(fā)者們可以根據(jù)不同的目的創(chuàng)建分支和修改代碼,開發(fā)完成后進(jìn)行各項合并,這樣做提高了開發(fā)的敏捷性和速度,并且減少了公共服務(wù)器的壓力,且任意兩個開發(fā)者之間的沖突更容易得到解決。
git安裝
首先,你可以在你的電腦上執(zhí)行"git"命令,檢查是否已安裝git。如果已安裝,則會列出它的選項和最常用的子命令。如果未安裝,則打印提示未安裝或不是內(nèi)部/外部命令。
安裝包下載地址:git.download,按需選擇吧,想必憑各位多年的電腦開關(guān)機(jī)經(jīng)驗,QQ、瀏覽器、游戲等的安裝卸載經(jīng)驗,這步驟應(yīng)該不會出現(xiàn)什么問題。
git的配置
安裝完git,我們執(zhí)行"git"命令查看它的選項和最常用的子命令。
//這里命令也就不一一列出了,大家自己執(zhí)行看下即可(讓我偽裝下注釋,謝謝~)
然后就是配置你的名稱及郵箱:
git config --global user.name "yeshou" git config --global user.email "xxx@qq.com"我們可以通過根目錄下的.gitconfig文件查看配置信息,這里加了--global,所以是全局配置,若其他倉庫木有單獨(dú)配置,則使用的是全局的,如果其他倉庫需要單獨(dú)配置,去掉--global重復(fù)以上操作即可,同理,可在對應(yīng)倉庫文件夾下看.gitconfig文件的配置信息(友情提示,這是個隱藏文件)。
生成SSH-key
配置完了git的提交人信息,我們在本地生成個ssh-key,用來驗證提交者身份。
ssh-keygen -t rsa -C "xxx@qq.com"然后在.ssh文件夾下找到id_rsa.pub文件,里面內(nèi)容復(fù)制到github的"setting"下的"SSH and GPG keys"的添加過程的輸入框里,用以生成ssh-key。
在github上實(shí)踐
在github上創(chuàng)建一個遠(yuǎn)程倉庫,登錄github網(wǎng)站,通過右上角"New respository"新建一個比如名為"git-test"的項目倉庫。我們打開項目倉庫的首頁,復(fù)制倉庫地址(既然配置了SSH,那就選擇SSH咯;當(dāng)然,也可以通過HTTP的來clone),可以通過git clone 命令將遠(yuǎn)程倉庫拉到本地。
git clone "git@github.com:your-github-name/git-test.git"這樣就把項目拉取到當(dāng)前文件夾下了,so easy~ ? ? ? 之后,我們可以操作本地文件夾進(jìn)行增刪改查等操作,下面列出一些操作。
在操作之前,需要了解工作區(qū)和暫存區(qū)和版本庫的概念。
工作區(qū):電腦中的文件夾內(nèi)容
版本庫:工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫。git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD。
暫存區(qū):該內(nèi)容存在于隱藏的.git目錄下,可以簡單理解為,需要提交的文件修改通通放到暫存區(qū),然后一次性提交暫存區(qū)的所有修改。
詳情點(diǎn)擊此鏈接,有圖有真相啊~
git基礎(chǔ)操作命令
文件操作
將文件添加到版本庫
git add TEST.md //添加了一個TEST.md文件將版本庫中文件重命名
git mv TEST.md LALALA.md //改名:TEST => LALALA將文件從版本庫刪除
git rm LALALA.md // 刪除LALAL.md 文件查看操作記錄
git log //如果覺得信息太多,可以加參數(shù)"--pretty=oneline",這樣就能夠輸出簡短信息。列出master分支的歷史操作
git log master列出某個文件的歷史操作
git log LALALA.md然后在上一句操作中你會發(fā)現(xiàn),追溯LALALA文件的操作歷史的時候看不到它改名之前的歷史,怎么辦呢?
git log --follow LALALA.md //加上"--follow"參數(shù)會讓git在日志中內(nèi)容相關(guān)聯(lián)的整個歷史記錄查看你的每一次操作命令
git reflog //列出每次你的操作命令,如:log、add、rm等版本回退
git reset --hard HEAD^ //HEAD表示當(dāng)前版本,加^表示上一個,加^^表示上上個... git reset --hard commit-id //我們可以通過git log拿到指定版本的提交id,并且返回到指定版本查看工作區(qū)狀態(tài)
git status //可看出是否對文件進(jìn)行修改將修改提交到暫存區(qū)
git add fileName //添加修改的文件 git commit -m "message" //提交修改的文件,并且輸入修改信息將暫存區(qū)的文件提交到遠(yuǎn)程倉庫
git push (master) //不填則默認(rèn)提交到當(dāng)前分支,也可提交到指定分支查看工作區(qū)與版本庫中最新版本之間的不同
git diff HEAD fileName //當(dāng)文件在工作區(qū)修改后還未提交到版本庫丟棄在工作區(qū)所做的修改
git checkout -- index.html //丟棄對index.html的修改將遠(yuǎn)程倉庫的修改拉取到本地
git fetch (master) //不填則默認(rèn)拉取當(dāng)前分支的最新修改,也可指定需要拉取的分支,fetch之后并不會合并修改 git pull (master) //不填則默認(rèn)拉取當(dāng)前分支的最新修改,也可指定需要拉取的分支,pull之后合并修改分支操作
分支是在軟件項目中啟動一條單獨(dú)的開發(fā)線的基本方法,使得開發(fā)能夠在多個方向上同時進(jìn)行,分支一般會被調(diào)解并與其他分支合并,用來合并不同的開發(fā)。通俗來講,相當(dāng)于將一個大任務(wù)分解成多個小任務(wù),分給多人同時進(jìn)行處理,完了再組合到一起,于是完成了個大任務(wù)。
創(chuàng)建分支
git branch dev //創(chuàng)建了一個dev分支,然而并沒切換到這個分支上切換分支
git checkout dev //切換到dev分支上創(chuàng)建并且切換分支
git checkout -b dev //創(chuàng)建了一個dev分支,并且切換到這個分支上打了一遍上面的命令,然后屁顛屁顛跑去github刷新看分支,然而并沒有,少年莫慌,那是因為你還沒將分支提交到遠(yuǎn)程倉庫~
將分支放到遠(yuǎn)程倉庫
git push origin dev //好了,將dev分支提交到遠(yuǎn)程倉庫了,然后又跑去刷新了github,這次終于看到分支的存在了查看分支
git branch //帶星號的是當(dāng)前分支,加參數(shù)"-r"查看遠(yuǎn)程分鐘,"-a"查看所有分支合并分支
注:首先明確目前在哪個分支上,不可以在當(dāng)前分支上將此分支合并到其他分支。
通常合并分支的時候,git使用Fast-forward模式,我們可以在合并的時候使用參數(shù)"--no-ff"禁用該模式
git merge --no-ff -m "" dev //這樣的合并會創(chuàng)建一個新的commit這時分支合并了,然后你會發(fā)現(xiàn)分支依然存在,怎么辦呢?
刪除分支
這時候問題又來了,去github刷新看dev分支還是存在的...
刪除遠(yuǎn)程分支
刪除不存在對應(yīng)本地分支的遠(yuǎn)程分支
git remote prune origin刪除不存在對應(yīng)遠(yuǎn)程分支的本地分支
git fetch -p查看分支合并流程圖
git log --graph //明確的看到何時創(chuàng)建/修改/合并分支標(biāo)簽操作
標(biāo)簽可以簡單的看做是一個標(biāo)識點(diǎn)或者參考點(diǎn)。它是個靜態(tài)的名字,不隨時間的推移而改變。而分支是動態(tài)的,且隨著你每次的提交而移動。他們之間看起來相似,但我們需要分清楚他們,且勿將其混淆。
創(chuàng)建一個標(biāo)簽
git tag v0.1 // 創(chuàng)建一個標(biāo)簽,名為v0.1=> version 0.1將標(biāo)簽推到遠(yuǎn)程倉庫
git push origin v0.1一次性推送所有標(biāo)簽
git push origin --tags刪除本地標(biāo)簽
git tag -d v0.1 //刪除名為v0.1的標(biāo)簽刪除遠(yuǎn)程倉庫的標(biāo)簽
git push origin :refs/tags/v0.1進(jìn)度暫存操作(類似游戲的存檔)
git提供一個"存檔"功能。比如,當(dāng)你正在改一個功能的時候,臨時需要修改另一個功能,而且比較重要,而又不能直接checkout丟棄當(dāng)前的修改,這時候git提供的"存檔"就好用了。可以將之前的修改暫時存起來,把工作區(qū)恢復(fù)到干凈的環(huán)境供你修改另一個功能。
創(chuàng)建一個"存檔"
git stash //暫時存儲了當(dāng)前的操作進(jìn)度查看"存檔"的列表
git stash list查看"存檔"內(nèi)容
git stash show stash@{index} //查看相對索引的存檔內(nèi)容,不加stash@{index}則默認(rèn)是最近的"存檔"恢復(fù)"存檔"
git stash apply stash@{index} //恢復(fù)相對索引的存檔內(nèi)容,不加stash@{index}則默認(rèn)是最近的"存檔"恢復(fù)之后會發(fā)現(xiàn),這個"存檔"還在存檔列表中,簡直跟玩rpg游戲一樣么~
刪除"存檔"
清除所有"存檔"
git stash clear //畢竟一個個drop太累給命令配置別名
如果你嫌一些命令麻煩或者太長或者不好記等等...
git config --global alias.cmt commit然后你就可以使用"git cmt"代替"git commit"了。
刪除別名
打開.gitconfig文件,找到[alias]的內(nèi)容,刪除對應(yīng)別名的行內(nèi)容即可
.gitignore文件
可以在文件夾下添加.gitignore文件,告訴git在執(zhí)行命令的時候忽略一些內(nèi)容。
具體操作:打開.gitignore,在后面一行添加需要忽略的內(nèi)容。
文件夾: 如"src/" //忽略src文件夾下的所有文件
文件:如"*.jpg" //忽略以jpg為后綴的文件
...
向git求助
git help //列出參數(shù)列表及命令列表 git help command //打開該命令的html文檔 git command --help //打開該命令的html文檔暫時就這么多吧~還在繼續(xù)學(xué)習(xí)更多git用法,之后整理出來的筆記如果可以的話也會分享哦~
總結(jié)
以上是生活随笔為你收集整理的git的简单理解及基础操作命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到摸金蝉好不好
- 下一篇: tomcat+nginx+redis实现