最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

《穿越時(shí)空的git》之創(chuàng)建版本庫和常用命令操作

2022-10-10 16:10 作者:愛測(cè)軟件測(cè)試  | 我要投稿

Git 是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。Git 強(qiáng)大的分支管理,遠(yuǎn)遠(yuǎn)超過 SVN。那 git 如何創(chuàng)建版本庫?如何進(jìn)行一些常用的操作呢?欲知答案如何,請(qǐng)看下文分解。
小時(shí)候看過一部印象很深的劇叫做《穿越時(shí)空的愛戀》,今日也厚著臉皮導(dǎo)演一部《穿越時(shí)空的git》,不上映,純屬自嗨!
what is 版本庫?無論我們平常使用git的頻率如何,但是從事IT這個(gè)行業(yè)的小伙伴一定經(jīng)常聽到有人在說,哪個(gè)哪個(gè)牛X的項(xiàng)目在哪個(gè)倉庫,哪個(gè)項(xiàng)目的倉庫被人惡意添加issue(之前就聽說了阿波羅計(jì)劃的代碼倉庫中issue被很多無關(guān)的中文評(píng)論占樓~哎,咱們測(cè)試工程師一定不要這樣做,為這個(gè)行業(yè)盡一份力);

說了這么多廢話,其實(shí)我們平常說的倉庫就是版本庫,版本庫又名倉庫,英文名叫repository,相信很多用GitHub的小伙伴經(jīng)常看到這個(gè)單詞;

我就簡單的把它理解成一個(gè)目錄文件夾,里面可以放各種文件,和平常的使用管理一樣,可以刪除、修改;但是Git的”文件夾“更強(qiáng)大一點(diǎn),它記性好-Git可以"記住"整個(gè)管理的歷史,還能”存檔“。
如何創(chuàng)建一個(gè)版本庫,很簡單:

  • 1)選擇一個(gè)路徑(you like just ok!),創(chuàng)建一個(gè)空目錄

$ mkdir mygit $ cd mygit $ pwd /Users/qinzhen/mygit ?#這里就是我的Mac上創(chuàng)建的倉庫地址了

  • 2)倉庫地址創(chuàng)建好了,現(xiàn)在就是一個(gè)普通的文件夾,后使用git init命令將它變成”Git文件夾“,也就是把這個(gè)目錄變成Git可以管理的倉庫

$ git init Initialized empty Git repository in /Users/qinzhen/mygit/.git/

它會(huì)提示說在你的目錄下創(chuàng)建了一個(gè)空的Git倉庫,并且目錄下多了一個(gè).git,這個(gè)時(shí)候就算創(chuàng)建完成了。

在看命令之前先來用一張圖了解幾個(gè)概念,可以方便理解和記憶:

  • 工作區(qū)(Working Directory)

  • 臨時(shí)倉庫(暫存區(qū),Staging Area)

  • Git倉庫(Repository)
    我們就是先在工作區(qū)進(jìn)行文件的編輯操作;然后add到臨時(shí)倉庫,可以add多個(gè);最后再commit一起提交到倉庫中。
    接下來正式進(jìn)入實(shí)操:
    1)在mygit路徑下,創(chuàng)建文件readme.txt,輸入以下內(nèi)容:

I want to study Git

2)利用git add命令將文件提交到臨時(shí)倉庫(運(yùn)行成功不會(huì)輸出任何消息,看不到輸出不要慌~)

$ git add readme.txt

3)再用git commit命令將文件從暫存區(qū)提交到倉庫去

localhost:mygit qinzhen$ git commit -m "study git" [master 64f5ced] study git 1 file changed, 2 insertions(+), 2 deletions(-)

命令解釋:

-m : 添加注釋,對(duì)本次提交寫一個(gè)說明 1 file changed : 1個(gè)文件被改變,也就是readme.txt; 2 insertions(+): 2行插入了內(nèi)容,也就是我們輸入的兩行內(nèi)容 2 deletions(-): 2行內(nèi)容缺失了,因?yàn)槲沂前裷eadme.txt文件里原有的內(nèi)容刪除后添加的內(nèi)容, 所以會(huì)有次改動(dòng)提示,若是完全新建的就只會(huì)有添加的記錄

  • 1)我們先用git status查看當(dāng)前倉庫的狀態(tài)

