我克隆了一个特定项目的git仓库。我可以将文件转换为初始状态,然后在查看文件时转到修订版2、3、4 ......最新版本吗?我想了解一下项目是如何发展的。
c6ubokkw1#
在执行此命令之前,请记住它将使您处于分离的磁头状态
使用git checkout <sha1>检出特定的提交。其中,<sha1>是可以通过git log获得的提交唯一编号以下是您处于分离头状态后的一些选项:
git checkout <sha1>
<sha1>
git log
git checkout <existingBranch>
git checkout -b <new_branch_name> <sha1>
注:要“撤消”(返回)分离的头部状态,只需用途:git checkout <branch>(其中<branch>例如是master)。
git checkout <branch>
<branch>
master
tvmytwxo2#
要转到特定的版本/提交,请运行以下命令。
git reset --hard HASH-CODE
注意-重置到特定版本/提交后,如果您想恢复所有被丢弃的提交,可以运行git pull --rebase。
git pull --rebase
m528fe3b3#
您可以使用gitk等工具获得项目历史的图形视图。只需运行:
gitk
gitk --all
如果要 checkout 特定分支:
git checkout <branch name>
对于一个特定的提交,使用SHA1散列而不是分支名称(参见 Git Community Book 中的Treeishes,这是一本很好的读物,可以查看导航树的其他选项)。git log也有一整套选项来显示详细或摘要历史记录。我不知道有什么简单的方法可以在提交历史中向前移动。具有线性历史的项目可能并不那么常见。像SVN或CVS那样的“修订”概念在Git中并没有很好地Map。
mv1qrgav4#
使用提交的SHA1密钥,您可以执行以下操作:
git log -n <# commits> <file-name>这将基于您的<# commits>生成特定文件的提交列表。提示:如果你不确定你正在寻找的提交,一个好的方法是使用下面的命令:git diff <commit-SHA1>..HEAD <file-name>。此命令将显示特定文件的提交的当前版本和以前版本之间的差异。注意:提交的SHA1密钥在git log -n的列表中被格式化为:提交<SHA1 id>
git log -n <# commits> <file-name>
<# commits>
git diff <commit-SHA1>..HEAD <file-name>
git log -n
<SHA1 id>
如果你已经找到了你想要的提交/版本,只需使用命令:git checkout <desired-SHA1> <file-name>这将把您指定的文件版本放在暂存区中。要将其从暂存区中取出,只需使用以下命令:reset HEAD <file-name>要恢复到远程存储库所指向的位置,只需使用以下命令:git checkout HEAD <file-name>
git checkout <desired-SHA1> <file-name>
reset HEAD <file-name>
git checkout HEAD <file-name>
uurv41yg5#
要获取特定的提交代码,您需要该提交的哈希码。您可以通过两种方式获取该哈希码:1.从你的github/gitlab/bitbucket账户获取。(它在你的提交URL上,即:github.com/user/my_project/commit/commit_hash_code),或者您可以
git checkout commit_hash_code
git checkout -b <new-branch-name>
b5lpy0ml6#
我遇到过这样的情况,我们有一个主分支,然后另一个分支称为17.0,在这个17.0中有一个提交散列,没有说**“XYZ”**。客户被赋予一个构建版本,直到XYZ版本。现在我们遇到了一个bug,需要为该客户解决。所以我们需要为该客户创建单独的分支,直到“xyz”散列。我是这么做的。首先,我在我的本地机器上创建了一个具有该客户名称的文件夹。假设客户名称为“AAA”,一旦创建了该文件夹,请在该文件夹中执行以下命令:1.git init1.git clone执行此命令后,您将处于master分支。因此切换到所需分支1.git checkout 17.0这将把你带到提交所在的分支1.git checkout这将把你的仓库直到那个hash提交。看看你的分支的名字,它被修改成那个提交hash号。现在给予这个hash一个分支的名字1.git分支ABC这将在本地机器上创建一个新的分支。1.git checkout ABC1.git push origin ABC这将把这个分支推送到远程仓库,并在git服务器上创建一个分支。
xcitsw887#
一种方法是创建对补丁的所有提交。 checkout 初始提交,然后在阅读后按顺序应用补丁。使用git format-patch <initial revision>,然后git checkout <initial revision>。你应该得到一堆文件在你的导演开始与四位数,这是补丁。当你完成阅读你的修订只做git apply <filename>,这应该看起来像git apply 0001-*和计数。但是我真的很想知道为什么你不想只是阅读补丁本身呢?请在你的评论中发表这篇文章,因为我很好奇。Git手册也给了我这个:
git format-patch <initial revision>
git checkout <initial revision>
git apply <filename>
git apply 0001-*
git show next~10:Documentation/README
显示文件Documentation/README的内容,因为它们在下一个分支的最后第10次提交中是当前的。你也可以看一下git blame filename,它给了你一个列表,其中每行都与一个提交哈希+作者相关联。
git blame filename
7条答案
按热度按时间c6ubokkw1#
在执行此命令之前,请记住它将使您处于分离的磁头状态
使用
git checkout <sha1>
检出特定的提交。其中,
<sha1>
是可以通过git log
获得的提交唯一编号以下是您处于分离头状态后的一些选项:
git checkout <existingBranch>
并替换文件git checkout -b <new_branch_name> <sha1>
注:要“撤消”(返回)分离的头部状态,只需用途:
git checkout <branch>
(其中<branch>
例如是master
)。tvmytwxo2#
要转到特定的版本/提交,请运行以下命令。
注意-重置到特定版本/提交后,如果您想恢复所有被丢弃的提交,可以运行
git pull --rebase
。m528fe3b3#
您可以使用
gitk
等工具获得项目历史的图形视图。只需运行:如果要 checkout 特定分支:
对于一个特定的提交,使用SHA1散列而不是分支名称(参见 Git Community Book 中的Treeishes,这是一本很好的读物,可以查看导航树的其他选项)。
git log
也有一整套选项来显示详细或摘要历史记录。我不知道有什么简单的方法可以在提交历史中向前移动。具有线性历史的项目可能并不那么常见。像SVN或CVS那样的“修订”概念在Git中并没有很好地Map。
mv1qrgav4#
使用提交的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>
uurv41yg5#
要获取特定的提交代码,您需要该提交的哈希码。您可以通过两种方式获取该哈希码:
1.从你的github/gitlab/bitbucket账户获取。(它在你的提交URL上,即:github.com/user/my_project/commit/commit_hash_code),或者您可以
git log
并检查您最近在该分支上的提交。它会显示您提交的哈希代码以及您在提交代码时留下的消息。只需复制然后执行git checkout commit_hash_code
即可在移动到该代码之后,如果您想处理它并进行更改,则应该使用
git checkout -b <new-branch-name>
创建另一个分支,否则,更改将不会被保留。b5lpy0ml6#
我遇到过这样的情况,我们有一个主分支,然后另一个分支称为17.0,在这个17.0中有一个提交散列,没有说**“XYZ”**。客户被赋予一个构建版本,直到XYZ版本。现在我们遇到了一个bug,需要为该客户解决。所以我们需要为该客户创建单独的分支,直到“xyz”散列。我是这么做的。
首先,我在我的本地机器上创建了一个具有该客户名称的文件夹。假设客户名称为“AAA”,一旦创建了该文件夹,请在该文件夹中执行以下命令:
1.git init
1.git clone执行此命令后,您将处于master分支。因此切换到所需分支
1.git checkout 17.0这将把你带到提交所在的分支
1.git checkout这将把你的仓库直到那个hash提交。看看你的分支的名字,它被修改成那个提交hash号。现在给予这个hash一个分支的名字
1.git分支ABC这将在本地机器上创建一个新的分支。
1.git checkout ABC
1.git push origin ABC这将把这个分支推送到远程仓库,并在git服务器上创建一个分支。
xcitsw887#
一种方法是创建对补丁的所有提交。 checkout 初始提交,然后在阅读后按顺序应用补丁。
使用
git format-patch <initial revision>
,然后git checkout <initial revision>
。你应该得到一堆文件在你的导演开始与四位数,这是补丁。当你完成阅读你的修订只做
git apply <filename>
,这应该看起来像git apply 0001-*
和计数。但是我真的很想知道为什么你不想只是阅读补丁本身呢?请在你的评论中发表这篇文章,因为我很好奇。
Git手册也给了我这个:
显示文件Documentation/README的内容,因为它们在下一个分支的最后第10次提交中是当前的。
你也可以看一下
git blame filename
,它给了你一个列表,其中每行都与一个提交哈希+作者相关联。