2013-07-20 16 views
0

我想回到我正在使用的分支上的不同日期(比如3天前) 我已經創建了一個補丁我已經改變的文件,所以我不介意它是否會被覆蓋。如何去Git中的不同版本的代碼

由於提前,

+0

你知道git checkout嗎? –

+0

你想把你的代碼恢復到那個日期,或者只是做一個'checkout'? – tftd

+0

我試過了下面的[master +2〜17 -0!]> git checkout'master @ {2013-07-18 12:00 :00}'',但它仍然有從以後的變化。 – Nir

回答

3

你只需要散列的一個看到你的git日誌,並獲得你想要提交的提交的哈希值並執行git checkout。

就你而言,你的git日誌需要關注發生變化的時間,比如3天前。所以下面的東西會幫助你。

$git log --pretty=format:"%h - %an, %ar : %s" 

會給這樣的事情

$387820f - var_j, 25 hours ago : Rust Lessons: variables 
$72a4abc - var_j, 25 hours ago : Rust Lessons: loops 
$f272f95 - var_j, 25 hours ago : rust lessons: hello world added 

然後,

$git checkout 387820f 

這將分離的頭,並將其移動到特定的狀態,所以工作副本也將得到相應的更新。

如果你真的想回去的時候,考慮

$git reset --soft <commit_hash> 

git的復位--soft

不觸及索引文件,也沒有在所有的工作樹(但重置前往,就像所有模式一樣)。這會將所有更改的文件「更改提交」,因爲git狀態會將其放入。

但是要小心使用git reset,它會導致損壞。閱讀doc並決定你需要什麼。

3

這是你如何檢出代碼到以前提交你的時間做了。

  1. git log看到所有你過去的提交,並選擇您想要恢復到
  2. 複製要恢復到(即aefd2efc660f4gb2fa2d7r1ef73b3z4e2b4498e5
  3. git checkout aefd2efc660f4gb2fa2d7r1ef73b3z4e2b4498e5
相關問題