2015-04-21 108 views
1

我們提交了一個修復了通過拉取請求合併的代碼庫的問題。現在無處可查。我不知道它是如何被刪除的,因爲它很久以前。好的是,我可以看到拉取請求,提交散列並在Stash上更改diff。如果所有這些信息仍然存在,我如何恢復提交?如何從Atlassian Stash中恢復丟失的git提交?

回答

3

如果你知道犯散,你可以檢查你的本地倉庫提交存在通過簡單地調用git show

git show <commit-id> 

如果提交仍然存在,您可以創建一個從使用git branch

git branch save-my-old-commit <commit-id> 

新的分支。如果提交它不在你的本地庫目前(這是可能的,當從任何裁判不可達),你可以嘗試直接從遠程存儲庫中取出,然後檢查了一個新的分支:

git fetch origin <commit-id> 
git branch save-my-old-commit FETCH_HEAD 

如果原始提交起源從一個pull請求中,你也可以嘗試從分叉倉庫中取出(我沒有Stash的經驗,所以我假設它的工作方式類似於GitHub或Gitlab)。

將提交恢復到本地分支後,您可以按照您認爲合適的方式繼續,例如在當前分支頂部選擇提交。

0

你有幾個選項(IM上市僅少數人的,也有更多的選擇):

  • 使用git bisect找出來的時候(提交),這是「走了」
  • 使用git reflog的發展機器準確地查看所做的事情以及何時(在該點之後回購沒有被克隆)
  • 重新創建/重新打開拉取請求並重新合併它。

我的建議是使用git bisect找出它何時消失。

How to use git bisect?