簡體   English   中英

在Git中重寫了我的整個倉庫,我似乎無法恢復到以前的提交

[英]Overwrote my entire repo in Git and I can't seem to get back to my previous commits

我在本地弄亂了一些文件,並將這些文件推送到我的倉庫中,當我意識到自己的錯誤時,想回到舊版本。 我進行了一些搜索,然后在這里找到了類似的問題,因此我遵循了答案並做了以下工作:

git log
git reset --hard <hash>
git push -f origin master

現在,我在我的大學中使用github,更早之前,我已將解決方案從Professors回購中拉到舊的作業中。 我猜想我在運行git reset --hard時選擇了Professors解決方案哈希,因為我的倉庫現在說它是由教授編寫的,它包含所有舊的解決方案文件,而沒有我自己的文件。 一切也都在本地替換,並且git log僅顯示教授對解決方案回購的提交。 有沒有什么辦法可以找回以前提交?

您可以使用git reflog在硬重置之前返回。

運行git reflog將產生如下內容:

f735139 HEAD@{0}: reset: moving to HEAD~1
a76edca HEAD@{1}: commit: second commit
f735139 HEAD@{2}: commit (initial): initial commit

您可以像這樣在重置之前檢出提交:

git checkout HEAD@{1}

您將收到警告警告,因此請在重置之前創建一個新分支:

git checkout -b <new branch name>

現在,您將在硬重置之前擁有一個包含所有內容的分支。

如果您確實想回到過去,那么我將在您重置為的提交位置創建一個新分支。 您可以這樣進行:

git checkout <sha-1 hash of the commit you reset to>
git checkout -b <new branch name>

這樣,您就可以不使用master分支,而在較早的時候擁有一個新的分支。


編輯:由於您要合並撤消推入重置到母版中的更改,我建議合並遠程更改並丟棄它們。 嘗試這個:

git fetch origin master
git merge FETCH_HEAD -s ours

之后,您應該可以進行推送。

暫無
暫無

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

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