第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何恢復(fù)多個git提交?

如何恢復(fù)多個git提交?

Git
GCT1015 2019-07-13 16:27:08
我有一個Git存儲庫,如下所示:A -> B -> C -> D -> HEAD我希望分支機構(gòu)的負責(zé)人指向A,也就是說,我希望B,C,D和頭消失,我希望頭部與A同義。聽起來,我可以嘗試重基(不適用,因為我在兩者之間推動了更改),或者恢復(fù)。但是如何還原多個提交呢?我一次只回復(fù)一次嗎?命令重要嗎?
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

一般規(guī)則是,您不應(yīng)該重寫(更改)您已經(jīng)發(fā)布的歷史,因為可能有人將他們的工作建立在它的基礎(chǔ)上。如果您重寫(更改)歷史記錄,則合并它們的更改和為它們進行更新時會出現(xiàn)問題。

因此,解決方案是創(chuàng)建一個新提交哪一個回復(fù)變化你想擺脫的。你可以用GIT還原命令。

你的情況如下:

A?<--?B??<--?C?<--?D???????????????????????????????????????????????<--?master?<--?HEAD

(此處的箭頭引用指針的方向:提交時的“父”引用,分支頭(分支引用)的頂部提交,頭部引用的分支名稱)。

您需要創(chuàng)建的內(nèi)容如下:

A?<--?B??<--?C?<--?D?<--?[(BCD)^-1]???????????????????<--?master?<--?HEAD

其中“[(BCD)^-1]”是指恢復(fù)提交B、C、D中更改的提交,數(shù)學(xué)告訴我們(BCD)^-1=D^-1C^-1B^-1,因此可以使用以下命令獲得所需的情況:

$?git?revert?--no-commit?D
$?git?revert?--no-commit?C
$?git?revert?--no-commit?B
$?git?commit?-m?"the?commit?message"

另一種解決辦法是結(jié)帳?內(nèi)容提交A,并提交此狀態(tài):

$?git?checkout?-f?A?--?.
$?git?commit?-a

那么,您將遇到以下情況:

A?<--?B??<--?C?<--?D?<--?A'???????????????????????<--?master?<--?HEAD

提交A‘與提交A具有相同的內(nèi)容,但是不同的提交(提交消息、父母、提交日期)。

$?git?reset?--hard?A
$?git?reset?--soft?@{1}??#?(or?ORIG_HEAD),?which?is?D
$?git?commit


查看完整回答
反對 回復(fù) 2019-07-13
?
紅糖糍粑

TA貢獻1815條經(jīng)驗 獲得超6個贊

考慮到您的例子,您必須這樣做(假設(shè)您在分行“主人”上):

git?revert?master~3..master

這將在本地創(chuàng)建一個新提交,其反向提交為B、C和D(這意味著它將撤消這些提交帶來的更改):

A?<-?B?<-?C?<-?D?<-?BCD'?<-?HEAD


查看完整回答
反對 回復(fù) 2019-07-13
?
守著星空守著你

TA貢獻1799條經(jīng)驗 獲得超8個贊

這允許您輕松地選擇連續(xù)提交來恢復(fù)。

#?revert?all?commits?from?B?to?HEAD,?inclusively
$?git?revert?--no-commit?B..HEAD??
$?git?commit?-m?'message'


查看完整回答
反對 回復(fù) 2019-07-13
  • 3 回答
  • 0 關(guān)注
  • 812 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號