去特定的修改

我克隆了某个项目的git仓库。 我可以将文件转换到初始状态,当我查看文件转到修订版2,3,4 …最近? 我想概述一下这个项目是如何发展的。

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

您可以使用gitk工具获取项目历史的graphics视图。 赶紧跑:

 gitk --all 

如果你想结账一个特定的分支:

 git checkout <branch name> 

对于特定的提交,请使用SHA1哈希而不是分支名称。 (参见Git社区书中的 Treeishes ,这是一个很好的阅读,以查看其他选项来导航你的树。)

git log有一整套选项可以显示详细或摘要历史logging。

我不知道在提交历史中向前迈进的简单方法。 具有线性历史的项目可能不是那么常见。 像SVN或CVS那样的“修订版”的想法在Git中并没有很好的映射。

转到特定的版本/提交运行以下命令。 你可以从git log --oneline -n 10获得HASH-CODE

 git reset --hard HASH-CODE 

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

使用提交的SHA1键,您可以执行以下操作:

  • 首先,find你想要的特定文件的提交:

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

    这个基于你的<# commits> ,将会生成一个特定文件的提交列表。

    提示:如果您不确定要查找的是什么提交,那么使用以下命令可以find一个好的方法: git diff <commit-SHA1>..HEAD <file-name> 。 该命令将显示当前版本的提交与特定文件提交的先前版本之间的差异。

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

提交<SHA1 id>

  • 其次,结帐所需的版本:

    如果你已经find想要的提交/版本,只需使用命令: git checkout <desired-SHA1> <file-name>

    这将放置在临时区域中指定的文件的版本。 要将其从暂存区域中取出,只需使用以下命令: reset HEAD <file-name>

要恢复到远程存储库指向的位置,只需使用以下命令: git checkout HEAD <file-name>

我创build了一个命令行python工具来查看一个项目是如何演变的。 你可以看看是否有帮助。 该工具托pipe在以下URL的git上

https://github.com/yoganand/git-evolver

一种方法是创build所有对补丁的提交。 签出初始提交,然后在阅读后按顺序应用这些补丁。

使用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 + author关联。

我想提一下命令行工具tig,看似无处不在。 这是一个带有标签显示的文本graphics树视图等项目修订历史logging。 它可以通过SSH等使用超级方便。

可用的最好的工具是smartgit。 你可以拉和推。 它是免费的非商业用途。 让生活变得轻松