亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Git還原,檢出和重置之間有什么區別?

Git還原,檢出和重置之間有什么區別?

Git
桃花長相依 2019-12-07 14:22:14
我想學習如何回滾文件和項目或恢復到以前的狀態,不明白之間的差別git revert,checkout和reset。為什么有3個不同的命令看似相同的目的,以及何時應該選擇一個而不是另一個?
查看完整描述

3 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

這三個命令的用途完全不同。它們甚至都不遙不可及。

git revert

該命令將創建一個新的提交,以撤消對先前提交的更改。此命令將新歷史記錄添加到項目中(它不會修改現有歷史記錄)。

git checkout

此命令從存儲庫中簽出內容,并將其放入您的工作樹中。它也可能具有其他效果,具體取決于調用命令的方式。例如,它還可以更改您當前正在使用的分支。此命令不會對歷史記錄進行任何更改。

git reset

這個命令有點復雜。實際上,根據調用方式的不同,它會做很多不同的事情。它修改索引(所謂的“暫存區”)?;蛘吒姆种ь^當前指向的提交。此命令可能會更改現有歷史記錄(通過更改分支引用的提交)。

使用這些命令

如果在項目歷史記錄中的某個位置進行過提交,而您以后又認為該提交是錯誤的并且不應該完成,那么這git revert就是完成任務的工具。它將撤消由錯誤提交引起的更改,并在歷史記錄中記錄“撤消”。

如果您已經在工作樹中修改了文件,但是尚未提交更改,則可以git checkout用來檢出文件的從存儲庫復制的副本。

如果您進行了提交,但尚未與其他任何人共享,并且您決定不希望這樣做,則可以使用它git reset來重寫歷史記錄,以便看起來好像從未進行過該提交。

這些只是一些可能的使用方案。還有其他一些命令在某些情況下可能會有用,并且以上三個命令也有其他用途。


查看完整回答
反對 回復 2019-12-07
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

假設您有提交:


C

B

A

git revert B會創建一個撤消。中的更改的提交B。


git revert A,將創建一個撤消中的更改的提交A,但不會涉及到中的更改B


請注意,如果中的更改B取決于中的更改A,A則無法還原。


git reset --soft A,將更改提交歷史記錄和存儲庫;暫存和工作目錄仍處于狀態C。


git reset --mixed A,將更改提交歷史記錄,存儲庫和登臺;工作目錄仍處于的狀態C。


git reset --hard A,將更改提交歷史記錄,存儲庫,登臺和工作目錄;您將回到A完全的狀態。


查看完整回答
反對 回復 2019-12-07
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

  • git revert用于撤消先前的提交。在git中,您無法更改或刪除較早的提交。(實際上,您可以,但是可能會導致問題。)因此,revert不會編輯較早的提交,而是引入了一個新的提交,該提交會撤銷較早的提交。

  • git reset 用于撤消工作目錄中尚未提交的更改。

  • git checkout用于將文件從其他提交復制到當前工作樹。它不會自動提交文件。


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 1925 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號