簡體   English   中英

從git checkout返回<sha1><directory>

[英]Return from git checkout <sha1> <directory>

我已經運行了以下命令:

git checkout <commit-hash> some_directory

我的master並希望回到master以前的干凈狀態。 我最初的想法是

git checkout master

可以解決問題,但無濟於事,因為某些文件在分支上顯示為“新”。

當您運行git checkout <commit-hash> some_directory ,文件顯示為已添加。 您可以通過git status看到它:

$ git status
On branch test
Changes to be committed:
[...]

處於此狀態時,您必須執行以下操作:

git reset

取消此更改,並:

git checkout .

恢復你HEAD

git reset --hard將在一個命令中執行基本相同的操作。

下面的答案假定您沒有新的變更,並且不想與錯誤的結帳中的意外變更混在一起。

使用取消結帳中的更改

git reset master some_directory

要么

git reset HEAD some_directory

使用以下命令將工作樹中的文件恢復為以前的狀態

git checkout HEAD some_directory

最后,使用以下命令清理master的最新提交中可能已刪除的所有文件:

git ls-files -z --others some_directory | xargs -0 rm

如果您完全確定要恢復原樣,並且不介意丟失任何可能存在的更改(無論在some_directory或其他位置),請跳過上述所有操作,然后運行

git reset --hard master

!在開始修復它之前,請先復制您的完整目錄;)特別是例如,如果您沒有遠程目錄,則只有本地存儲庫。

您將需要git reset(或git reset --hard)。

其他方法可能是:切換到某個分支,刪除master git branch -D master ,然后重新創建它git checkout -b master origin/master

暫無
暫無

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

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