git 转到特定修订版

omqzjyyz  于 9个月前  发布在  Git
关注(0)|答案(7)|浏览(120)

我克隆了某个项目的Git仓库。我是否可以将文件转换为初始状态,然后在查看文件时转到修订版2、3、4.

ecfsfe2w

ecfsfe2w1#

在执行此命令之前,请注意它将使您处于分离头状态

使用git checkout <sha1>检查特定的提交。
其中<sha1>是可以通过git log获得的提交唯一编号(SHA-1哈希值)。
以下是您处于分离头状态后的一些选项:

  • 将文件复制到Git文件夹外的文件夹或进行所需的更改, checkout 需要它们的分支git checkout <existingBranch>并替换文件
  • 创建新的本地分支git checkout -b <new_branch_name> <sha1>

注意:要“撤销”(从)分离的头部状态,只需用途:
git checkout <branch>(其中<branch>例如是master)。

djmepvbi

djmepvbi2#

要转到特定的版本/提交,请运行以下命令。您可以从git log --oneline -n 10获取HASH-CODE:

git reset --hard HASH-CODE

字符串

注意-重置到特定版本/提交后,如果您想恢复所有被丢弃的提交,可以运行git pull --rebase

2ledvvac

2ledvvac3#

您可以使用gitk等工具获得项目历史的图形视图。只需运行:

gitk --all

字符串
如果要 checkout 特定分支:

git checkout <branch name>


对于一个特定的提交,使用SHA-1 hash而不是分支名称(参见 Git Community Book 中的Treeishes,这是一本很好的读物,可以查看导航树的其他选项)。
git log也有一整套选项来显示详细或摘要历史记录。
我不知道有什么简单的方法可以在提交历史中向前移动。具有线性历史的项目可能并不那么常见。像SVN或CVS那样的“修订”概念在Git中并没有很好地Map。

b5lpy0ml

b5lpy0ml4#

使用提交的SHA-1键/哈希值,您可以执行以下操作:

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

第一个月
这将基于您的<# commits>生成特定文件的提交列表。

  • 提示 *:如果你不确定你要找的提交是什么,一个好的方法是使用下面的命令:git diff <commit-SHA1>..HEAD <file-name>。这个命令将显示当前版本的提交和特定文件的前一个版本的提交之间的差异。
  • 注意 *:提交的SHA-1密钥在git log -n的列表中被格式化为:

提交<SHA1 id>

  • 第二步,检查所需的版本:

如果你已经找到了你想要的提交/版本,只需使用命令:git checkout <desired-SHA1> <file-name>
这将把您指定的文件版本放在暂存区中。要将其从暂存区中取出,只需使用以下命令:reset HEAD <file-name>
要恢复到远程存储库所指向的位置,只需使用以下命令:git checkout HEAD <file-name>

hzbexzde

hzbexzde5#

要获取特定的提交代码,您需要该提交的哈希码。您可以通过两种方式获取该哈希码:
1.从您的GitHubGitLabBitbucket帐户获取。(它在您的提交URL上,即github.com/user/my_project/commit/commit_hash_codebook*),或者您可以

  1. git log并检查您最近在该分支上的提交。它将显示您提交的哈希代码以及您在提交代码时留下的消息。只需复制然后执行git checkout commit_hash_code即可
    在移动到该代码之后,如果您想处理它并进行更改,您应该使用git checkout -b <new-branch-name>创建另一个分支。否则,更改将不会被保留。
kxxlusnw

kxxlusnw6#

我遇到的情况是,我们有一个 master 分支,然后另一个分支叫做 17.0,在这个17.0里面有一个提交哈希值,比如说**“XYZ”**。客户得到了一个直到XYZ版本的构建。现在我们遇到了一个bug,需要为该客户解决。所以我们需要为该客户创建一个单独的分支,直到“xyz”版本。哈希值。这就是我是怎么做的。
首先,我在本地机器上创建了一个带有该客户名称的文件夹。假设客户名称为“AAA”,一旦创建了该文件夹,请在该文件夹中发出以下命令:
1.git init
1.git clone执行此命令后,您将位于 master 分支上。因此切换到所需的分支
1.git checkout 17.0这将把你带到提交所在的分支
1.git checkout:这将使您的存储库直到该哈希提交。查看您的分支的名称。它已更改为该提交哈希号。现在为该哈希值给予一个分支名称
1.git分支ABC:这将在本地机器上创建一个新的分支。
1.git checkout ABC
1.git push origin ABC:将这个分支推送到远程仓库,并在Git服务器上创建一个分支。

omvjsjqw

omvjsjqw7#

一种方法是创建所有对补丁的提交,检查初始提交,然后在阅读后按顺序应用补丁。
使用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,它给了你一个列表,其中每行都与一个提交哈希+作者相关联。

相关问题