git創(chuàng)建版本庫(kù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
什么是版本庫(kù)呢?版本庫(kù)又名倉(cāng)庫(kù),英文名repository,你可以簡(jiǎn)單理解成一個(gè)目錄,這個(gè)目錄里面的所有文件都可以被Git管理起來(lái),每個(gè)文件的修改、刪除,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史,或者在將來(lái)某個(gè)時(shí)刻可以“還原”。
所以,創(chuàng)建一個(gè)版本庫(kù)非常簡(jiǎn)單,首先,選擇一個(gè)合適的地方,創(chuàng)建一個(gè)空目錄:
$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit
pwd命令用于顯示當(dāng)前目錄。在我的Mac上,這個(gè)倉(cāng)庫(kù)位于/Users/michael/learngit。
如果你使用Windows系統(tǒng),為了避免遇到各種莫名其妙的問(wèn)題,請(qǐng)確保目錄名(包括父目錄)不包含中文。
第二步,通過(guò)git init命令把這個(gè)目錄變成Git可以管理的倉(cāng)庫(kù):
$ git init Initialized empty Git repository in /Users/michael/learngit/.git/
瞬間Git就把倉(cāng)庫(kù)建好了,而且告訴你是一個(gè)空的倉(cāng)庫(kù)(empty Git repository),細(xì)心的讀者可以發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè).git的目錄,這個(gè)目錄是Git來(lái)跟蹤管理版本庫(kù)的,沒(méi)事千萬(wàn)不要手動(dòng)修改這個(gè)目錄里面的文件,不然改亂了,就把Git倉(cāng)庫(kù)給破壞了。
如果你沒(méi)有看到.git目錄,那是因?yàn)檫@個(gè)目錄默認(rèn)是隱藏的,用ls -ah命令就可以看見(jiàn)。
也不一定必須在空目錄下創(chuàng)建Git倉(cāng)庫(kù),選擇一個(gè)已經(jīng)有東西的目錄也是可以的。不過(guò),不建議你使用自己正在開(kāi)發(fā)的公司項(xiàng)目來(lái)學(xué)習(xí)Git,否則造成的一切后果概不負(fù)責(zé)。
把文件添加到版本庫(kù)
首先這里再明確一下,所有的版本控制系統(tǒng),其實(shí)只能跟蹤文本文件的改動(dòng),比如TXT文件,網(wǎng)頁(yè),所有的程序代碼等等,Git也不例外。版本控制系統(tǒng)可以告訴你每次的改動(dòng),比如在第5行加了一個(gè)單詞“Linux”,在第8行刪了一個(gè)單詞“Windows”。而圖片、視頻這些二進(jìn)制文件,雖然也能由版本控制系統(tǒng)管理,但沒(méi)法跟蹤文件的變化,只能把二進(jìn)制文件每次改動(dòng)串起來(lái),也就是只知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統(tǒng)不知道,也沒(méi)法知道。
不幸的是,Microsoft的Word格式是二進(jìn)制格式,因此,版本控制系統(tǒng)是沒(méi)法跟蹤Word文件的改動(dòng)的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統(tǒng),就要以純文本方式編寫(xiě)文件。
因?yàn)槲谋臼怯芯幋a的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒(méi)有歷史遺留問(wèn)題,強(qiáng)烈建議使用標(biāo)準(zhǔn)的UTF-8編碼,所有語(yǔ)言使用同一種編碼,既沒(méi)有沖突,又被所有平臺(tái)所支持。
使用Windows的童鞋要特別注意:
千萬(wàn)不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開(kāi)發(fā)記事本的團(tuán)隊(duì)使用了一個(gè)非常弱智的行為來(lái)保存UTF-8編碼的文件,他們自作聰明地在每個(gè)文件開(kāi)頭添加了0xefbbbf(十六進(jìn)制)的字符,你會(huì)遇到很多不可思議的問(wèn)題,比如,網(wǎng)頁(yè)第一行可能會(huì)顯示一個(gè)“?”,明明正確的程序一編譯就報(bào)語(yǔ)法錯(cuò)誤,等等,都是由記事本的弱智行為帶來(lái)的。建議你下載Notepad++代替記事本,不但功能強(qiáng)大,而且免費(fèi)!記得把Notepad++的默認(rèn)編碼設(shè)置為UTF-8 without BOM即可:
言歸正傳,現(xiàn)在我們編寫(xiě)一個(gè)readme.txt文件,內(nèi)容如下:
Git is a version control system.
Git is free software.
一定要放到learngit目錄下(子目錄也行),因?yàn)檫@是一個(gè)Git倉(cāng)庫(kù),放到其他地方Git再厲害也找不到這個(gè)文件。
和把大象放到冰箱需要3步相比,把一個(gè)文件放到Git倉(cāng)庫(kù)只需要兩步。
第一步,用命令git add告訴Git,把文件添加到倉(cāng)庫(kù):
$ git add readme.txt
執(zhí)行上面的命令,沒(méi)有任何顯示,這就對(duì)了,Unix的哲學(xué)是“沒(méi)有消息就是好消息”,說(shuō)明添加成功。
第二步,用命令git commit告訴Git,把文件提交到倉(cāng)庫(kù):
$ git commit -m "wrote a readme file" [master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
簡(jiǎn)單解釋一下git commit命令, -m后面輸入的是本次提交的說(shuō)明,可以輸入任意內(nèi)容,當(dāng)然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動(dòng)記錄。
嫌麻煩不想輸入-m "xxx"行不行?確實(shí)有辦法可以這么干,但是強(qiáng)烈不建議你這么干,因?yàn)檩斎胝f(shuō)明對(duì)自己對(duì)別人閱讀都很重要。實(shí)在不想輸入說(shuō)明的童鞋請(qǐng)自行Google,我不告訴你這個(gè)參數(shù)。
git commit命令執(zhí)行成功后會(huì)告訴你,1個(gè)文件被改動(dòng)(我們新添加的readme.txt文件),插入了兩行內(nèi)容(readme.txt有兩行內(nèi)容)。
為什么Git添加文件需要add,commit一共兩步呢?因?yàn)?span style="color: #800000">commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
我們已經(jīng)成功地添加并提交了一個(gè)readme.txt文件,現(xiàn)在,是時(shí)候繼續(xù)工作了,于是,我們繼續(xù)修改readme.txt文件,改成如下內(nèi)容:
Git is a distributed version control system.
Git is free software.
現(xiàn)在,運(yùn)行g(shù)it status命令看看結(jié)果:
$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: readme.txt # no changes added to commit (use "git add" and/or "git commit -a")
git status命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)當(dāng)前的狀態(tài),上面的命令告訴我們,readme.txt被修改過(guò)了,但還沒(méi)有準(zhǔn)備提交的修改。
雖然Git告訴我們r(jià)eadme.txt被修改了,但如果能看看具體修改了什么內(nèi)容,自然是很好的。比如你休假兩周從國(guó)外回來(lái),第一天上班時(shí),已經(jīng)記不清上次怎么修改的readme.txt,所以,需要用git diff這個(gè)命令看看:
$ git diff readme.txt diff --git a/readme.txt b/readme.txt index 46d49bf..9247db6 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,2 @@ -Git is a version control system. +Git is a distributed version control system. Git is free software.
git diff顧名思義就是查看difference,顯示的格式正是Unix通用的diff格式,可以從上面的命令輸出看到,我們?cè)诘谝恍刑砑恿艘粋€(gè)“distributed”單詞。
知道了對(duì)readme.txt作了什么修改后,再把它提交到倉(cāng)庫(kù)就放心多了,提交修改和提交新文件是一樣的兩步,第一步是git add:
$ git add readme.txt
同樣沒(méi)有任何輸出。在執(zhí)行第二步git commit之前,我們?cè)龠\(yùn)行g(shù)it status看看當(dāng)前倉(cāng)庫(kù)的狀態(tài):
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: readme.txt #
git status告訴我們,將要被提交的修改包括readme.txt,下一步,就可以放心地提交了:
$ git commit -m "add distributed" [master ea34578] add distributed 1 file changed, 1 insertion(+), 1 deletion(-)
提交后,我們?cè)儆胓it status命令看看倉(cāng)庫(kù)的當(dāng)前狀態(tài):
$ git status # On branch master nothing to commit (working directory clean)
Git告訴我們當(dāng)前沒(méi)有需要提交的修改,而且,工作目錄是干凈(working directory clean)的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Ubuntu18.04本地化部署Rustdesk服務(wù)器的詳細(xì)過(guò)程
如果你是想數(shù)據(jù)留在本地,那么Rustdesk這個(gè)工具可以考慮,它是開(kāi)源的,部署起來(lái)也簡(jiǎn)單,下面通過(guò)本文給大家分享Ubuntu18.04本地化部署Rustdesk服務(wù)器的詳細(xì)過(guò)程,感興趣的朋友跟隨小編一起看看吧2024-04-04MongoDB學(xué)習(xí)筆記(一) MongoDB介紹與安裝方法
最近開(kāi)始學(xué)習(xí)非關(guān)系型數(shù)據(jù)庫(kù)MongoDB,卻在博客園上找不到比較系統(tǒng)的教程,很多資料都要去查閱英文網(wǎng)站,效率比較低下。本人不才,借著自學(xué)的機(jī)會(huì)把心得體會(huì)都記錄下來(lái),方便感興趣的童鞋分享討論2013-07-07X-Frame-Options頭未設(shè)置 防止網(wǎng)頁(yè)被iframe內(nèi)框架調(diào)用
有時(shí)候?yàn)榱朔乐咕W(wǎng)頁(yè)被別人的網(wǎng)站iFrame,我們可以通過(guò)在服務(wù)器設(shè)置HTTP頭部中的X-Frame-Options信息,需要的朋友可以參考下2017-03-03ibmx335/ibmx336服務(wù)器做RAID陣列的圖文方法(包括刪除RAID陣列)
X服務(wù)器中有一些集成LSI SCSI控制器的機(jī)型,在開(kāi)機(jī)自檢時(shí)按CTRL C可以配置兩個(gè)硬盤(pán)的鏡像。但是當(dāng)升級(jí)BIOS之后,CTRL C中的一些設(shè)置發(fā)生了變化,配置方法也較以前的版本有些差異2012-06-06阿里云主機(jī)不能用IP訪問(wèn)網(wǎng)站的解決方法(配置安全組規(guī)則搞定)
剛買(mǎi)了一臺(tái)阿里云主機(jī),迫不待及的試試速度,怎知網(wǎng)站訪問(wèn)不了,用IP或綁定域名都無(wú)法訪問(wèn),后來(lái)提交工單才知道,需要配置安全組規(guī)則才行。針對(duì)同樣像我一樣的新手,本文就介紹一下如何在開(kāi)通阿里云主機(jī)后配置安全組規(guī)則,讓網(wǎng)站能夠外網(wǎng)訪問(wèn),需要的朋友可以參考下2020-07-07用phpMyadmin創(chuàng)建Mysql數(shù)據(jù)庫(kù)及獨(dú)立數(shù)據(jù)庫(kù)帳號(hào)的圖文教程
在一個(gè)服務(wù)器上一般來(lái)講都不止一個(gè)站點(diǎn),更不止一個(gè)MySQL(和PHP搭配之最佳組合)數(shù)據(jù)庫(kù)。2010-03-03