繁体   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