localhost:mygit qinzhen$ git status On branch master nothing to commit, working tree clean

現(xiàn)在表示在一個(gè)master分支上沒有可提交的東西,工作目錄當(dāng)前是干凈的

  • 2)修改readme.txt文件:

I want to study Git very much.

  • 3)再使用git status查看

localhost:mygit qinzhen$ 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")

這時(shí)候可以看到文件已經(jīng)被修改了,但是并沒有被add和commit;

  • 4)再使用git diff(different)命令來查看當(dāng)前操作和之前的操作有何區(qū)別之處,修改了哪里:

localhost:mygit qinzhen$ git diff diff --git a/readme.txt b/readme.txt index 225e15a..8080bd8 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,2 @@ I am a test engineer. -I want to study Git. +I want to study Git very much.

可以看到我在第二行增加了very much

  • 1)我們先將剛才修改好的文件提交到倉庫中:

$ git add readme.txt $ git commit -m "very much" [master 7582a45] very much 1 file changed, 1 insertion(+), 1 deletion(-)

  • 2)我們?cè)偈褂胓it log命令來看看之前都干了些什么:

$ git log commit 7582a45a1acd9f5540f381d6e9bb7c9d38e74348 (HEAD -> master) Author: qinzhen <376057520@qq.com> Date: ? Thu Sep 19 16:48:31 2019 +0800 ? ?very much commit 64f5cedd48745267e4e161c57f126a9230344339 Author: qinzhen <376057520@qq.com> Date: ? Thu Sep 19 16:05:40 2019 +0800 ? ?study git

在git log命令后,我們可以看到之前的提交commit歷史,每一次提交都分配了唯一的commit id,這個(gè)id就是我們回到過去的關(guān)鍵,就相當(dāng)與科幻電影中回到過去的某個(gè)時(shí)期

3.1)HEAD——現(xiàn)在,我如果想回到study git的”時(shí)期“,可以使用git reset --hard HEAD^

$ git reset --hard HEAD^ HEAD is now at 64f5ced study git $ cat readme.txt I am a test engineer. I want to study Git.

這個(gè)時(shí)候我們可以看到,已經(jīng)成功的回到了study git的”時(shí)期“,very much已經(jīng)消失不見
命令解釋:

如果回到過去不好理解的話,也可以理解為存檔,本人小時(shí)候喜歡玩一款電腦游戲叫做紅色警戒, 打任務(wù)戰(zhàn)的時(shí)候每過一關(guān)前就會(huì)存檔一次,這樣就方便”死“了之后可以回到指定關(guān)卡重新再來 ^代表上一個(gè)存檔,^^代表上上個(gè)存檔,如果想反會(huì)至上100個(gè)版本的話可以直接使用HEAD~100果回到過去

3.2)commit id——現(xiàn)在再修改文件,在第一行添加I can fly,然后add、commit:

I am a test engineer,I can fly. I want to study Git. $ git add readme.txt $ git commit -m "I can fly" [master 9c32701] I can fly 1 file changed, 1 insertion(+), 1 deletion(-)

git log 查看修改提交日志

$ git log commit 9c327016eec10a6db7f9b75ecb705df417b6508c (HEAD -> master) Author: qinzhen <376057520@qq.com> Date: ? Thu Sep 19 17:06:10 2019 +0800 ? ?I can fly commit 64f5cedd48745267e4e161c57f126a9230344339 Author: qinzhen <376057520@qq.com> Date: ? Thu Sep 19 16:05:40 2019 +0800 ? ?study git

上面說了可以利用commit id回到過去,現(xiàn)在咱們就來試試;使用git reset --hard 64f5ce…命令:

$ git reset --hard 64f5ced HEAD is now at 64f5ced study git $ cat readme.txt I am a test engineer. I want to study Git.

從上面的結(jié)果可以看到,我們已經(jīng)通過commit id成功回到了過去,回到了那個(gè)沒有”I can fly“的年代;可以注意到的一點(diǎn)是,在寫commit id的時(shí)候并沒有寫全,只是寫了前面的一部分,git就可以找到了;
額。。??隙ㄓ腥艘獑柧唧w是幾位,說實(shí)話~我也不知道0.0,也沒有專門去研究過,前四五位?六七位?七八位?達(dá)到使用要求就好啦,能保證id唯一,稍微多復(fù)制幾個(gè)就可以了。。。

