我克隆了某个项目的git存储库。我可以将文件转换为初始状态吗?当我查看文件时,请转到修订版2,3,4 ...最近?我想概述项目是如何发展的。
答案 0 :(得分:670)
使用git checkout <sha1>
签出特定提交。
答案 1 :(得分:34)
要按照命令转到特定版本/提交运行。您可以从git log --oneline -n 10
git reset --hard HASH-CODE
注意 - 重置为特定版本/提交后,如果要恢复所有丢弃的提交,可以运行git pull --rebase
。
答案 2 :(得分:16)
您可以使用gitk
等工具获取项目历史记录的图形视图。跑吧:
gitk --all
如果您想结帐特定分行:
git checkout <branch name>
对于特定提交,请使用SHA1哈希而不是分支名称。 (请参阅 Git社区手册中的Treeishes,这是一个很好的阅读,以查看导航树的其他选项。)
git log
还有一整套选项来显示详细或摘要历史记录。
我不知道在提交历史记录中移动前进的简单方法。具有线性历史的项目可能并不常见。像SVN或CVS一样的“修订版”的想法并没有在Git中很好地映射。
答案 3 :(得分:5)
使用提交的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>
答案 4 :(得分:3)
我创建了一个命令行python工具来查看项目是如何演变的。你可以看看这是否有帮助。该工具托管在以下URL的git上
答案 5 :(得分:1)
一种方法是创建对补丁进行的所有提交。签出初始提交,然后在阅读后按顺序应用补丁。
使用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
,其中列出了每行与提交哈希+作者相关联的列表。
答案 6 :(得分:1)
我想提一下看似无处不在的命令行工具tig。它是一个文本图形树视图,带有项目修订历史的标签显示等。它可以在ssh等上使用。超级方便。
答案 7 :(得分:1)
我当时处于以下情况:我们有一个master分支,然后是另一个分支17.0,在此17.0内有一个提交哈希,不说“ XYZ” 。直到该XYZ修订版都为客户提供了构建。 现在,我们遇到了一个错误,该错误需要为该客户解决。因此,我们需要为该客户创建单独的分支,直到该“ xyz”哈希为止。 所以这就是我的做法。
首先,我在本地计算机上使用该客户名称创建了一个文件夹。假设客户名称为“ AAA” 创建该文件夹后,请在该文件夹内执行以下命令:
答案 8 :(得分:1)
要获取特定的提交代码,您需要该提交的哈希码。您可以通过两种方式获取该哈希码:
git log
并检查您最近对该分支的提交。它将显示您的提交的哈希码以及在提交代码时留下的消息。只需复制,然后执行git checkout commit_hash_code
转到该代码后,如果要对其进行处理并进行更改,则应使用git checkout -b <new-branch-name>
进行另一个分支,否则,更改将不会保留。
答案 9 :(得分:0)
要检查提交(nb,您正在查看过去!)。
要从提交中残酷地重新启动,并删除您以后可能弄乱的那些分支。