2017-07-03 150 views
2

當我想在我的項目中進行一些更改並且想要返回到上次提交的狀態時,我可以使用這兩個選項。他們是否真的做了同樣的事情,或者他們之間有什麼區別?「git reset --hard」和「git checkout。」有什麼區別?

+2

https://stackoverflow.com/questions/3639342/whats-the-difference-between-git-reset-and-git-checkout –

+0

可能的重複[git reset和git checkout之間有什麼區別] ?](https://stackoverflow.com/questions/3639342/whats-the-difference-between-git-reset-and-git-checkout) – Kai

回答

2

這裏是兩個命令的區別是:

git checkout . 

這告訴GIT中檢出當前文件夾,不管它是什麼,從當前分支,並與它替換工作文件夾。但這並不影響工作文件夾的其他區域,也不涉及舞臺。

git reset --hard 

這將重置整個工作目錄階段到當前分支的負責人。你可以認爲這有效地加強了自上次提交以來發生的所有事情。

一般來說硬復位是你不會經常使用的東西,而從各個地方檢出文件/文件夾更爲常見。

0

如果您沒有按照任何提交ID跟隨它們,也就是說它們會將您的狀態重置爲最新的提交。但是,如果您執行reset --hard <commit_id>,它會將當前分支的HEAD更改爲指定的提交ID,而checkout將創建臨時分支。

git checkout 6a0ff74 
# would create a temp branch with its HEAD pointed to commit id 
# you can just checkout your original branch. 

git reset --head 6a0ff74 
# would change the `HEAD` of the current branch. To reverse the change 
# you must find the latest commit id and `reset --hard` to it again. 
+0

該OP詢問有關重置硬盤和結帳點,而不是重置或檢出一個提交哈希。 (不是我的downvote) –

+0

@TimBiegeleisen我已經在我的第一行中回答了那個部分,沒有太大的區別。只有在我們使用這些命令提交時纔會出現差異。 – hspandher

0

git checkout從Git服務器獲取更新數據,並保持您的更改在本地機器。

git reset --hard在特定的頭部創建像Git服務器一樣的副本標識,並放棄本地機器上的所有更改。

相關問題