簡體   English   中英

如何從git存儲庫中獲取文件的特定(較舊)版本,而不清除較新版本?

[英]How do I get a particular (older) version of a file from git repository without wiping out later versions?

我應該認為獲得以前的版本是源代碼管理的主要功能之一,應該很簡單,但似乎找到了git解決方案就是尋寶。

我遇到了stackoverflow問題, 如何在Git中檢出某個文件的特定版本? 解釋關鍵的事情:

git checkout <commit hash from git log output>

正如我預期的那樣,工作目錄中的文件已用請求的較早版本替換/更新,但是我在存儲庫中丟失了較新版本,並收到諸如“ ...分離頭...”的消息。

這里的任何指導原則將不勝感激。 謝謝。

如果您有一個像abc123456這樣的特殊提交,並且該提交很好,那么您只需要...

git checkout abc123456 path/to/file

使用此命令,您將在階段找到該文件的版本。

您還可以使用分支:

git checkout old-branch-name path/to/file

當您只使用git checkout <somehash> ,您將進入一個分離的HEAD。 發生這種情況的原因是,默認情況下git checkout僅切換分支,並且指定提交而不是分支會使您進入“無分支模式”(這是HEAD分離的意思)。

如果要從其他版本獲取單個文件,則還需要指定路徑,即git checkout <somehash> -- path/to/file 這將使所有內容保持不變,只是將path/to/file替換為<somehash>版本。

因此,這確實會覆蓋文件。 如果還要保留當前版本,則應首先重命名。 否則,您也可以為此使用git show的特殊語法

git show <somehash>:path/to/file > new_filename.ext

這實際上將從<somehash>獲取文件的內容並進行打印,因此,如果將其通過管道傳輸到文件,則可以將不同版本的文件提取到不同的文件名中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM