簡體   English   中英

Go 特定版本

[英]Go to particular revision

我克隆了某個項目的 git 倉庫。 我可以將文件轉換為初始 state 並在我查看文件 go 時將其轉換為修訂版 2、3、4...最新嗎? 我想大致了解一下該項目的進展情況。

在執行此命令之前,請記住它會使您處於分離頭狀態

使用git checkout <sha1>來簽出特定的提交。

其中<sha1>是您可以使用git log獲取的提交唯一編號

以下是處於分離頭狀態后的一些選項:

  • 復制文件或對 git 文件夾之外的文件夾進行所需的更改,在需要時簽出分支git checkout <existingBranch>並替換文件
  • 創建一個新的本地分支git checkout -b <new_branch_name> <sha1>

到 go 到特定版本/提交運行以下命令。 HASH-CODE 你可以從git log --oneline -n 10得到

git reset --hard HASH-CODE

注意- 在重置為特定版本/提交后,如果你想恢復所有被丟棄的提交,你可以運行git pull --rebase

您可以使用gitk等工具獲得項目歷史的圖形視圖。 趕緊跑:

gitk --all

如果你想簽出一個特定的分支:

git checkout <branch name>

對於特定的提交,使用 SHA1 hash 而不是分支名稱。 (請參閱Git Community Book中的 Treeishes,這是一本很好的讀物,可以查看用於導航樹的其他選項。)

git log也有一整套選項來顯示詳細或摘要歷史記錄。

我不知道在提交歷史中前進的簡單方法。 具有線性歷史的項目可能並不常見。 像 SVN 或 CVS 那樣的“修訂”的想法在 Git 中並不是那么好。

使用提交的 SHA1 密鑰,您可以執行以下操作:

  • 首先,找到您想要的特定文件的提交:

    git log -n <# commits> <file-name>

    這基於您的<# commits> ,將生成特定文件的提交列表。

    提示:如果您不確定要查找的提交是什么,使用以下命令是一個很好的查找方式: git diff <commit-SHA1>..HEAD <file-name> 此命令將顯示當前版本的提交與特定文件的先前版本的提交之間的差異。

    注意:提交的 SHA1 密鑰在git log -n的列表中被格式化為:

提交<SHA1 id>

  • 其次,簽出所需的版本:

    如果您找到了所需的提交/版本,只需使用以下命令: git checkout <desired-SHA1> <file-name>

    這會將您指定的文件版本放置在暫存區中。 要將其移出暫存區,只需使用以下命令: reset HEAD <file-name>

要恢復到遠程存儲庫指向的位置,只需使用以下命令: git checkout HEAD <file-name>

要獲取特定的提交代碼,您需要該提交的 hash 代碼 您可以通過兩種方式獲取 hash 代碼:

  1. 從你的 github/gitlab/bitbucket 帳戶獲取它。 (它在你的提交 url 上,即: github.com/user/my_project/commit/commit_hash_code ),或者你可以
  2. git log並檢查您最近在該分支上的提交。 它將顯示您提交的 hash 代碼以及您在提交代碼時留下的消息。 只需復制然后執行git checkout commit_hash_code

移動到該代碼后,如果您想對其進行處理並進行更改,您應該使用git checkout -b <new-branch-name>創建另一個分支,否則,更改將不會保留。

我當時的情況是我們有一個主分支,然后是另一個名為 17.0 的分支,在這個 17.0 中有一個提交 hash no say "XYZ" 並為客戶提供直到該 XYZ 修訂版的構建。 現在我們遇到了一個錯誤,需要為該客戶解決。 所以我們需要為那個客戶創建單獨的分支,直到那個“xyz”hash。所以我是這樣做的。

首先,我在本地計算機上創建了一個具有該客戶名稱的文件夾。 創建該文件夾后,假設客戶名稱為“AAA”,在此文件夾內發出以下命令:

  1. git 初始化
  2. git clone執行此命令后,您將位於 master 分支上。 所以切換到所需的分支
  3. git checkout 17.0這將帶您到您的提交所在的分支
  4. git checkout這將使您的存儲庫直到 hash 提交。 查看您的分支名稱,它已更改為該提交 hash 號。 現在給這個 hash 一個分支名稱
  5. git branch ABC這將在您的本地計算機上創建一個新分支。
  6. git結帳ABC
  7. git push origin ABC這會將此分支推送到遠程存儲庫並在 git 服務器上創建一個分支。 你完成了。

一種方法是創建對補丁所做的所有提交。 檢查初始提交,然后在閱讀后按順序應用補丁。

使用git format-patch <initial revision>然后git checkout <initial revision> 你應該在你的導演中得到一堆文件,這些文件以四位數字開頭,它們是補丁。

當你讀完你的修訂后,只需執行git apply <filename> ,它應該看起來像git apply 0001-*並計數。

但我真的很想知道為什么你不想直接閱讀補丁本身? 請將此張貼在您的評論中,因為我很好奇。

git 手冊也給了我這個:

 git show next~10:Documentation/README

顯示文件 Documentation/README 的內容,因為它們在下一個分支的最后 10 次提交中是當前的。

您還可以查看git blame filename ,它為您提供了一個列表,其中每一行都與提交 hash + 作者相關聯。

我克隆了某個項目的 git 存儲庫。 我可以將文件轉為初始狀態,並在我查看文件時轉到修訂版 2、3、4...最新版本嗎? 我想大致了解該項目的發展情況。

暫無
暫無

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

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