2016-08-30 124 views
2

我回滾到以前提交使用git checkout "commit number1"。然後我沒有意識到我是在提交而不是在任何分支,所以我在這裏做了修改,並在"commit number1"提交了代碼。 現在我切換到功能分支。 feature/branch1,我看不到任何代碼。 如果我切換回"commit Number1",我也沒有看到代碼。 我離開了什麼?如何從git上丟失的提交中恢復代碼?

$ git checkout 49da8b4d431 

Note: checking out '49da8b4d431'. 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

If you want to create a new branch to retain commits you create, you may 
do so (now or later) by using -b with the checkout command again. Example: 

    git checkout -b new_branch_name 

我該如何恢復代碼?我的代碼去了哪裏?

+0

git從原點拉你想要的分支 –

+0

下面是你需要做什麼的完整描述。 http://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head/34519716#34519716 – CodeWizard

回答

1

git reflog會顯示您的HEAD的歷史記錄。查看它以找到在"commit number1"之上所做的提交的SHA。當你知道SHA時,你可以在需要的時候挑選它。

+0

謝謝@保羅。 reflog很好。 – zachandcode

3

類型git reflog它將向您顯示所有最近提交的列表。查找消息爲"commit number1"的提交,然後記錄此提交的SHA-1哈希(它看起來像7字符的隨機字母數字字符串,例如s73nd9a)。

要將此提交納入您的功能分支,一個選項將使用git cherry-pick。請嘗試以下操作:

git checkout feature/branch1 
git cherry-pick s73nd9a 

這將應用您在分離頭狀態下進行的單個提交。請記住,櫻桃挑選本質上是一個提交的合併,因此您可能會發生衝突。

+0

謝謝@Tim。這非常有幫助。 – zachandcode