Git操作之“時光穿梭”

來源:互聯網
上載者:User

從http://blog.csdn.net/xiahouzuoxin/article/details/9398629中我們已經能基本地使用git及github了,版本控制器的真正實用的地方將在本節中展現。

請注意:本節的內容與Github無關,請不要將git與github混為一談!

1. 版本回退——時光穿梭(參考[1])

我們常常在開發時會遇到這種情況:當對當前的版本不滿意,打算從上一個或上幾個版本重新開始時,該怎麼才能從git中擷取上一個版本呢?

不妨先用

git log

命令查看提交版本的日誌記錄吧。

我已經提交了2個版本,commit一行後的代碼是版本的唯一標識,我們可以通過它到任何一個我們想要的版本。注意:最新的一個版本是目前的版本,上一個版本是指第2個對應的版本。

這時,我們用

git reset --hard b36e5

回到上一個版本(可以不用輸入整個一大串,git會自動尋找,只要能唯一識別版本就行)

這個時候再git log看一下吧,

只剩下最初提交的一個版本了!上一個版本已經看不到了,而這時我們又後悔了,想回到回退前的版本,怎麼辦?

還是一樣的方法,前提是只要你還記得版本的ID,只要執行

git reset --hard ab21e

現在再看看,是不是,回去了!這樣就免去在開發過程中為備份不同的版本粘貼複製的麻煩了。

我關機了,第二天才後悔,不記得ID了怎麼辦,git log之後不是已經沒有最新版本的ID了嗎?

其實還是有辦法的,使用

git reflog

看看就知道了,git reflog記錄了git的每一次版本更新的命令。

版本回退更方便:git中使用HEAD表示目前的版本,HEAD^表示上一個版本,上上一個版本是HEAD^^,回退到上一個版本只需要執行

git reset --hard HEAD^

上上個版本當然是

git reset --hard HEAD^^

2. 版本提交前的回退

有木有,當你使用完git add之後立馬就後悔了,發現add檔案太少或太多了。

我們不妨先來理解git add和git commit命令的含義(看):

git分為工作區和版本庫,我們現在正在編輯的代碼就是工作區,版本庫裡包括了已經使用git commit命令提交的版本,還包括了一個緩衝區(Stage)。git add操作就是將修改的代碼添加到緩衝區的過程,git commit就是將緩衝區中更新的部分提交到master正式版本的過程。

我們的第1小節“版本回退——時光穿梭”就是想辦法如何從git commit執行後回退的過程。而本小節將給出的一個命令則是從git add回退的過程。好吧,請記住,

git reset HEAD <file>

下面是一個例子,我將README.md修改add後,再使用git reset HEAD README.md回退的過程。

最後,請記住1個協助命令,

git help

非常非常有用,隨時查命令。

另附一張常用命令圖(非我製作),

參考文獻:

[1] 廖雪峰Git教程:http://www.liaoxuefeng.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.