3.3)回到add前的年代——僅add文件到了暫存區(qū),并沒有commit;感覺好像是進(jìn)入到了add的另一重空間,在未來也找不到他,那想回到原來的”時(shí)期“的話,就可以使用git reset HEAD 把file丟掉

現(xiàn)在我的readme.txt文件內(nèi)容如下,并且已經(jīng)add到了暫存區(qū):

I am a test engineer.I can fly! I want to study Git. $ git status On branch master Changes to be committed: ?(use "git reset HEAD <file>..." to unstage) ?modified: ? readme.txt

使用git reset HEAD readme.txt命令將修改從add撤銷回來

$ git reset HEAD readme.txt Unstaged changes after reset: M ?readme.txt $ 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")

3.4)這個(gè)時(shí)候又有個(gè)疑問,我只是把readme.txt從add后的暫存區(qū)給撤銷回來了,文件并沒有改變的;想要把文件的修改也撤回,就要使用git checkout – 命令了:

$ git checkout -- readme.txt $ cat readme.txt I am a test engineer. I want to study Git. $ git status On branch master nothing to commit, working tree clean

補(bǔ)充:一個(gè)文件已經(jīng)被提交到了版本庫,有時(shí)候我們?cè)诠ぷ鲄^(qū)誤刪了某個(gè)文件(rm或手動(dòng)),這個(gè)時(shí)候版本庫中還是有這個(gè)文件的,就可以通過git checkout – 命令來”找回“;
如果真的想要從版本庫中將文件刪除,就要用到git rm和git commit命令了

1)沒錯(cuò),一般穿越的電影里到最后總是會(huì)找到方法返回未來的,git也不例外,除了可以回到過去(版本回退),也可以返回未來(回到新版本);
這里我們還是要借助于commit id來做,但是回退后再用git log已經(jīng)看不到未來時(shí)期的定位坐標(biāo)了(commit id):

$ git log commit 64f5cedd48745267e4e161c57f126a9230344339 (HEAD -> master) Author: qinzhen <376057520@qq.com> Date: ? Thu Sep 19 16:05:40 2019 +0800 ? ?study git

2)這個(gè)時(shí)候就要用到git reflog命令了,記錄你之前走過的路:

$ git reflog 64f5ced (HEAD -> master) HEAD@{0}: reset: moving to 64f5ced 9c32701 HEAD@{1}: commit: I can fly 64f5ced (HEAD -> master) HEAD@{2}: reset: moving to HEAD^ 7582a45 HEAD@{3}: commit: very much 64f5ced (HEAD -> master) HEAD@{4}: commit: study git

在這里就可以看到之前I can fly 的commit id;這里順便提一句,上面說了commit id不用寫全部,寫前面一部分,但是不確定具體寫幾位,這里看到git的log也只記錄了前7位,那就姑且算7位吧。。。

有了commit id就等于獲得了返回未來的坐標(biāo)信息和方法,電影也差不多到了大結(jié)局的時(shí)候了,本文也就要結(jié)束了,來個(gè)收尾:

$ git reset --hard 9c32701 HEAD is now at 9c32701 I can fly $ cat readme.txt I am a test engineer,I can fly. I want to study Git. $ git status On branch master nothing to commit, working tree clean


《穿越時(shí)空的git》之創(chuàng)建版本庫和常用命令操作的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
景宁| 绥阳县| 合山市| 金溪县| 城固县| 元谋县| 江山市| 永定县| 金湖县| 稷山县| 龙岩市| 抚松县| 梁山县| 宕昌县| 宣城市| 墨玉县| 门头沟区| 济南市| 舞阳县| 八宿县| 文成县| 潼关县| 庄浪县| 沈阳市| 兰西县| 长宁县| 温宿县| 罗定市| 夹江县| 两当县| 高陵县| 民县| 伊宁县| 突泉县| 达孜县| 万安县| 陇川县| 东辽县| 安塞县| 曲沃县| 偃师市|