2016-01-20 87 views
1

in git我使用gitk來查看幾周前提交的提交的哈希值,並使用該哈希的git checkout將我的源文件恢復到之前的狀態。如何獲得比git中當前更新的提交更新的哈希?

現在我想去幾天後的提交,但是gitk只顯示提交直到當前的提交,而不是後來的提交。

使用git log也只顯示到目前爲止。

如何列出以後的提交?

+0

只要結賬到頭然後回去。 – jonrsharpe

回答

2

您想要在任何分支的血統中結賬嗎?換句話說,您當前的分支中是否包含您正在搜索的提交中所做的更改?

如果是這樣,git log --all將在日誌中顯示此提交。添加--oneline和/或--decorate標誌可能使這種輸出更容易通過搜索,如果所有你要找的是提交信息:

$ git log --all --oneline --decorate 

如果在您的任何分支的祖先犯下的 (因此不顯示log --all),那麼您必須搜索git reflog。 reflog實質上是您的HEAD指出的所有提交的歷史記錄。 HEAD指向當您在工作目錄中檢出當前這些文件時進行的提交。

的引用日誌的格式是

hash [email protected]{n}: command: message 

哪裏command是發出指向HEAD此特定位置的命令,和message是與該命令相關聯的消息。對於commit s,message是您輸入的提交消息。

由於這個結構非常好的格式,我們可以使用grep使輸出更易於閱讀。例如,如果你知道你最近簽出的提交問題,您可以運行:

$ git reflog | grep checkout 

或僅看通過提交你可以運行:

$ git reflog | grep commit 

您還可以使用grep在很多其他方面取決於你正在尋找什麼:

$ git reflog | grep "phrase in commit message" --ignore-case 
$ git reflog | grep "individual\|words\|in\|message" --ignore-case 
0

您可以使用git reflog來查看您的HEAD指針所訪問的所有提交的哈希,即您在工作目錄中指向的所有提交。

如果您無法使用git log獲得提交,這意味着您正在查找的提交不是您當前提交的提交的祖先。如果您無法在reflog中找到提交,可以找到一個基於它(直接或間接)的提交。如果找到它,請檢查它,並且現在應該列出您提交的提交內容git log

0

可以使用

git log --all --oneline --graph --decorate 

可視化你的Git樹。你現在處於分離狀態;回到你以前的地方;您需要使用:

git checkout <branch-name> 

其中<branch-name>是您正在研究的分支。