簡體   English   中英

撤消已提交的更改

[英]Undo committed changes

我從一本名為Ryan Hodson的書中學習-Ry的Git教程,它說:

在撤消更改之前,我們需要返回到master分支。 如果我們不這樣做,我們所有的更新將位於某個不存在的分支上。 絕對不要直接對先前的版本進行更改。

這是什么意思?

就我而言,我處於master分支的頂端,我必須還原到上一次提交

這不是國際海事組織寫得最清楚的段落。 但是經過幾遍重讀之后,我很確定可以推斷出正確的上下文以理解其含義。 (這是我可以找到的唯一在概念上准確的方法來解釋這一段內容,因此...)

據推測,如果您一直按照本教程進行操作,那么您當前處於“分離的HEAD狀態”。 當您直接簽出提交時就會發生這種情況-通常是因為您已經在分支機構的歷史中更進一步簽出了提交。 例如,如果您有

A -- B -- C <--(master)

你檢出B犯,說像

git checkout master^

那么這會使您進入分離的HEAD狀態。 您可以將其表示為

A -- B -- C <--(master)
     ^
    (HEAD)

看來該教程指導您執行此操作以檢查更改,現在它確定您要撤消更改。

這就是說,如果您先結帳母版,然后又進行一次提交,則最終會得到

A -- B -- C <--(master)
      \
       D 
       ^
       (HEAD)

您仍然處於分離的HEAD狀態,並且D不能從任何引用中“到達”。 這並不總是錯誤的(如本教程所建議),但是通常並不正確。 您必須采取進一步的措施來防止D被丟棄。

本教程使用的短語是“直接對先前的版本進行更改”,但這並不是您所做操作的准確描述。 准確地說,您通常會避免在處於分離的HEAD狀態下進行新的更改(但作者可能會認為對git新手來說措辭過於技術性/令人困惑)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM