2012-04-24 33 views
0

讓我先說這個,說我對git比較陌生,所以我可能難以正確表達我的情況。錯誤之後用git恢復過去的工作

我正在做一些項目的工作,我想提交我所做的更改。我繼續接下來的一些命令來運行:

git add . 
    git commit -m "Finished user signup" 

在這一點上,它似乎處理我的提交和處理所有更改,插入和刪除。然後我繼續:

git checkout master 

它成功切換到主分支。我當時以爲自己當時在一家分公司,我試圖合併它,但那不起作用,所以我只是向前邁進。我推動,一切都是最新的。然後,我做了一些快速更改到其他文件,並試圖:

git commit -am "Add SSL in production" 

它是成功的。但是,現在我最後一次提交之前的所有更改都已消失,如果可能,我真的很想讓它們恢復。我現在意識到,也許我需要退後一步,真正理解git,而不是僅僅貫穿我正在遵循的教程的步驟,但是如果可能的話,我真的很想在這個教程中獲得一些細節。如果您有任何想法,我可以如何將我的文件歸檔回來,我真的可以使用您的幫助。

編輯:我試圖尋找的日誌與「混帳日誌」,如果其原因是提交你的修改,而不是它不顯示的承諾我想恢復的跡象...

+0

如果你已經在其他分支不成功地提交了更改,可能你沒有在主分支中合併這些更改,如果你成功地提交了更改,那麼你不太可能會丟失一些東西:git是否有這個確切的原因;) – 2012-04-24 12:01:40

回答

1

從我能理解你從topic-切換分支到主分支但您沒有合併主題分支的提交。爲此,您可以使用git的命令合併或衍合:

# Be sure you're in the master branch, you should see a star before master 
$git checkout master 
$git branch 
# Now take the commits from the topic-branch 
$git rebase TOPIC_BRANCH_NAME 

使用$git log你現在應該可以看到其他分支的提交。

+1

在做了更多的狩獵活動後,我認爲你是對的。謝謝您的幫助。 – Mike 2012-04-24 12:16:13

+0

很高興知道你沒有失去你的工作;) – 2012-04-24 12:17:51

+1

雅,版本控制很好。儘管如此,我還是沒有足夠的把握。我認爲這最終是一個相當不錯的學習過程。 – Mike 2012-04-24 12:39:54

1

檢查一個分支,也許你可以用git reflog跟蹤那些缺少的提交。其輸出的第一列列出了提交指紋,其中您可能會找到您正在查找的指紋。在找到想要恢復的特定提交後,例如abc123,可以通過執行git branch recovery abc123來使分支指向它。

+0

我做了分支後,如何恢復文件?我做了你的建議,但當我檢查了狀態,它說我在主分支上,沒有什麼可提交的。 – Mike 2012-04-24 11:32:08

+0

你可以通過'git checkout recovery'來切換到新創建的分支。使用'gitk --all'或'git log --all --graph --oneline --decorate'來顯示大圖可能也會有助於查看您的分支真正發生了什麼。 – Jan 2012-04-24 11:43:08

0

我認爲你需要省略最後一次提交,如果執行下列操作

git reset HEAD^1 

將省略楦頭(提交)