2015-09-04 126 views
0

命令git diff "??/??/15 - 12:34" "??/??/?? - 03:21"將引發錯誤。看來:是罪魁禍首。冒號提交名稱中冒號的錯誤

爲我處理git的客戶端沒有在提交名稱中拋出冒號和冒號,但git Bash for Windows不會讓我使用命令行選項訪問提交。我試過':'":"\:,這些選項都不起作用。

有人會在命令行中使用冒號,或者某人如何逃離冒號字符?

*編輯*

下面是git log --oneline

9c34cd9 git merge 
f1195c7 09/04/2015 - 15:05 
db38edb 09/03/15 - 17:28 
c20dea6 09/02/15 - 19:43 
e33cd9c 08/28/15 - 00:12 
48692a9 08/26/15 - 16:02 
8072375 08/25/15 - 19:58 
c6babf3 08/25/15 - 12:12 
ff6afbf 08/14/15 - 19:43 
a0ccc60 08/08/15 - 13:43 
9b446ae 08/04/15 - 16:11 
34a7dfe 08/02/15 - 21:09 
f6005ba 07/31/15 - 16:12 
18dc958 07/31/15 - 16:11 
3d4c7fb 07/31/15 - 13:48 
c6c9ef9 07/25/15 - 22:42 
9fd46df 07/25/15 - 15:23 
78fa4ed 07/20/15 - 12:27 
af399b7 07/16/15 - 17:00 
33fbd24 07/14/15 - 17:46 
458bb5e 07/14/15 - 12:32 
418a92d 07-13-15 - EOD 
72b1408 07/13/15 - 17:43 
a6bc32f Merge https://github.com/halcyonsystems/amelia 
ec27a81   new file: assets/css/main.css   
new file:   assets/im2ff9bc3 Initial commit 
+1

什麼是錯誤? – cfi

+0

出現的錯誤是:'$ git diff「09/25/2015 - 15:05」'09/03/15 - 17 \:28' fatal:'09/25/2015 - 15'無效的對象名稱。 ' –

+1

你想達到什麼目的?區分兩個時間戳之間的完整回購?或者這些文件的實際名稱是那些日期? – cfi

回答

1

輸出的副本從幫助頁面(git help diff):

NAME 
     git-diff - Show changes between commits, commit and working tree, etc 

SYNOPSIS 
     git diff [options] [<commit>] [--] [<path>...] 
     git diff [options] --cached [<commit>] [--] [<path>...] 
     git diff [options] <commit> <commit> [--] [<path>...] 
     git diff [options] <blob> <blob> 
     git diff [options] [--no-index] [--] <path> <path> 

所以,你可以指定兩個不同的path選項。如果這些是時間戳,你必須讓它們進入正確的語法。見git help revisions

<refname>@{<date>}, e.g. [email protected]{yesterday}, [email protected]{5 minutes ago} 
     A ref followed by the suffix @ with a date specification enclosed in a brace pair (e.g. {yesterday}, {1 month 2 weeks 3 days 1 hour 1 second ago} or {1979-02-26 
     18:30:00}) specifies the value of the ref at a prior point in time. This suffix may only be used immediately following a ref name and the ref must have an existing log 
     ($GIT_DIR/logs/<ref>). Note that this looks up the state of your local ref at a given time; e.g., what was in your local master branch last week. If you want to look at 
     commits made during certain times, see --since and --until. 

這非常適用於一個單一的文件refname

如果你想真正中DIFF兩個時間之間的完整回購所有的變化,看到基於註釋中的問題和澄清的更新this questionthis question

更新:

由於日期顯示在提交消息的第一行,您首先必須在存儲庫中搜索匹配的日期(= commit消息),以確定唯一的校驗和,以確定相應的提交,就像Wumpus在註釋中所解釋的那樣:

git log --oneline --grep='07/25/15 - 22:42' 

這應該適用於您的情況。在日期或字符串不能在提交信息使用的第一行中的一般情況:

git log --grep='07/25/15 - 22:42' 

如果你有多個分支,不知道哪個分支各自的承諾是要發現,添加--all開關。

在輸出上你會發現校驗和,例如: 3d4c7fb。這是您可以輸入到git diff的唯一標識符。請注意,完整的校驗和實際上有點長,但只要它們毫不含糊,縮寫就可以。通常前四到六位數字就足夠了,這取決於過去提交的提交數量。

由於Wumpus已經說過:這太可怕了。不要將提交日期添加到日誌消息。這是多餘的,因此沒有意義:git已經爲每個提交保留了兩個日期:作者日期和提交日期。對於變更集的第一次提交,這兩個是相同的。在將一個提交集成到另一個分支(並生成新的提交校驗和)的操作中,提交日期表示操作的時間戳,而作者日期保持舊的。正如我上面所解釋的,您可以在[email protected]{timestamp}的某個時間戳處引用一個文件。請參閱git help revisions以瞭解有關使用語法可以執行的操作的詳細信息。它很整潔,很靈活。