該文章以收錄: 《git探索之路》 目錄 git探索之路——常用命令總結 git探索之路——配置及基礎使用 git探索之路——版本認識及操作 git探索之路——分支與標籤 git探索之路——解決衝突與團隊合作 git探索之路——標籤管理 git探索之路——配置與自訂 前言
這一章我們繼續來探索git的使用,上一章我們已經介紹了如何利用git和遠程倉庫串連。 一、git的工作流程
說道git的工作流程,我們都只到git是分布式的版本控制工具,Git和svn的不同之處就是有暫存區的概念。我們先來瞭解以下概念:
工作區:就是你在電腦的目錄
版本庫:
版本庫中分為暫存區(工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫)
遠程倉庫(就是我們的遠程版本庫,如github、碼雲)
Git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動建立的第一個分支master,以及指向master的一個指標叫HEAD。
下面來讓我們根據廖雪峰老師的圖示看一下:
git add 操作的變化;
git commit 操作後的變化
看了這些圖片是不是對git的工作流程有了更深的認識 二、git的版本操作:
操作之前我們在我們的工作區建立一個mygit.txt檔案。
1.管理修改
我們在我們建立的mygit.txt檔案中添加一句 “my first git”
查看檔案中的內容我們可以執行命令:
$ cat mygit.txtmy first git
提交後我們可以使用 git diff HEAD -- mygit.txt 命令查看工作區和版本庫裡的最新區別
git diff
2.撤銷修改
例如上面的mygit.txt檔案中我們的內容是 my first git,我們不小心將其改成了 my last git
這時必須要及時更改,不改可能會丟工作怎麼辦,
第一種方法就是,我們手動把我們寫的刪掉,如果更改的太多這樣做會很麻煩.
我們還可以使用 git checkout -- file
git checkout -- mygit.txt
命令git checkout -- readme.txt意思就是,把mygit.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。
我們可以執行cat mygit.txt 是否發生變化
3.版本回退
我們在使用git上傳我們的檔案時,我們有事會碰到,剛上傳就發現傳錯了,但是已經覆蓋了我們遠程倉庫的源檔案了。這時候我們是不是很懵逼。不知所措,放心,git給我們留了一手,因為git存在記錄,我們可以查看記錄:
$ git log
git log命令顯示從最近到最遠的提交日誌,可能git會為我們列印出很多的記錄資訊,如果我們想看簡潔的記錄我們可以這樣:
$ git log --pretty=oneline3628162fb23d48395383f8f31179f24e0882e1e0 oneea34578d54d6d7dd233c827ed32a8cd576c5ee85 twocb926e7ea50ad11b8f9e909c05226233bf755030 three
上面一大串編碼,這是commit id(版本號碼),電腦產生的,首先,Git必須知道目前的版本是哪個版本,在Git中,用HEAD表示目前的版本,也就是最新的提交,上一個版本就是HEAD^,上上一個版本就是EAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100
好了,如果我們不小心提交錯了,我們可以回退到上個版本,git會根據記錄回退到上一個版本。
$ git reset --hard HEAD^
$ git log --pretty=oneline3628162fb23d48395383f8f31179f24e0882e1e0 oneea34578d54d6d7dd233c827ed32a8cd576c5ee85 two
4.刪除檔案
有時候我們想通過檔案管理工具把檔案刪除:
$ rm 檔案
當然如果你想恢複檔案可以用:
$ git checkout -- 檔案
恢複檔案其實就是將我們暫存區內的版本替換了我們工作區的版本了。
git的版本操作基本就是這些了。
參考文獻:廖雪峰git教程